簡(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() 中間件书释。