nodejs:express 4.x

  最近學習express,最新的版本到了4.x,與以前的3.0版本相比,變化仍是很大的。網上的教程不少都是基於3.0的,再編譯一個例子的時候,吃了很多苦頭。現總結一下express4.x的變化。node

  1. 安裝:

  安裝就不用多說了,若是不想用最新的版本,安裝以前的版本,$ npm install -g express@3git

4.0與3.0具體的差異,看一下 Migrating from 3.x to 4.x 的文檔會明白。github

  若是是 npm install -g express命令安裝,可是,安裝成功以後竟然提示express不是內部或外部命令。原來最新express4.0版本中將命令工具分家出來了(項目地址:https://github.com/expressjs/generator),因此咱們還須要安裝一個命令工具,命令以下:mongodb

npm install -g express-generatorexpress

使用express建立一個工程:
express helloworld
新版本中命令發生了一些改變, 建立好project以後還須要用npm進行添加依賴和啓動:
cd helloworld
npm install
npm start
而後新建立的helloworld就已經運行在3000端口上。npm

注意,最新的啓動方式改成 npm start,而不是node app.jsjson

2. sessioncookie

在express 4.0以前的版本,像session之類的中間件是伴隨express自動安裝的,網上有的教程使用的express版本正是4.0以前的版本,因此在使用4.0及其以後版本的時候必定要注意這點。session

先在package.json 裏添加app

"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
  })
}));
相關文章
相關標籤/搜索