DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> JSON基礎 >> nodejs教程 安裝express及配置app.js文件的詳細步驟
nodejs教程 安裝express及配置app.js文件的詳細步驟
編輯:JSON基礎     

安裝express.js

如果你安裝了npm,安裝變得很簡單,只需要在終端中運行下面的代碼即可:
復制代碼 代碼如下:
npm install express -gd

-g代表安裝到NODE_PATH的lib裡面,而-d代表把相依性套件也一起安裝。如果沒有-g的話會安裝目前所在的目錄(會建立一個node_modules的文件夾),你可以透過以下指令來比較兩者的不同:

復制代碼 代碼如下:
npm list -g
npm list

如果沒有npm,那麼我可以使用github來git下來最新的express。
好了,現在你可以通過express testapp來建立express實例。以下是示例:

復制代碼 代碼如下:
cd ~
express testapp
cd testapp
node app.js

這樣就建立了一個testapp的nodejs應用,而app.js是默認的應用主js。下面來詳細的說說app.js中的各項配置。

引入模塊
復制代碼 代碼如下:
var express = require('express');
 var app = module.exports = express.createServer();

require()是node.js提供的函數,可以讓你引入其他模塊以調用模塊的函數和變量,默認下node.js會在$NODE_PATH和目前js所在目錄下的node_modules文件夾下去尋找模塊。require也可以用來載入自己寫的模塊哦~這樣涉及到node.js的模塊機制,後面有機會就在介紹。

第二行的express.createServer()就是在建立server,而中間的module.exports也是涉及到node.js的模塊機制,以後再說。

express的app.js的詳細配置說明

express.js繼承自connect模塊,所以如果你的node_modules文件夾下沒有connect模塊也是不行的。

設置views路徑和模板
我們再來看下面兩行:
復制代碼 代碼如下:
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');

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

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

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內建的middleware來處理靜態的requests,例如css、js、img文件等。所以static()裡面指定的文件夾中的文件會直接作為靜態資源吐出來。

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內建的middleware來協助處理例外。這裡也揭露了app.configure()的令一個用法,第一個參數是node.js的環境設定,如此我們就可以設定在不同的執行環境使用不同程度的dump。PS:node.js是透過NODE_ENV這個環境變數來取得環境設定,e.g.:在命令列,NODE_ENV=production node app.js就可以進入production環境。

路由和request的處理

ok,下面是nodejs處理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服務器

復制代碼 代碼如下:
app.listen(3000);
console.log(
    "Express server listening on port %d in %s mode",
    app.address().port,
    app.settings.env);

到目前為止,我們就基本全明白了express配置了,也就不會像以前那樣跟別人都寫個hello world卻不知道各行代碼的含義了。

轉自 JS8.IN ™

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved