nodejs教程 安裝express及配置app.js文件的詳細(xì)步驟
安裝express.js
如果你安裝了npm,安裝變得很簡單,只需要在終端中運(yùn)行下面的代碼即可:
npm install express -gd
-g代表安裝到NODE_PATH的lib里面,而-d代表把相依性套件也一起安裝。如果沒有-g的話會安裝目前所在的目錄(會建立一個(gè)node_modules的文件夾),你可以透過以下指令來比較兩者的不同:
npm list -g
npm list
如果沒有npm,那么我可以使用github來git下來最新的express。
好了,現(xiàn)在你可以通過express testapp來建立express實(shí)例。以下是示例:
cd ~
express testapp
cd testapp
node app.js
這樣就建立了一個(gè)testapp的nodejs應(yīng)用,而app.js是默認(rèn)的應(yīng)用主js。下面來詳細(xì)的說說app.js中的各項(xiàng)配置。
引入模塊
var express = require('express');
var app = module.exports = express.createServer();
require()是node.js提供的函數(shù),可以讓你引入其他模塊以調(diào)用模塊的函數(shù)和變量,默認(rèn)下node.js會在$NODE_PATH和目前js所在目錄下的node_modules文件夾下去尋找模塊。require也可以用來載入自己寫的模塊哦~這樣涉及到node.js的模塊機(jī)制,后面有機(jī)會就在介紹。
第二行的express.createServer()就是在建立server,而中間的module.exports也是涉及到node.js的模塊機(jī)制,以后再說。
express的app.js的詳細(xì)配置說明
express.js繼承自connect模塊,所以如果你的node_modules文件夾下沒有connect模塊也是不行的。
設(shè)置views路徑和模板
我們再來看下面兩行:
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
上面兩行是設(shè)置views文件夾,即模板文件夾,__dirname是node.js里面的全局變量,即取得執(zhí)行的js所在的路徑,另外__filename是目前執(zhí)行的js文件名。所以,app.set(‘views', __dirname + ‘/views');是設(shè)置views的文件夾。
而app.set('view engine', 'jade');是設(shè)置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內(nèi)建的middleware,設(shè)置此處可以將client提交過來的post請求放入request.body中。
express.methodOverride()也是Connect內(nèi)建的,可以協(xié)助處理POST請求偽裝PUT、DELETE和其他HTTP methods。
app.router()是route requests,但express.js的官方文件是這句可有可無,并且經(jīng)過測試還真的是這樣,不過還是寫上吧。
express.static()也是一個(gè)Connect內(nèi)建的middleware來處理靜態(tài)的requests,例如css、js、img文件等。所以static()里面指定的文件夾中的文件會直接作為靜態(tài)資源吐出來。
app.configure設(shè)置
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
express.errorHandler()是Connect內(nèi)建的middleware來協(xié)助處理例外。這裡也揭露了app.configure()的令一個(gè)用法,第一個(gè)參數(shù)是node.js的環(huán)境設(shè)定,如此我們就可以設(shè)定在不同的執(zhí)行環(huán)境使用不同程度的dump。PS:node.js是透過NODE_ENV這個(gè)環(huán)境變數(shù)來取得環(huán)境設(shè)定,e.g.:在命令列,NODE_ENV=production node app.js就可以進(jìn)入production環(huán)境。
路由和request的處理
ok,下面是nodejs處理request的內(nèi)容:
app.get('/', function(req, res){
res.render('index', {
title: 'Express'
});
});
上面的代碼意思是,get請求根目錄則調(diào)用views文件夾中的index模板,并且傳入?yún)?shù)title為“Express”,這個(gè)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參數(shù)處理后的結(jié)果。
另外除了get和post方法,還有app.all()意思就是所有的請求處理。
添加listen,啟動nodejs服務(wù)器
app.listen(3000);
console.log(
"Express server listening on port %d in %s mode",
app.address().port,
app.settings.env);
到目前為止,我們就基本全明白了express配置了,也就不會像以前那樣跟別人都寫個(gè)hello world卻不知道各行代碼的含義了。
轉(zhuǎn)自 JS8.IN ™
- node.js Web應(yīng)用框架Express入門指南
- NodeJS框架Express的模板視圖機(jī)制分析
- Node.js使用Express創(chuàng)建Web項(xiàng)目詳細(xì)教程
- 詳解nodejs中express搭建權(quán)限管理系統(tǒng)
- Node.js Express安裝與使用教程
- Nodejs的express使用教程
- Node.js+Express+MySql實(shí)現(xiàn)用戶登錄注冊功能
- 深入理解nodejs中Express的中間件
- 用node和express連接mysql實(shí)現(xiàn)登錄注冊的實(shí)現(xiàn)代碼
- 使用 NodeJS+Express 開發(fā)服務(wù)端的簡單介紹
- Node Express用法詳解【安裝、使用、路由、中間件、模板引擎等】
相關(guān)文章
Chrome中JSON.parse的特殊實(shí)現(xiàn)
ECMA 262 Edition5 中提供了原生的JSON支持,其中JSON.parse用來將字符串轉(zhuǎn)成成json,見ECMA 262 Edition5 15.12.2。另見:字符串轉(zhuǎn)換成json的三種方式2011-01-01一篇了解JSON與數(shù)據(jù)存儲基礎(chǔ)知識
這篇文章主要介紹了JSON與數(shù)據(jù)存儲基礎(chǔ)知識,本篇文章較為基礎(chǔ),但非常詳細(xì),可以很好的理解JSON和數(shù)據(jù)存儲,,需要的朋友可以參考下2023-01-01javascript 循環(huán)讀取JSON數(shù)據(jù)的代碼
服務(wù)端向客戶端返回了一串JSON格式的數(shù)據(jù)。在有些時(shí)候,因?yàn)槟承┨厥獾脑蛭覀儾恢涝嫉膋ey值,因此我們此時(shí)無法象正常一樣通過key值,來獲取value值。這時(shí)我們必須循環(huán)讀取JSON對象數(shù)據(jù)。廢話少說,來看例子。2010-07-07快速解決處理后臺返回json數(shù)據(jù)格式的問題
今天小編就為大家分享一篇快速解決處理后臺返回json數(shù)據(jù)格式的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08淺談JsonObject中的key-value數(shù)據(jù)解析排序問題
下面小編就為大家分享一篇淺談JsonObject中的key-value數(shù)據(jù)解析排序問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12