1. express
-
安装
npm i express -S
-
1:引入express第三方对象
-
2:构建一个服务器对象
-
3:开启服务器监听端口
-
4:处理响应
-
在express中,保留了原生http的相关属性和函数
-
// 构建一个服务器对象 const express = require('express'); let server = express(); // 开启服务器监听端口 server.listen(8888,()=>{ console.log('run....'); }); //处理响应 server.use('/lb',(req,res,next)=>{ console.log('萝卜'); next(); }) server.use('/baici',(req,res,next)=>{ console.log('白菜'); next(); })
2.中间件类别
-
应用级中间件
app.use(事fn)
-
路由级中间件
-
1:获取路径级中间件
-
2:配置路由
-
3:加入到应用程序控制中
app.use(router);
-
-
内置中间件
-
处理一些静态资源文件的返回(设置将某个目录下的资源文件向外暴露)
-
当url匹配上我设置的目录下的子文件后,自动返回该文件
-
加入到应用程序控制中
app.use(内置中间件);
-
-
-
第三方中间件
-
更方便的处理cookie/session,简易的解析post请求体数据
-
在npm上下载并使用
-
加入到应用程序控制中
app.use(第三方中间件);
-
-
错误处理中间件
-
在express中统一处理错误
next(err)
-
3. 路由中间件
使用步骤
-
1:获取路由中间件对象
let router = express.Router();
-
2:配置路由规则
router.请求方式(URL,fn事)
-
fn中参数有req,res,next
-
-
3:将router加入到应用
app.use(router)
-
let express = require("express"); let server = express(); //获取中间路由对象 let router = express.Router(); router.get('/login',(req,resp)=>{ resp.json({"jay":"杰伦","rouse":"金妮"}) }).get('/register',(req,resp)=>{ resp.end("register page"); }); server.use(router); server.listen(8080,()=>{ console.log('run...'); })
4. res的扩展函数
res.download('./xxx.txt') // 下载文件
res.json({}) // 响应json对象
res.jsonp(数据) // 配合jsonp
res.redirect() // 重定向
res.send() // 发送字符串数据
res.sendFile() // 显示一个文件
res.sendStatus() // 响应状态码
5. art-template模板引擎在nodejs中的处理
1. 下载express-art-template art-template
2.设置模板的路径 app.set('views',path.join(__dirname,'views'));
3. 设置默认渲染模板引擎 app.set('view engine','art');
4.注册一个模板引擎 使express兼容art-template模板引擎 app.engine('art', require('express-art-template'));
5. res.render(文件名,数据对象);
6. 默认在当前app.js同级的views目录查找
const template = require('art-template');
const express = require('express');
const path = require('path')
let app = express();
app.engine('.art', require('express-art-template'));
app.set('views',path.join(__dirname,'views'));
app.set('view engine','.art')
router.get("/",(req,res)=>{
res.render('index.art',{heros:[{name:"小钟"},{name:"小刘"}]})
})
app.use(router);
app.listen(8080,()=>{
console.log('run..');
})
6. 内置中间件(处理静态资源)
-
1: 创建对象
let static = express.static('./public');
-
2: 配置到中间件中
app.use(static);
//启动静态服务资源 app.use('/public',express.static('js'));
7.第三方中间件(post请求体的获取)
const path = require('path');
const express = require('express');
const formidable = require('formidable');
const router = express.Router();
const app = express();
router.post('/add',(req,res,next)=>{
let form = new formidable.IncomingForm();
//修改上传目录
form.uploadDir = path.join(__dirname,'public','imgs');
//保持原有后缀名
form.keepExtensions = true;
form.parse(req, function(err, fields, files) {
let nickname = fields.nickName;
let filename = path.parse(files.icon.path).base;
let img = 'imgs/'+filename;
heros.list.push({'name':nickname,'img':img})
res.redirect('/')
});
}).
8. nodemon
-
修改代码自动重启
-
安装全局命令行工具
npm i -g nodemon
-
进入到指定目录命令行
nodemon ./xxx.js
-
手动触发重启,在命令行输入 rs回车