express 是第三方的框架(模块)
express
1 构成
- 中间件
- 名词解释: 中间件就是一个封装函数,具有一定的功能
- express的中间件有哪些呢?
- 应用级中间件
- 路由中间件
- 错误处理中间件
- 中间件如何调用?
- app对象来调用
- app.use(中间件)
- app对象来调用
- 路由
- 前端: 接口
- 后端: 路由
2.跨域【 后端跨域 】
- 设置请求头
- response.setHeader(‘Access-Control-Allow-Origin’,’*’)
- 利用第三方模块来跨域 cors
3.使用工程化工具来构建一个完整的 express 项目
-
工程化工具/自动化工具/脚手架
-
express-generator
-
express-generator 使用
-
1.安装使用
- $ cnpm i express-generator -g
- $ express -e 项目名称
-
OR
-
2.不安装使用
-
保证你的电脑中npm版本 > 5.2
-
$ npx express -e 项目名称
-
-
名词解释: -e 表示ejs文件,它是一个html模板
-
-
-
express-generator
1.目录
-
bin/www 为项目创建了一个服务器
-
public 静态资源文件夹
- img
- style
- js
-
app.js 项目入口文件
引入项目需要的模块
-
var createError = require('http-errors'); //用来记录错误信息 var express = require('express');// express的顶级库,提供了很多expres api var path = require('path'); // 处理磁盘路径 var cookieParser = require('cookie-parser'); // 处理cookie var logger = require('morgan'); // 记录日志信息
引入自定义路由中间件(routes文件夹下的)
var indexRouter = require('./routes/index'); var usersRouter = require('./routes/users');
ejs视图
app.set('views', path.join(__dirname, 'views'));//设置views的绝对路径 app.set('view engine', 'ejs');//设置项目模版渲染引擎为ejs
通过app对象使用中间件
app.use(logger('dev')); app.use(express.json()); // 为post请求来做格式化 app.use(express.urlencoded({ extended: false })); // 项目文件可以省略后缀名 app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); // 确定项目静态资源目录指定为public
调用自定义的路由中间件(创建接口)
/* 调用路由中间件 - 创建接口 */ app.use('/api', indexRouter); app.use('/api', usersRouter);
剩余部分为错误中间件
app.use(function(req, res, next) { next(createError(404)); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); });
-
routes 路由
创建路由中间件的一个过程
引入express
const express = require('express')
获取路由对象
const router = express.Router()
创建路由中间件
// router.route( 路由路径 ) router.route('/login') // http://localhost:3000/api/login post请求 .post(( req,res,next ) => { // res.render('../views/index.ejs') res.render('index',{ data: JSON.stringify({ status: 200, msg: '请求成功' }) }) })
-
views
- 路由对应的模板,这个模板将来会发送给前端,发给前端前会被解析为html文件(渲染后的接口)
-
packge.json
- 表示项目启动脚本记录 、 项目所需要的依赖包【 插件 】
2.Node.js可以当做一个后端的角色
- 能不能给前端做接口
- 去熟悉项目运行思维
- package.json -> node ./bin/www -> app.js -> routes/index.js & users.js
3.后端测试接口
-
postman
-
insomnia