Node.js Web開發(二)認識Express(上)


實現試圖母版

上篇的Post中,最后雖然采用Ejs的試圖引擎成功了,但是發現沒有按照我們預想的實現使用母版功能,首選我們先把上次遺留的問題給實現了。

這里我使用Express的partials來實現,在3.0之前的版本中,partials包含在Express中,現在單獨出來了,需要我們安裝后來使用:

npm install express-partials

安裝完成后,在Express配置中指定使用partials:

app.configure(function () {
    app.set('port', process.env.PORT || 3000);
    app.set('views', __dirname + '/views');
    app.set('view engine', 'ejs');
    app.use(express.favicon());
    app.use(partials());
    app.use(express.logger('dev'));
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(path.join(__dirname, 'public')));
});

啟動后我們看到生成的前台源碼:

image

下面我們會詳細講解Express use的作用。

Express的配置

在之前的例子中我們一直看到了configure方法,configure方法用於指定express的環境的配置。在Express中支持多工作環境,有我們比較常見的環境如“開發環境”(development)、“生產環境”(producation)。在我們定義全局的環境時,直接使用configure(function)的方式,如指定特定的環境時的配置需要configure(key,function)中的環境值,下面我們寫段例子來演示各種配置:

app.configure('production', function () {
    
});
app.configure('development', function(){
  app.use(express.errorHandler({dumpExceptions:true}));
});

這里我配置了在開發環境時,遇到異常直接拋出來,對於生產環境沒有使用異常處理的機制。

我們修改下index.ejs讓其出錯:

<h1><%=title%></h1>
<p>Welcome to <%=name%></p>

同事我們需要設置下環境為生產環境:

app.set('env', 'production');

啟動后我們發現:

image

當我們設置為開發環境時:

image

我們就可以在頁面上看到拋出的錯誤。這里只是通過這個演示來看下configure的作用,一般在生產情況下對於出錯會進行其他的處理,如跳轉到統一出錯的界面,並進行日志記錄。

Express的設置及中間件

在上面我們可以看到在配置是我們設置了express常用的一些設置,這里簡單說明下:

    app.set('port', process.env.PORT || 3000);
    app.set('views', __dirname + '/views');
    app.set('view engine', 'ejs');
    app.set('env', 'development');

port:端口設置,這里使用的是環境的端口,或則3000端口;

view:試圖存放的目錄;

view engine:試圖模板引擎;

env:環境;

另外我們還可以通過設置view options來設置全局視圖的選項。

我們看下中間件的使用,在上面的例子我們已經使用了好幾個中間件,通常的時候我們可以再configure中使用app.use來使用中間件。

    app.use(express.favicon());
    app.use(partials());
    app.use(express.logger('dev'));
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(path.join(__dirname, 'public')));

這里我們修改下使用的日志件,能讓其將日志寫入到文件中去。首先引用fs:

var fs = require('fs');
var accessLogFile = fs.createWriteStream('access.log', { flags: 'a' });

使用logger:

    app.use(express.logger({stream:accessLogFile}));

瀏覽后我們發現已經將訪問信息寫入到日志中了:

image

總結

本篇中我們主要了解了Express的配置以及中間件的功能,了解了Express最基礎的一些東西。本篇講解的內容比較少,下篇中將會講解Express中MVC的實現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM