Node.js | Express 框架(上)
簡介
Express是一個簡潔而靈活的node.js Web應用框架,提供了一系列強大特性幫助你建立各種Web應用,和豐富的HTTP工具。
使用Express可以快速地搭建一個完整功能的網站。
Express框架核心特性:
- 可以設置中間件來響應
HTTP請求。 - 定義了路由表用於執行不同的
HTTP請求動作。 - 可以通過向模板傳遞參數來動態渲染
HTML頁面。
安裝 Express
1 | npm install express --save |
Express框架安裝在當前目錄的node_modules目錄中,node_modules目錄下會自動建立express目錄。
以下幾個重要的模組是需要與express框架一起安裝的:
body-parser:node.js中間件,用於處理JSON、Raw、Text和URL編碼的資料。cookie-parser:這就是一個解析Cookie的工具。通過req.cookies可以取到傳過來的cookie,並把它們轉成對象。multer:node.js中間件,用於處理enctype="multipart/form-data"(設置表單的MIME編碼)的表單資料。
註:如在
install過程中有錯誤,可以參考NPM 使用介绍 - 錯誤處理
查看下express使用的版本號:
1 | $ npm list express |

Express 框架範例
1 | // express_demo.js 文件 |
執行結果如下:
1 | $ node express_demo.js |
為什麼是::?
根據express官方文件對app.listen()函數的文件說明,它完全等同於Node.js的server.listen()。
該函數的官方文件中對參數host描述如下:
1 | If port is omitted or is 0, the operating system will assign an arbitrary unused port, which can be retrieved by using server.address().port after the 'listening' event has been emitted. |
翻譯:
1 | 如果port被省略或為0,操作系統會自動分配一個任意的未被使用的端口號;你可以在'listening'事件被觸發後,通過使用 server.address().port 來獲取到該端口號。 |
根據文件描述,如果你明確地只想使用(監聽)IPv4地址。
那麼你可以將最後一行程式碼改為:
1 | app.listen(3000, '0.0.0.0'); |
修改後
1 | // express_demo.js 文件 |
執行結果如下:
1 | $ node express_demo.js |
開啟瀏覽器瀏覽:
1 | http://0.0.0.0:8081 |

請求和響應
Express應用使用回調函數的參數:request和response對象來處理請求和響應的資料。
1 | app.get('/', function (req, res) { |
request和response對象的具體介紹:
Request對象:request對象表示HTTP請求,包含了請求查詢字符串,參數,內容,HTTP頭部等屬性。常見屬性有:
1 | req.app:當callback為外部文件時,用req.app訪問express的範例 |
Response對象:response對象表示HTTP響應,即在接收到請求時向客戶端發送的HTTP響應資料。常見屬性有:
1 | res.app:同req.app一樣 |
路由
了解了HTTP請求的基本應用,而路由決定了由誰(指定腳本)去響應客戶端請求。
在HTTP請求中,我們可以通過路由提取出請求的URL以及GET/POST參數。
接下來我們擴展Hello World,添加一些功能來處理更多類型的HTTP請求。
1 | // express_demo2.js 文件 |
執行結果如下:
1 | $ node express_demo2.js |
開啟瀏覽器瀏覽:
1 | http://0.0.0.0:8081 |

註:Express router documentation
靜態文件
Express提供了內置的中間件express.static來設置靜態文件。
如:images(圖片)、CSS、JavaScript⋯⋯等。
你可以使用express.static中間件來設置靜態文件路徑。
例如:如果你將images(圖片)、CSS、JavaScript文件放在public目錄下:
1 | app.use('/public', express.static('public')); |
public/images目錄下放些圖:
1 | . |
1 | // express_demo3.js 文件 |
執行結果如下:
1 | $ node express_demo3.js |
開啟瀏覽器瀏覽:
1 | http://0.0.0.0:8081/public/images/blogger-logo.png |
註:以上參考了
Express
Node.js Express 框架
Node.js express 如何监听 IPv4 地址