最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs教程 安裝express及配置app.js文件的詳細(xì)步驟

 更新時(shí)間:2013年05月11日 16:55:31   作者:  
express.js是nodejs的一個(gè)MVC開(kāi)發(fā)框架,并且支持jade等多種模板。下面簡(jiǎn)單來(lái)說(shuō)說(shuō)express的安裝和app.js文件的配置,然后在今后的教程中一步一步使用express.js搭建個(gè)聊天室

安裝express.js

如果你安裝了npm,安裝變得很簡(jiǎn)單,只需要在終端中運(yùn)行下面的代碼即可:

復(fù)制代碼 代碼如下:

npm install express -gd

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

復(fù)制代碼 代碼如下:

npm list -g
npm list

如果沒(méi)有npm,那么我可以使用github來(lái)git下來(lái)最新的express。
好了,現(xiàn)在你可以通過(guò)express testapp來(lái)建立express實(shí)例。以下是示例:

復(fù)制代碼 代碼如下:

cd ~
express testapp
cd testapp
node app.js

這樣就建立了一個(gè)testapp的nodejs應(yīng)用,而app.js是默認(rèn)的應(yīng)用主js。下面來(lái)詳細(xì)的說(shuō)說(shuō)app.js中的各項(xiàng)配置。

引入模塊

復(fù)制代碼 代碼如下:

var express = require('express');
 var app = module.exports = express.createServer();

require()是node.js提供的函數(shù),可以讓你引入其他模塊以調(diào)用模塊的函數(shù)和變量,默認(rèn)下node.js會(huì)在$NODE_PATH和目前js所在目錄下的node_modules文件夾下去尋找模塊。require也可以用來(lái)載入自己寫(xiě)的模塊哦~這樣涉及到node.js的模塊機(jī)制,后面有機(jī)會(huì)就在介紹。

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

express的app.js的詳細(xì)配置說(shuō)明

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

設(shè)置views路徑和模板
我們?cè)賮?lái)看下面兩行:

復(fù)制代碼 代碼如下:

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配置

復(fù)制代碼 代碼如下:

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提交過(guò)來(lái)的post請(qǐng)求放入request.body中。
express.methodOverride()也是Connect內(nèi)建的,可以協(xié)助處理POST請(qǐng)求偽裝PUT、DELETE和其他HTTP methods。
app.router()是route requests,但express.js的官方文件是這句可有可無(wú),并且經(jīng)過(guò)測(cè)試還真的是這樣,不過(guò)還是寫(xiě)上吧。
express.static()也是一個(gè)Connect內(nèi)建的middleware來(lái)處理靜態(tài)的requests,例如css、js、img文件等。所以static()里面指定的文件夾中的文件會(huì)直接作為靜態(tài)資源吐出來(lái)。

app.configure設(shè)置

復(fù)制代碼 代碼如下:

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

路由和request的處理

ok,下面是nodejs處理request的內(nèi)容:

復(fù)制代碼 代碼如下:

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

上面的代碼意思是,get請(qǐng)求根目錄則調(diào)用views文件夾中的index模板,并且傳入?yún)?shù)title為“Express”,這個(gè)title就可以在模板文件中直接使用。

在express中要處理post請(qǐng)求,需要使用app.post()。如下面的代碼:

復(fù)制代碼 代碼如下:

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()意思就是所有的請(qǐng)求處理。

添加listen,啟動(dòng)nodejs服務(wù)器

復(fù)制代碼 代碼如下:

app.listen(3000);
console.log(
    "Express server listening on port %d in %s mode",
    app.address().port,
    app.settings.env);

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

轉(zhuǎn)自 JS8.IN ™

相關(guān)文章

  • 什么是json和jsonp,jQuery json實(shí)例詳詳細(xì)說(shuō)明

    什么是json和jsonp,jQuery json實(shí)例詳詳細(xì)說(shuō)明

    JSON能夠以非常簡(jiǎn)單的方式來(lái)描述數(shù)據(jù)結(jié)構(gòu),XML能做的它都能做,因此在跨平臺(tái)方面兩者完全不分伯仲.其實(shí)網(wǎng)上關(guān)于JSONP的講解有很多,但卻千篇一律,用自己的方式來(lái)闡釋一下這個(gè)問(wèn)題,看看是否有幫助
    2012-12-12
  • json文件書(shū)寫(xiě)格式詳解

    json文件書(shū)寫(xiě)格式詳解

    這篇文章主要介紹了json文件書(shū)寫(xiě)格式規(guī)范。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2021-11-11
  • JSON與XML優(yōu)缺點(diǎn)對(duì)比分析

    JSON與XML優(yōu)缺點(diǎn)對(duì)比分析

    本文從各個(gè)方面向大家對(duì)比展示了json和xml的優(yōu)缺點(diǎn),十分的全面細(xì)致,有需要的小伙伴可以參考下。
    2015-07-07
  • 深入淺析同源與跨域,jsonp(函數(shù)封裝),CORS原理

    深入淺析同源與跨域,jsonp(函數(shù)封裝),CORS原理

    這篇文章主要介紹了同源與跨域,jsonp(函數(shù)封裝),CORS原理,從同源政策中Ajax限制,到跨域問(wèn)題以及跨域問(wèn)題的解決方法幫大家更加深入的去了解其中原理
    2021-08-08
  • js實(shí)現(xiàn)刪除json中指定的元素

    js實(shí)現(xiàn)刪除json中指定的元素

    這篇文章主要介紹了js實(shí)現(xiàn)刪除json中指定的元素,需要的朋友可以參考下
    2020-09-09
  • 一文了解什么是JWT

    一文了解什么是JWT

    JSON?WEB?Token是一種基于JSON的、用于在網(wǎng)絡(luò)上聲明某種主張的令牌,由三部分組成:?頭信息,?消息體和簽名,下面就一起來(lái)了解一下什么是JWT
    2023-05-05
  • JSON輔助格式化處理方法

    JSON輔助格式化處理方法

    由于結(jié)果是以json形式返回的,不容易一眼辨認(rèn),所以為了方便,對(duì)結(jié)果進(jìn)行了簡(jiǎn)單的處理,接下來(lái)介紹下處理方法,感興趣的各位可以參考下哈
    2013-03-03
  • 淺談JSON5解決了JSON的兩大痛點(diǎn)

    淺談JSON5解決了JSON的兩大痛點(diǎn)

    這篇文章主要介紹了淺談JSON5解決了JSON的兩大痛點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • JSON相關(guān)知識(shí)匯總

    JSON相關(guān)知識(shí)匯總

    本文給大家匯總了一下關(guān)于json的相關(guān)的知識(shí)點(diǎn),從基礎(chǔ)到示例,非常全面,有需要的小伙伴可以參考下。
    2015-07-07
  • 10分鐘學(xué)會(huì)js處理json的常用方法

    10分鐘學(xué)會(huì)js處理json的常用方法

    這篇文章主要介紹了10分鐘學(xué)會(huì)js處理json的常用方法,需要的朋友可以參考下
    2020-12-12

最新評(píng)論

苏尼特左旗| 永福县| 隆子县| 会昌县| 吴川市| 宁城县| 旬邑县| 双辽市| 太白县| 育儿| 浮梁县| 托克逊县| 邹平县| 华安县| 安福县| 枣庄市| 玉门市| 阿城市| 长治市| 岐山县| 长顺县| 隆德县| 通化县| 吉安市| 右玉县| 双柏县| 连城县| 邢台市| 陆河县| 抚顺市| 中方县| 深州市| 德令哈市| 禹州市| 叶城县| 凤冈县| 盱眙县| 老河口市| 平罗县| 沿河| 定襄县|