目录
1,Express介绍
1.1 介绍
Express是基于 node.js的一个web服务器框架,它可以帮助你快速创建一个web+ 移动端 各类项目服务器
1.2 服务器的作用
(1)存放站点网站,响应网页给请求的用户浏览器
(2)提供数据接口,给客户端AJAX进行数据响应
2,Express安装和使用
2.1 express-generator
(1)安装express-generator(全局安装)
npm i express-generator -gnpm i express-generator -g
可切换为淘宝镜像服务器提高下载速度(cnpm与此意义相同)
npm config set registry https://registry.npm.taobao.org
可测试是否切换为淘宝镜像服务器
npm config get registry
如图即设置成功
(2) 通过命令创建express项目
(3)安装依赖包(项目默认没有node_modules无法启动)
npm i 安装所有依赖
npm start 启动服务器(如下图启动成功)
2.2 Express服务器项目结构说明
bin 核心文件,express项目启动文件 可修改端口
public 公共资源(存放站点网页,css,js,图片等静态资源),浏览器可根据地址直接访问的资源
routes 路由器,处理浏览器发出的各种请求,并响应(存放服务器接口)
//改动routes下的任何代码都要重启服务器才能生效
//http协议有8种请求方式 常用get post 不常用 head trace options connect put delete
//router.要监听的请求方式
//参数1 监听的接口 参数2 监听成功的回调函数
// router.get('/login',(req,res)=>{
// req.body 获取post参数
// req.query 获取get参数
// })
app.js 入口文件
package.json 项目描述文件
package-lock.json 依赖详细文件
3,Express路由
3.1 路由概念
路由是指如何定义应用的接口以及如何响应客户端的请求。
3.2 基础用法
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
3.3 路由方法
路由与HTTP 请求方法(GET、POST)相关联。
为应用“/”路径定义的 GET 和 POST 请求:
// 处理get请求方式
app.get('/', function (req, res) {
res.send('处理get请求');
});
// 处理post请求方式
app.post('/', function (req, res) {
res.send('处理post请求');
});
app.all() 是一个特殊的路由方法,all相当于既可以处理GET,也可以处理POST。
app.all('/, function (req, res, next) {
res.send('任意方式的请求');
});
3.4 express连接后台MySQL数据库
1. 下载mysql模块
npm i mysql -S
2. 引入
var mysql = require('mysql')
3. 封装连接函数
function createCon(){
return mysql.createConnection({
port: 3306,//数据库端口
host: 'localhost', //数据库ip
user: 'root', //数据库账号名
password: '自己的数据库密码',
database: 'xxxx' //要连接数据库名字!
})
}
4. 调用封装的连接函数, 连接数据库, 执行sql
router.xxx('/test', (req, res) => {
...
var con = createCon() //新建一个连接对象
con.connect() //连接到数据库
//2. 执行sql
con.query('SQL语句', function(err, data){
if(err) return
//sql执行成功!
//如果查询select语句,data是一个数组, 其他语句(update等)data没有用
})
//3. 断开数据库连接,释放内存
con.end()
})
4,response响应对象
4.1 send方法
send(data) 可以返回任意类型数据。
res.send({ some: 'json' });// json数据
res.send('<p>some html</p>');//普通文本
5,request请求对象
5.1 获取浏览器地址栏中的参数
语法:req.query.参数名
比如:http://localhost:3000/user?name=‘Lisa’
req.query.name;
5.2 获取表单提交的值
post提交 req.body.参数名
get提交 req.query.参数名
5.3 常见API
(1)req.body 获取post参数
(2)req.query 获取get参数
(3)req.hostname/req.ip 获取主机名和ip地址
(4)req.protocol 获取协议类型