這是用于 Node.js 的快速、不拘一格、極簡主義的 Web 框架,包含 的 API 參考列表和一些示例
創建項目,添加 package.json
配置
$ mkdir myapp # 創建目錄
$ cd myapp # 進入目錄
$ npm init -y # 初始化一個配置
安裝依賴
$ npm install express # 安裝依賴
入口文件 index.js
添加代碼:
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`監聽端口${port}示例應用`)
})
使用以下命令運行應用程序
$ node index.js
Usage: express [options] [dir]
Options:
-h, --help 輸出使用信息
--version 輸出版本號
-e, --ejs 添加 ejs 引擎支持
--hbs 添加 hbs 引擎支持
--pug 添加 pug 引擎支持
-H, --hogan 添加 hogan.js 引擎支持
--no-view 無視圖引擎生成
-v, --view <engine> 添加視圖 <engine> 支持 (ejs|hbs|hjs|jade|pug|twig|vash) (默認jade)
-c, --css <engine> 添加樣式表 <engine> 支持 (less|stylus|compass|sass) (默認css)
--git 添加 .gitignore
-f, --force 強制非空目錄
創建一個 myapp
的項目
$ express --view=pug myapp
# 運行應用程序
$ DEBUG=myapp:* npm start
:- | :- |
---|---|
express.json() | |
express.raw() | |
express.Router() | |
express.static() | |
express.text() | |
express.urlencoded() |
:- | :- |
---|---|
router.all() | |
router.METHOD() | |
router.param() | |
router.route() | |
router.use() |
var express = require('express')
var app = express()
console.dir(app.locals.title)
// => 'My App'
console.dir(app.locals.email)
// => 'me@myapp.com'
:- | :- |
---|---|
app.locals | 應用程序中的局部變量 |
app.mountpath | 安裝子應用程序的路徑模式 |
:- | :- |
---|---|
mount | 子應用掛載到父應用上,子應用上觸發事件 |
:- | :- |
---|---|
app.all() | |
app.delete() | |
app.disable() | |
app.disabled() | |
app.enable() | |
app.enabled() | |
app.engine() | |
app.get(name) | |
app.get(path, callback) | |
app.listen() | |
app.METHOD() | |
app.param() | |
app.path() | |
app.post() | |
app.put() | |
app.render() | |
app.route() | |
app.set() | |
app.use() |
:- | :- |
---|---|
req.app | |
req.baseUrl | |
req.body | |
req.cookies | |
req.fresh | |
req.hostname | |
req.ip | |
req.ips | |
req.method | |
req.originalUrl | |
req.params | |
req.path | |
req.protocol | |
req.query | |
req.route | |
req.secure | |
req.signedCookies | |
req.stale | |
req.subdomains | |
req.xhr |
:- | :- |
---|---|
req.accepts() | |
req.acceptsCharsets() | |
req.acceptsEncodings() | |
req.acceptsLanguages() | |
req.get() | 獲取HTTP 請求頭字段 |
req.is() | |
req.param() | |
req.range() |
app.get('/', function (req, res) {
console.dir(res.headersSent) // false
res.send('OK')
console.dir(res.headersSent) // true
})
:- | :- |
---|---|
res.app | |
res.headersSent | |
res.locals |
:- | :- |
---|---|
res.append() | |
res.attachment() | |
res.cookie() | |
res.clearCookie() | |
res.download() | 提示要下載的文件 |
res.end() | 結束響應過程 |
res.format() | |
res.get() | |
res.json() | 發送 JSON 響應 |
res.jsonp() | 發送帶有 JSONP 支持的響應 |
res.links() | |
res.location() | |
res.redirect() | 重定向請求 |
res.render() | 渲染視圖模板 |
res.send() | 發送各種類型的響應 |
res.sendFile() | 將文件作為八位字節流發送 |
res.sendStatus() | |
res.set() | |
res.status() | |
res.type() | |
res.vary() |
為傳遞給此路由器的任何請求調用
router.use(function (req, res, next) {
// .. 這里有一些邏輯 .. 像任何其他中間件一樣
next()
})
將處理任何以 /events
結尾的請求
// 取決于路由器在哪里 "use()"
router.get('/events', (req, res, next) => {
// ..
})
res
對象表示 Express
應用程序在收到 HTTP 請求時發送的 HTTP 響應
app.get('/user/:id', (req, res) => {
res.send('user ' + req.params.id)
})
req
對象表示 HTTP
請求,并具有請求查詢字符串、參數、正文、HTTP 標頭等的屬性
app.get('/user/:id', (req, res) => {
res.send('user ' + req.params.id)
})
res.end()
res.status(404).end()
結束響應過程。這個方法其實來自 Node 核心,具體是 http.ServerResponse
的 response.end()
方法
res.json(null)
res.json({ user: 'tobi' })
res.status(500).json({ error: 'message' })
app.all('/secret', function (req, res, next) {
console.log('訪問秘密部分...')
next() // 將控制權傳遞給下一個處理程序
})
app.delete('/', function (req, res) {
res.send('DELETE request to homepage')
})
app.disable('trust proxy')
app.get('trust proxy')
// => false
app.disabled('trust proxy')
// => true
app.enable('trust proxy')
app.disabled('trust proxy')
// => false
var engines = require('consolidate')
app.engine('haml', engines.haml)
app.engine('html', engines.hogan)
var express = require('express')
var app = express()
app.listen(3000)
const express = require('express')
const app = express()
// 向主頁發出 GET 請求時響應“hello world”
app.get('/', (req, res) => {
res.send('hello world')
})
// GET 方法路由
app.get('/', (req, res) => {
res.send('GET request to the homepage')
})
// POST 方法路由
app.post('/', (req, res) => {
res.send('POST request to the homepage')
})
function logOriginalUrl (req, res, next) {
console.log('ReqURL:', req.originalUrl)
next()
}
function logMethod (req, res, next) {
console.log('Request Type:', req.method)
next()
}
const log = [logOriginalUrl, logMethod]
app.get('/user/:id', log,
(req, res, next)=>{
res.send('User Info')
}
)
app.set('view engine', 'pug')
在 views
目錄下創建一個名為 index.pug
的 Pug
模板文件,內容如下
html
head
title= title
body
h1= message
創建一個路由來渲染 index.pug
文件。如果未設置視圖引擎屬性,則必須指定視圖文件的擴展名
app.get('/', (req, res) => {
res.render('index', {
title: 'Hey', message: 'Hello there!'
})
})