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_modules\connect-mongo\Readme.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
  })
}));

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值