4.Node.js的框架 express
1.express通过生成器【脚手架】
2. 脚手架的安装
- 全局安装 [ 可以使用npm、cnpm ]
$ cnpm i express-generator -g
- npx安装
- npx是npm的一个管理工具,它可以让我们不全局安装就使用某一个包
- npx好处就是可以帮助我们减少使用内存
- 但是npx要求npm的版本在5.2以上
- npx是npm会自动携带
- 脚手架的使用
- 全局安装的使用
- express -e 项目名称
- npx的使用
- npx express -e 项目名称
- 认识项目目录结构
-
- 先找package.json [ 记录了项目的依赖包信息,npm脚本 ]
{
“name”: “01-web-server-ssr”,
“version”: “0.0.0”,
“private”: true,
“scripts”: {
“start”: “nodemon ./bin/www”
},
“dependencies”: {
“cookie-parser”: “~1.4.4”,
“debug”: “~2.6.9”,
“ejs”: “~2.6.1”,
“express”: “~4.16.1”,
“http-errors”: “~1.6.3”,
“morgan”: “~1.9.1”
}
}
- 先找package.json [ 记录了项目的依赖包信息,npm脚本 ]
-
-
- 找到了项目启动文件 bin/www
- 它是通过http来做了一个服务器,默认端口是:3000
- 这个文件中引入了一个app文件,这个文件是将createServer中的回调函数放到了外面,以模块化的形式使用的,这个文件我们叫它: ‘入口文件’
Express中的路由
可以自动编译
supervisor ./bin/www
修改routes/users.js
var express = require(‘express’);
var router = express.Router();
/* GET users listing. */
router.get(’/’, function(req, res, next) {
res.send(‘respond with a resource’);
//不能够进行第二次send,会崩溃
});
router.get("/list", function(req, res, next){
res.send(‘user list’);
});
//还可以写正则表达式
router.get("/ab*cd", function(req, res, next){
res.send(“regexp”);
})
//加载form表单页面
router.get("/form", function(req, res){
res.sendFile(__dirname + “/form.html”);
})
router.post("/save", function(req, res){
res.send(“表单提交”);
})
//同时接收get和post请求
router.all("/all", function(req, res){
res.send(“all”);
})
module.exports = router;
同目录下新增form.html
-
- express是由路由和中间件构成的
- 路由: 可以完成页面的连接或是接口的打造
- 中间件: 中间件是一个函数,一个具有特定功能的函数
-
中间件有三个类型
-
- 应用级中间件
app.use(logger(‘dev’)); // 日志文件记录
app.use(express.json()); // json数据格式化
app.use(express.urlencoded({ extended: false })); // 引入文件后缀名省略
app.use(cookieParser()); // cookie处理
app.use(express.static(path.join(__dirname, ‘public’))); // 指定项目静态资源文件夹为public
- 应用级中间件
-
- 路由中间件
// http://localhost:3000/users
app.use(’/’, indexRouter);
app.use(’/users’, usersRouter);
app.use(’/’,homeRouter)
- 路由中间件
-
- 错误处理中间件
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
- 错误处理中间件
-
-
中间件的参数
- req : 全称: request 表示请求
- res : 全称: response 表示响应
- next: 表示request和response之间的连接 , 相当于桥梁的作用
- next如果断开,那么请求和响应就会中断 next( false )
-
中间件要想调用,必须通过app的use方法来调用
-
- express是由路由和中间件构成的
-
- 路由中间件
- 路由中间件人家是以模块化的形式使用
- 路由中间件
-
- ejs语法学习
- 注意: ejs语法符号是不能换行的
- 非转义输出 <%- %> 可以解析xml类型数据
- 转义输出 <%= %> 可以解析普通类型数据
- 流程控制 <% %>
- if条件语句
- 循环语句
- ejs语法学习
-
EJS的常用标签
-a. <% %> 流程控制标签
-b. <%= %> 输出标签(原文输出HTML标签)
-c. <%- %>输出标签(HTML会被浏览器解析)
-d.<%# %>注释标签
-e.% 对标记进行转义