請關注專題:我的NodeJS學習之路(實踐之路)
小弟初涉node領域,不足之處,還請多多指教!
歡迎Star、Fork:https://github.com/gefangshuai/ANodeBlog
整個工程結構已經有了,下面來說一下幾個簡單但重要的配置:
定義一個簡單的配置文件,存放項目配置信息
一個完整的項目中,會有各種配置信息,如何組織這些信息,會給我們后期的維護成本帶來不同的影響。
為了更好的維護項目,我習慣定義一個配置文件來專門組織這些信息,我們可以命名為config.js
,放到項目根目錄下,直觀表現。
加入一個全局filter
,用于向所有請求傳遞相同的參數
類似“站點信息”這種常量參數,在每個頁面中可能我們都要用它來展示在頁面上,我們不可能在所有的請求每次都render
一次這些信息。需要有一個統一的管理,我稱之為filter
。將這個filter
定義在所有的請求之上。node執行順序是從上往下,所以每個請求在頁面上都會拿到這些參數。
/**
* 全局參數傳遞
*/
app.use(function (req, res, next) {
res.locals.site = config.site;
res.locals.success = req.flash(config.constant.flash.success);
res.locals.error = req.flash(config.constant.flash.error);
res.locals.session = req.session;
next();
});
與handlebars模版集成.
新建好的工程默認使用的是hbs,相似的還有express-handlebars、express-hbs,三者除了用法,功能上沒有太大的區別,都是針對Handlebars后臺模版引擎的一個封裝,選擇哪個,看個人習慣。本例中使用express-handlebars
。
卸載hbs
npm uninstall hbs
安裝express-handlebars
npm install --save express-handlebars
修改模版集成
在app.js中添加express-handlebars*
var exphbs = require('express-handlebars');
修改視圖引擎配置
在
app.set('view engine', 'hbs');
上面添加下面代碼:
var hbs = exphbs.create({
partialsDir: 'views/partials',
layoutsDir: "views/layouts/",
defaultLayout: 'main',
extname: '.hbs'
});
app.engine('hbs', hbs.engine);
整個代碼看起來是這樣的:
var hbs = exphbs.create({
partialsDir: 'views/partials',
layoutsDir: "views/layouts/",
defaultLayout: 'main',
extname: '.hbs'
});
app.engine('hbs', hbs.engine);
app.set('view engine', 'hbs');
說明:
- partialsDir: 指定partial頁面的目錄。
- layouts:指定布局頁面的目錄
- defaultLayout:指定默認布局文件(沒帶后綴)
- extname: 指定handlebars文件后綴(不得不吐槽“handlebars”字母太長,所以改的簡單點)
與Session集成
web應用中,session是不可獲取的重要部分,從express4開始,session作為一個獨立的中間件而不再直接集成于express框架中,我們需要單獨安裝使用。
npm install --save express-session
然后在app.js中require
var session = require('express-session');
定義它:
app.use(session({
secret: config.db.cookieSecret,
cookie: {maxAge: 30 * 60 * 1000}
}));
未完待續
請關注專題:我的NodeJS學習之路(實踐之路)