2. Node + Express 環境配置略述+Socket.io Session的簡單配置

weixin_33895657發表於2016-10-15

Node + Express 的環境配置 = 下載WebStorm

這是博主的最佳建議,如果你在海外留學,那麼去WebStorm官網註冊個學生賬號,JetBrains旗下所有軟體免費1年起,PyCharms!IntelliJ!想想就有點小激動。
國內的同學也彆著急,萬能淘寶總是沒錯的。
如果沒用最佳建議,按著官網一步一步來一定是沒錯的。
更新:
其實現在更習慣用 visual studio code + es hint plugin + express-generator.

//全域性安裝express-generator
npm install express-generator -g
// 初始化express框架
express myapp
關於開源庫
"dependencies": {
    "aliyun-sdk": "1.6.2",//阿里雲
    "async": "2.0.0-rc.6",//Promise也可以實現它的功能,用來寫同步
    "body-parser": "~1.13.2",//解析body,自帶
    "connect-multiparty": "2.0.0",//解析獲取Multipart
    "connect-redis": "3.0.2",//連線redis
    "cookie-parser": "~1.3.5",//解析Cookies
    "debug": "~2.2.0",//debug
    "express": "~4.13.1",//express
    "express-session": "1.13.0",// sesion
    "hiredis": "1.0.0",//另一種用來連線redis的
    "morgan": "~1.6.1",//node自帶的日誌記錄器
    "redis": "2.6.1",//redis
    "request": "2.72.0",//用來發起請求,業務需要轉發請求
    "serve-favicon": "~2.3.0",//自帶favicon
    "socket.io": "1.4.5",//soket.io
    "socket.io-express-session": "0.1.3",//顧名思義
    "urllib": "2.13.0", //顧名思義
    "mysql":"2.11.1" //顧名思義
  }

開源庫的選擇可以稍微說幾句。

  1. bluebird
    a. 因為JS回撥之繁瑣,所以Promise被提出來。這幾乎是複雜回撥的必需品。我選擇了bluebird,同類產品都可。(Async其實挺好用的......)
    b. Promisify這個神奇的函式。

  2. socket.io
    誰用誰知道。(如果勇敢的話,甚至所有資料都可以通過socket.io來傳輸,開發起來會真的很快。)

稍微談一下socket.io的配置(我配置在www裡)

var app = require('../app');
var http = require('http');
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
var server=http.createServer(app);
var io=require('socket.io')(server);
io.use(function(socket, next) {
  app.final_session_setting(socket.request, socket.request.res, next);
});

app.js

var session = require('express-session');
var RedisStore = require('connect-redis')(session);
var final_session_setting=session({
  store: new RedisStore({
    client:client
  }),
  secret: 'keyboard cat',
  cookie: { maxAge: 259200000 }
});

這樣設定是為了能直接從Socket.io裡獲取(共享)session
其他配置起來沒有太多難度。
其他更多中介軟體自己來寫,博主心裡隱約有個大的夢想,就是把Spring Security 在Node上實現。

相關文章