Express框架之app.js配置文件說明

express.jsnodejs的一個MVC開發框架,而且支持jade等多種模板。下面簡單來講說express的app.js文件的配置內容javascript

先看一下這個app.js文件css

/**
 * Module dependencies.
 */

var express = require('express')
  , routes = require('./routes')
  , http = require('http');

var app = express();

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');

  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler());
});

app.get('/', routes.index);

http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

>>引入模塊java

var express = require('express');

    require()是node.js提供的函數,可讓你引入其餘模塊以調用模塊的函數和變量,默認下node.js會在$NODE_PATH和目前js所在目錄下的node_modules文件夾下去尋找模塊,express.js繼承自connect模塊,因此若是你的node_modules文件夾下沒有connect模塊也是不行的。node

>>設置views路徑和模板jquery

app.set('views', __dirname + '/views'); app.set('view engine', 'jade');

    上面兩行是設置views文件夾,即模板文件夾,__dirname是node.js裏面的全局變量,即取得執行的js所在的路徑,另外__dirname是目前執行的js文件名。因此,app.set(‘views’, __dirname + ‘/views’);是設置views的文件夾。

    而app.set('view engine', 'jade');是設置express.js所使用的render engine。除了Jade以外express.js還支持EJS(embedded javascript)、Haml、CoffeScript和jQuerytemplate等js模板express

>>app.use配置 服務器

app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(__dirname + '/public'));

    express.bodyParser()是Connect內建的middleware,設置此處能夠將client提交過來的post請求放入request.body中。
    express.methodOverride()也是Connect內建的,能夠協助處理POST請求假裝PUT、DELETE和其餘HTTP methods。
    app.router()是route requests,但express.js的官方文件是這句無關緊要,而且通過測試還真的是這樣,不過仍是寫上吧。

    express.static()也是一個Connect內建的中間件來處理靜態的requests,例如css、js、img文件等。因此static()裏面指定的文件夾中的文件會直接做爲靜態資源吐出來。app

>>app.configure設置 框架

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

    express.errorHandler()是Connect內建的中間件來協助處理例外。這裏也揭露了app.configure()的另外一用法,第一個參數是node.js的環境設定,如此咱們就能夠設定在不一樣的執行環境下使用不一樣的dump。注意:node.js是透過NODE_ENV這個環境變量來取得環境設定,e.g.:在命令列,NODE_ENV=production node app.js就能夠進入production環境。ide

>>路由和request的處理

app.get('/', function(req, res){ res.render('index', { title: 'Express' }); });

    上面的代碼意思是,get請求根目錄則調用views文件夾中的index模板,而且傳入參數title爲「Express」,這個title就能夠在模板文件中直接使用。

    在express中要處理post請求,須要使用app.post()。以下面的代碼:

app.post('/add', function(req,res){ res.render('add', { sum: req.body.a + req.body.b }); });

    前面咱們提到了req.body是express.bodyParser()把POST參數處理後的結果。

    另外除了get和post方法,還有app.all()意思就是全部的請求處理。

>>添加listen,啓動nodejs服務器

http.createServer(app).listen(app.get('port'), function(){ console.log("Express server listening on port " + app.get('port')); });

app.set('port', process.env.PORT || 3000);
相關文章
相關標籤/搜索