zoukankan      html  css  js  c++  java
  • 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`与文件有关

       

  • 相关阅读:
    【五种方法】mybatis使用Map返回时,当value为空时不显示key
    【日常填坑】com.zaxxer.hikari.util.DriverDataSource : Registered driver with driverClassName=com.mysql.
    NVL2(表达式1,表达式2,表达式3)表达式1带或者,与
    oracle存储过程is和begin之间的参数说明
    Idea全局搜索没有把html文件显示出来
    JAVA
    (日常踩坑)idea启动多个tomcat时,报Invalid command '' received警告
    java中impl作用
    localhost:8080要加项目名能访问的解决方法
    【ubuntu】搭建mysql5.7
  • 原文地址:https://www.cnblogs.com/megachen/p/14836618.html
Copyright © 2011-2022 走看看