
- Node.js 教程
- Node.js - 首頁
- Node.js - 簡介
- Node.js - 環境搭建
- Node.js - 第一個應用程式
- Node.js - REPL 終端
- Node.js - 命令列選項
- Node.js - 包管理器 (NPM)
- Node.js - 回撥函式概念
- Node.js - 上傳檔案
- Node.js - 傳送郵件
- Node.js - 事件
- Node.js - 事件迴圈
- Node.js - 事件發射器
- Node.js - 偵錯程式
- Node.js - 全域性物件
- Node.js - 控制檯
- Node.js - 程序
- Node.js - 應用程式擴充套件
- Node.js - 打包
- Node.js - Express 框架
- Node.js - RESTful API
- Node.js - 緩衝區
- Node.js - 流
- Node.js - 檔案系統
- Node.js MySQL
- Node.js - MySQL 入門
- Node.js - MySQL 建立資料庫
- Node.js - MySQL 建立表
- Node.js - MySQL 插入資料
- Node.js - MySQL 查詢資料
- Node.js - MySQL 條件查詢
- Node.js - MySQL 排序
- Node.js - MySQL 刪除資料
- Node.js - MySQL 更新資料
- Node.js - MySQL 連線查詢
- Node.js MongoDB
- Node.js - MongoDB 入門
- Node.js - MongoDB 建立資料庫
- Node.js - MongoDB 建立集合
- Node.js - MongoDB 插入資料
- Node.js - MongoDB 查詢資料
- Node.js - MongoDB 查詢
- Node.js - MongoDB 排序
- Node.js - MongoDB 刪除資料
- Node.js - MongoDB 更新資料
- Node.js - MongoDB 資料限制
- Node.js - MongoDB 連線查詢
- Node.js 模組
- Node.js - 模組
- Node.js - 內建模組
- Node.js - 實用工具模組
- Node.js - Web 模組
- Node.js 有用資源
- Node.js - 快速指南
- Node.js - 有用資源
- Node.js - 討論
Node.js - Express 框架
Express.js是一個簡潔靈活的Web應用程式框架,它提供了一套強大的功能來開發基於Node.js的Web和移動應用程式。Express.js是Node.js生態系統中最流行的Web框架之一。Express.js提供了現代Web框架的所有功能,例如模板引擎、靜態檔案處理、與SQL和NoSQL資料庫的連線。
Node.js內建了一個Web伺服器。其http模組中的createServer()方法啟動一個非同步http伺服器。可以使用核心Node.js功能開發Web應用程式。但是,必須費力地處理HTTP請求和響應的所有底層操作。Web應用程式框架負責這些常見任務,允許開發人員專注於應用程式的業務邏輯。像Express.js這樣的Web框架是一組實用程式,有助於快速、健壯且可擴充套件的Web應用程式的開發。
以下是Express框架的一些核心功能:
允許設定中介軟體來響應HTTP請求。
定義路由表,用於根據HTTP方法和URL執行不同的操作。
允許根據傳遞給模板的引數動態渲染HTML頁面。
Express.js構建在connect中介軟體之上,而connect中介軟體又基於Node.js API的核心模組之一http。

安裝Express
Express.js包可在npm包倉庫中找到。讓我們在一個名為ExpressApp的應用程式資料夾中本地安裝express包。
D:\expressApp> npm init D:\expressApp> npm install express --save
上述命令將安裝儲存到node_modules目錄中的本地,並在node_modules內建立一個express目錄。
Hello world 示例
以下是一個非常基本的Express應用程式,它啟動一個伺服器並在埠5000上監聽連線。此應用程式對主頁請求的響應為“Hello World!”。對於其他所有路徑,它將返回404 Not Found。
var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('Hello World'); }) var server = app.listen(5000, function () { console.log("Express App running at http://127.0.0.1:5000/"); })
將上述程式碼儲存為index.js,然後從命令列執行它。
D:\expressApp> node index.js Express App running at http://127.0.0.1:5000/
在瀏覽器視窗中訪問https://:5000/。它將顯示Hello World訊息。

應用程式物件
頂級express類的物件表示應用程式物件。它由以下語句例項化:
var express = require('express'); var app = express();
應用程式物件處理重要的任務,例如處理HTTP請求、渲染HTML檢視和配置中介軟體等。
app.listen()方法在指定的宿主和埠建立Node.js Web伺服器。它封裝了Node.js API的http模組中的createServer()方法。
app.listen(port, callback);
基本路由
app物件分別使用app.get()、app.post()、app.put()和app.delete()方法處理HTTP請求GET、POST、PUT和DELETE。HTTP請求和HTTP響應物件由NodeJS伺服器作為引數提供給這些方法。這些方法的第一個引數是一個字串,表示URL的端點。這些方法是非同步的,透過傳遞請求和響應物件來呼叫回撥函式。
GET 方法
在上面的示例中,我們提供了一個方法來處理客戶端訪問'/'端點時的GET請求。
app.get('/', function (req, res) { res.send('Hello World'); })
請求物件 - 請求物件表示HTTP請求,並具有請求查詢字串、引數、正文、HTTP標頭等的屬性。
響應物件 - 響應物件表示Express應用程式在收到HTTP請求時傳送的HTTP響應。響應物件的send()方法制定伺服器對客戶端的響應。
您可以列印請求和響應物件,它們提供了許多與HTTP請求和響應相關的的資訊,包括cookie、會話、URL等。
響應物件還有一個sendFile()方法,它將給定檔案的內容作為響應傳送。
res.sendFile(path)
將以下HTML指令碼儲存為express應用程式根資料夾中的index.html。
<html> <body> <h2 style="text-align: center;">Hello World</h2> </body> </html>
將index.js檔案更改為以下程式碼:
var express = require('express'); var app = express(); var path = require('path'); app.get('/', function (req, res) { res.sendFile(path.join(__dirname,"index.html")); }) var server = app.listen(5000, function () { console.log("Express App running at http://127.0.0.1:5000/"); })
執行上述程式並訪問https://:5000/,瀏覽器將顯示如下Hello World訊息。

讓我們使用sendFile()方法在index.html檔案中顯示一個HTML表單。
<html> <body> <form action = "/process_get" method = "GET"> First Name: <input type = "text" name = "first_name"> <br> Last Name: <input type = "text" name = "last_name"> <br> <input type = "submit" value = "Submit"> </form> </body> </html>
上面的表單使用GET方法將資料提交到/process_get端點。因此,我們需要提供一個app.get()方法,在提交表單時呼叫該方法。
app.get('/process_get', function (req, res) { // Prepare output in JSON format response = { first_name:req.query.first_name, last_name:req.query.last_name }; console.log(response); res.end(JSON.stringify(response)); })
表單資料包含在請求物件中。此方法從request.query陣列中檢索資料,並將其作為響應傳送給客戶端。
index.js檔案的完整程式碼如下:
var express = require('express'); var app = express(); var path = require('path'); app.use(express.static('public')); app.get('/', function (req, res) { res.sendFile(path.join(__dirname,"index.html")); }) app.get('/process_get', function (req, res) { // Prepare output in JSON format response = { first_name:req.query.first_name, last_name:req.query.last_name }; console.log(response); res.end(JSON.stringify(response)); }) var server = app.listen(5000, function () { console.log("Express App running at http://127.0.0.1:5000/"); })
訪問https://:5000/。

現在您可以輸入名字和姓氏,然後單擊提交按鈕檢視結果,它應該返回以下結果:
{"first_name":"John","last_name":"Paul"}
POST 方法
HTML表單通常用於將資料提交到伺服器,其method引數設定為POST,尤其是在要提交一些二進位制資料(例如影像)時。因此,讓我們將index.html中的method引數更改為POST,並將action引數更改為“process_POST”。
<html> <body> <form action = "/process_POST" method = "POST"> First Name: <input type = "text" name = "first_name"> <br> Last Name: <input type = "text" name = "last_name"> <br> <input type = "submit" value = "Submit"> </form> </body> </html>
要處理POST資料,我們需要從npm安裝body-parser包。使用以下命令。
npm install body-parser –save
這是一個用於處理JSON、Raw、Text和URL編碼表單資料的node.js中介軟體。
此包使用以下require語句包含在JavaScript程式碼中。
var bodyParser = require('body-parser');
urlencoded()函式建立application/x-www-form-urlencoded解析器
// Create application/x-www-form-urlencoded parser var urlencodedParser = bodyParser.urlencoded({ extended: false })
在express應用程式程式碼中新增以下app.post()方法來處理POST資料。
app.post('/process_post', urlencodedParser, function (req, res) { // Prepare output in JSON format response = { first_name:req.body.first_name, last_name:req.body.last_name }; console.log(response); res.end(JSON.stringify(response)); })
這是index.js檔案的完整程式碼
var express = require('express'); var app = express(); var path = require('path'); var bodyParser = require('body-parser'); // Create application/x-www-form-urlencoded parser var urlencodedParser = bodyParser.urlencoded({ extended: false }) app.use(express.static('public')); app.get('/', function (req, res) { res.sendFile(path.join(__dirname,"index.html")); }) app.get('/process_get', function (req, res) { // Prepare output in JSON format response = { first_name:req.query.first_name, last_name:req.query.last_name }; console.log(response); res.end(JSON.stringify(response)); }) app.post("/process_post", ) var server = app.listen(5000, function () { console.log("Express App running at http://127.0.0.1:5000/"); })
從命令提示符執行index.js並訪問https://:5000/。

現在您可以輸入名字和姓氏,然後單擊提交按鈕檢視以下結果:
{"first_name":"John","last_name":"Paul"}
提供靜態檔案
Express提供了一個內建的中介軟體express.static來提供靜態檔案,例如影像、CSS、JavaScript等。
您只需要將儲存靜態資源(例如影像、CSS和JavaScript檔案)的目錄名稱傳遞給express.static中介軟體即可開始直接提供這些檔案。例如,如果您將影像、CSS和JavaScript檔案儲存在名為public的目錄中,您可以這樣做:
app.use(express.static('public'));
我們將一些影像儲存在public/images子目錄中,如下所示:
node_modules index.js public/ public/images public/images/logo.png
讓我們修改“Hello Word”應用程式以新增處理靜態檔案的功能。
var express = require('express'); var app = express(); app.use(express.static('public')); app.get('/', function (req, res) { res.send('Hello World'); }) var server = app.listen(5000, function () { console.log("Express App running at http://127.0.0.1:5000/"); })
將上述程式碼儲存到名為index.js的檔案中,並使用以下命令執行它。
D:\expressApp> node index.js
現在在任何瀏覽器中開啟http://127.0.0.1:5000/images/logo.png,並檢視以下結果。

要詳細瞭解Express.js,請訪問我們的ExpressJS教程(ExpressJS)