Express

创建app

  1. `let app = express()`
  2. `app.get('/path', (req, res) => {res.send('hello')})`
    1. 其中`req.app`也可以拿到app对象
  3. `app.post`
  4. `app.listen(8080)`

   

中间件

  1. `app.use((req, res, next) => {… next()})`使用中间件,如果next中有参数,则会处罚错误处理中间件
    1. 应用:判断用户是否已经登录,是否有权访问当前页面;网站临时下线通知
  2. 处理错误的中间件
    1. `app.use((err, req, res, next) => {})`

   

请求对象

  1. `req.query`: url中的参数
  2. `req.body`: post请求中的参数
    1. 默认express不会处理post请求中的body数据,需要通过expressbody-parser中间件,可以判断req中是否有数据,如果有则将数据解析成对象,放在reqbody属性中,再调用next函数,执行下一个中间件
    2. `app.use(bodyParser.urlencoded({extended: false}))`使用
      1. 其中extended表示是否使用第三方qs模块处理req中的请求参数,为false,表示使用系统的querystring模块处理

响应对象

  1. `res.status(404)`
  2. `res.send(obj)`

   

路由使用

  1. `route = express.Route()`
    1. 创建一个路由对象
  2. `route.get('/path', (req, res) => {})`
    1. 处理请求
    2. 路由参数
      1. `route.get('/path/:id', (req, res) => {})`
        1. 通过`req.params`获得
  3. `app.use('/route', route)`
    1. 应用此路由中间件
    2. 之后访问`http://lcoalhost:8080/route/path`即可

   

使用模板

  1. 需要`express-art-template`模板引擎,是expressart-template上的一次封装
  2. `app.engine(subfix, templateEngine)`当遇到sufix后缀模板时,使用什么引擎
  3. `app.set('views', path/to/views)` 设置模板的位置
  4. `res.render('viewname', {})`返回模板对象给客户端
    1. 每次传入{}数据太麻烦,尤其是每个模板都需要的数据,通过`app.locals.data = {}`设置模板公共数据

   

静态资源处理

  1. 使用`express.static('/path/to/static')`中间件
    1. `app.use(express.static('staticpath'))`
      1. 方位时,没有'staticpath'路径,而是'staticpath'下路径开始

   

`mongoose-sex-page`分页模块

  1. `let pagenation = require('mongoose-sex-page')`

   

   

Cookie

  1. 根据域名区分Cookie
  2. 使用`express-session`模块,再`app.use(session({secret: 'key', saveUninitialized: false, cookie: {maxAge: 单位为毫秒} }))`
  3. 客户端发送的sessionid`req.session.sessionid`,配合`res.redirect`实现登录重定向
  4. 用户登出,删除cookie和session
    1. `req.session.destroy(function(){res.clearCookie(name)})`

   

   

formidable模块,用于解析客户端的表单数据,最终要的是可以实现二进制文件的传输

  1. `const formidable = require('formidable')`
  2. `let form = formidable.IncomingForm()`
  3. `form.uploadDir = path`
  4. `form.parse(req, function(err, fields, files) {})`
    1. `fields`是键值对
    2. `files`与文件有关

   

原文地址:https://www.cnblogs.com/megachen/p/14836618.html