安装express
cnpm i express
创建Web服务
var express = require('express')
var app = express()
// 浏览器收到HTML响应内容之后要开始从上到下依次解析
// 当在解析的过程中 如果发现 link script img iframe video audio
// 等带有src或者href属性标签(具有外链的资源)的时候
// 浏览器会自动对这些资源发起新的请求
// 则需要开放静态文件夹
// 开放static静态文件夹
app.use('/static/', express.static('./static/'))
app.get('/', function (req, res) {
res.send('hello express')
})
app.listen(3000, function () {
console.log('app is running at port 3000...')
})
express-art-template
cnpm install --save art-template
cnpm install --save express-art-template
var express = require('express');
var app = express();
app.engine('html', require('express-art-template'));
路由
var router = require('./router')
app.use(router)
// router.js
var express = require('express')
var router = express.Router()
router.get('/', function (req, res) {
res.render('index.html')
})
post请求
cnpm install body-parser
// app.js
var bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
重定向
// 允许网址的重定向 跳转到指定的url并且可以指定status 默认为302方式
res.redirect([status], url)
请求参数
request.query // get
request.body // post
express/json 附件
session/cookies
cnpm install express-session --save
const session = require('express-session')
app.use(session({
secret: 'secret string', // 加密字符串
resave: false,
saveUninitialized: false // 请求默认分配session
}))
md5
cnpm install blueimp-md5 --save
const md5 = require("blueimp-md5")
md5(md5(xxx))
中间件
// middleware
// 处理请求体的函数
// 中间件存在顺序
// app.use(router)在末尾
// 请求进入
// 从第一个中间件开始进行匹配
// 匹配则执行中间件
// 不匹配则继续判断匹配下一个中间件
// 匹配执行的中间件没有调用next() 则停在当前中间件
// 若调用则继续判断匹配下一个中间件
// 三个参数
// Resquest 请求对象
// Responce 响应对象
// next next()交出控制权 执行下一个匹配的中间件
// 中间件类型
// 无关请求路径、请求方法
// 任何请求都会进去的中间件
app.use(function (req, res){ ... })
// 以 /xxx 开头中间件路径
app.use('/xxx/xx', function (req, res){ ... })
// 严格匹配路径和请求方法
app.get('/xxx', function (req, res){ ... })
// body-parser
// 请求路径为 /xxx post
app.use(function (req, res, next){
req.body = { key: value }
next()
})
app.post(function (req, res){
console.log(req.body) // { key: value }
})
// 404
// 前面所有路径/请求都未匹配
app.use(function (req, res) {
res.render('404.html')
})
// 配置错误处理中间件
app.get('/xxx', function (req, res, next){
fs.readFile(function (err, data){
if(err){
// 传参直接调用末尾四参数中间件
return next(err)
}
})
})
app.use(function (err, req, res, next){
res.status(500).send(err.message)
})
session/cookies/md5 附件