express開發(fā)框架

簡(jiǎn)介

web應(yīng)用Express 是一個(gè)基于 Node.js 平臺(tái)的極簡(jiǎn)峭跳、靈活的 web 應(yīng)用開發(fā)框架,它提供一系列強(qiáng)大的特性缺前,幫助你創(chuàng)建各種 Web 和移動(dòng)設(shè)備應(yīng)用蛀醉。

API豐富的 HTTP 快捷方法和任意排列組合的 Connect 中間件,讓你創(chuàng)建健壯衅码、友好的 API 變得既快速又簡(jiǎn)單

性能Express 不對(duì) Node.js 已有的特性進(jìn)行二次抽象拯刁,我們只是在它之上擴(kuò)展了 Web 應(yīng)用所需的基本功能

安裝

  • 為你的應(yīng)用創(chuàng)建一個(gè)目錄,然后進(jìn)入此目錄并將其作為當(dāng)前工作目錄逝段。

      $ mkdir myapp
      $ cd myapp
    
  • 通過 npm init 命令為你的應(yīng)用創(chuàng)建一個(gè) package.json 文件垛玻。

      $ npm init
    
  • 此命令將要求你輸入幾個(gè)參數(shù),例如此應(yīng)用的名稱和版本奶躯。 你可以直接按“回車”鍵接受默認(rèn)設(shè)置即可帚桩,下面這個(gè)除外:

      entry point: (index.js)
    

鍵入 app.js 或者你所希望的名稱,這是當(dāng)前應(yīng)用的入口文件嘹黔。如果你希望采用默認(rèn)的 index.js 文件名账嚎,只需按“回車”鍵即可。

  • 安裝 Express 并將其保存到依賴列表中:

      $ npm install express --save
    

如果只是臨時(shí)安裝 Express儡蔓,不想將它添加到依賴列表中郭蕉,只需略去 --save 參數(shù)即可:

    $ npm install express

安裝 Node 模塊時(shí),如果指定了 --save 參數(shù)喂江,那么此模塊將被添加到 package.json 文件中 dependencies 依賴列表中召锈。 然后通過 npm install 命令即可自動(dòng)安裝依賴列表中所列出的所有模塊。

Hello world實(shí)例

進(jìn)入 myapp 目錄获询,創(chuàng)建一個(gè)名為 app.js 的文件涨岁,然后將下列代碼復(fù)制進(jìn)去:

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Hello World!');
});

var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});

上面的代碼啟動(dòng)一個(gè)服務(wù)并監(jiān)聽從 3000 端口進(jìn)入的所有連接請(qǐng)求。他將對(duì)所有 (/) URL 或 路由 返回 “Hello World!” 字符串吉嚣。對(duì)于其他所有路徑全部返回 404 Not Found卵惦。

req (請(qǐng)求) 和 res (響應(yīng)) 與 Node 提供的對(duì)象完全一致,因此瓦戚,你可以調(diào)用 req.pipe()沮尿、req.on('data', callback) 以及任何 Node 提供的方法。

通過如下命令啟動(dòng)此應(yīng)用:

$ node app.js

然后在瀏覽器中打開<code> http://localhost:3000/</code> 并查看輸出結(jié)果。

Express應(yīng)用生成器

通過應(yīng)用生成器工具 express 可以快速創(chuàng)建一個(gè)應(yīng)用的骨架畜疾。

通過如下命令安裝:

  • $ npm install express-generator -g

  • -h 選項(xiàng)可以列出所有可用的命令行選項(xiàng):

      $ express -h
    
  • 例如赴邻,下面的示例就是在當(dāng)前工作目錄下創(chuàng)建一個(gè)命名為 myapp 的應(yīng)用。

      $ express myapp
    
  • 然后安裝所有依賴包:

      $ cd myapp 
      $ npm install
    
  • 啟動(dòng)應(yīng)用

      $ DEBUG=myapp npm start(MacOS 或 Linux 平臺(tái))
      set DEBUG=myapp & npm start(Windows 平臺(tái)使用)
    

然后在瀏覽器中打開 <code>http://localhost:3000/ </code>網(wǎng)址就可以看到這個(gè)應(yīng)用了啡捶。

一個(gè)簡(jiǎn)單的express路由

這篇教程只是對(duì) Express 路由做一個(gè)簡(jiǎn)單的介紹姥敛。路由(Routing)是由一個(gè) URI(或者叫路徑)和一個(gè)特定的 HTTP 方法(GET、POST 等)組成的瞎暑,涉及到應(yīng)用如何響應(yīng)客戶端對(duì)某個(gè)網(wǎng)站節(jié)點(diǎn)的訪問彤敛。

每一個(gè)路由都可以有一個(gè)或者多個(gè)處理器函數(shù),當(dāng)匹配到路由時(shí)了赌,這個(gè)/些函數(shù)將被執(zhí)行墨榄。

路由的定義由如下結(jié)構(gòu)組成:app.METHOD(PATH, HANDLER)。其中勿她,app 是一個(gè) express 實(shí)例袄秩;METHOD 是某個(gè) HTTP 請(qǐng)求方式中的一個(gè);PATH 是服務(wù)器端的路徑逢并;HANDLER 是當(dāng)路由匹配到時(shí)需要執(zhí)行的函數(shù)之剧。

下面的代碼展示了幾個(gè)路由實(shí)例:

// 對(duì)網(wǎng)站首頁(yè)的訪問返回 "Hello World!" 字樣
app.get('/', function (req, res) {
  res.send('Hello World!');
});

// 網(wǎng)站首頁(yè)接受 POST 請(qǐng)求
app.post('/', function (req, res) {
  res.send('Got a POST request');
});

// /user 節(jié)點(diǎn)接受 PUT 請(qǐng)求
app.put('/user', function (req, res) {
  res.send('Got a PUT request at /user');
});

// /user 節(jié)點(diǎn)接受 DELETE 請(qǐng)求
app.delete('/user', function (req, res) {
  res.send('Got a DELETE request at /user');
});

利用 Express 托管靜態(tài)文件

通過 Express 內(nèi)置的 express.static 可以方便地托管靜態(tài)文件,例如圖片砍聊、CSS背稼、JavaScript 文件等。

將靜態(tài)資源文件所在的目錄作為參數(shù)傳遞給 express.static 中間件就可以提供靜態(tài)資源文件的訪問了玻蝌。例如雇庙,假設(shè)在 public 目錄放置了圖片、CSS 和 JavaScript 文件灶伊,你就可以:

app.js文件下添加:

app.use(express.static('public'));

現(xiàn)在,public 目錄下面的文件就可以訪問了寒跳。

http://localhost:3000/images/kitten.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/app.js
http://localhost:3000/images/bg.png
http://localhost:3000/hello.html

如何渲染純 HTML 文件聘萨?

不需要!無(wú)需通過 res.render() 渲染 HTML童太。你可以通過 res.sendFile() 直接對(duì)外輸出 HTML 文件米辐。如果你需要對(duì)外提供的資源文件很多,可以使用 express.static() 中間件书释。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末翘贮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子爆惧,更是在濱河造成了極大的恐慌狸页,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異芍耘,居然都是意外死亡址遇,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門斋竞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來倔约,“玉大人,你說我怎么就攤上這事坝初〗#” “怎么了?”我有些...
    開封第一講書人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵鳄袍,是天一觀的道長(zhǎng)绢要。 經(jīng)常有香客問我,道長(zhǎng)畦木,這世上最難降的妖魔是什么袖扛? 我笑而不...
    開封第一講書人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮十籍,結(jié)果婚禮上蛆封,老公的妹妹穿的比我還像新娘。我一直安慰自己勾栗,他們只是感情好惨篱,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著围俘,像睡著了一般砸讳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上界牡,一...
    開封第一講書人閱讀 49,879評(píng)論 1 290
  • 那天簿寂,我揣著相機(jī)與錄音,去河邊找鬼宿亡。 笑死常遂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挽荠。 我是一名探鬼主播克胳,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼圈匆!你這毒婦竟也來了漠另?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤跃赚,失蹤者是張志新(化名)和其女友劉穎笆搓,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砚作,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年窘奏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葫录。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡着裹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出米同,到底是詐尸還是另有隱情骇扇,我是刑警寧澤,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布面粮,位于F島的核電站少孝,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏熬苍。R本人自食惡果不足惜稍走,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望柴底。 院中可真熱鬧婿脸,春花似錦、人聲如沸柄驻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鸿脓。三九已至抑钟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間野哭,已是汗流浹背在塔。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拨黔,地道東北人蛔溃。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蓉驹,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子揪利,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容