• nodejs:express 4.x


      最近学习express,最新的版本到了4.x,与之前的3.0版本相比,变化还是很大的。网上的教程很多都是基于3.0的,再编译一个例子的时候,吃了不少苦头。现总结一下express4.x的变化。

    1. 安装:

      安装就不用多说了,如果不想用最新的版本,安装之前的版本,$ npm install -g express@3

    4.0与3.0具体的差别,看一下 Migrating from 3.x to 4.x 的文档会明白。

      如果是 npm install -g express命令安装,但是,安装成功之后居然提示express不是内部或外部命令。原来最新express4.0版本中将命令工具分家出来了(项目地址:https://github.com/expressjs/generator),所以我们还需要安装一个命令工具,命令如下:

    npm install -g express-generator

    使用express创建一个工程:
    express helloworld
    新版本中命令发生了一些改变, 创建好project之后还需要用npm进行添加依赖和启动:
    cd helloworld
    npm install
    npm start
    然后新创建的helloworld就已经运行在3000端口上。

    注意,最新的启动方式改为 npm start,而不是node app.js

    2. session

    在express 4.0之前的版本,像session之类的中间件是伴随express自动安装的,网上有的教程使用的express版本正是4.0之前的版本,所以在使用4.0及其之后版本的时候一定要注意这点。

    先在package.json 里添加

    "dependencies": {
    "express": "~4.9.0",
    "body-parser": "~1.8.1",
    "cookie-parser": "~1.3.3",
    "morgan": "~1.3.0",
    "serve-favicon": "~2.1.3",
    "debug": "~2.0.0",
    "ejs": "~0.8.5",
    "mongodb": "*",
    "connect-mongo": "*",
    "connect-flash": "*",
    "express-session": "*",
    "cookie-session": "*",
    "cookies": "*"
    }

    然后用npm istall 下载安装mongodb、connect-mongo、connect-flash、express-session。

    查看node_modulesconnect-mongoReadme.md可以看到4.0之后的用法已经不一样了。

    With express4:  
          
        var session    = require('express-session');  
        var MongoStore = require('connect-mongo')(session);  
      
        app.use(session({  
            secret: settings.cookie_secret,  
            store: new MongoStore({  
              db : settings.db,  
            })  
          }));  
      
    With express<4:  
      
        var express = require('express');  
        var MongoStore = require('connect-mongo')(express);  
      
        app.use(express.session({  
            secret: settings.cookie_secret,  
            store: new MongoStore({  
              db: settings.db  
            })  
          }));  
      
    With connect:  
      
        var connect = require('connect');  
        var MongoStore = require('connect-mongo')(connect);  

    在项目中添加session引用,原来的版本是不需要的。

    var session = require('express-session');

    var MongoStore = require('connect-mongo')(session);

    使用的时候不在使用express.session,而是直接使用session():

    app.use(session({
      secret: settings.cookieSecret,
      key: settings.db,//cookie name
      cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
      store: new MongoStore({
        db: settings.db
      })
    }));
  • 相关阅读:
    [一、基础控件]18给图像视图添加遮罩以突出主题
    [一、基础控件]12Button按钮控件的使用
    延期通知 RocketMQ Summit 议题 全揭秘
    阿里云 VPC 内网性能测试最佳实践
    4/8 Serverless 技术实践营成都站持续报名中
    阿里云云原生应用平台总经理丁宇:“连接、合作、赋能”,携手加速器伙伴助力企业云上创新
    EventBridge 事件总线及 EDA 架构解析
    从建好到用好,阿里云原生微服务生态的演进
    如视技术副总裁杨永林:当传统产业遇到“数字空间”
    阿里云架构师梁旭:MES on 云盒,助力客户快速构建数字工厂
  • 原文地址:https://www.cnblogs.com/cjingzm/p/4017884.html
Copyright © 2020-2023  润新知