亚洲成A人片在线观看网站_成年网站免费视频A在线双飞_日日日日做夜夜夜夜无码_久久夜色撩人精品国产小说

Express 備忘清單

這是用于 Node.js 的快速、不拘一格、極簡主義的 Web 框架,包含 的 API 參考列表和一些示例

入門

Hello World

  • 創建項目,添加 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
    

express -h

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()

:-:-
express.json()
express.raw()
express.Router()
express.static()
express.text()
express.urlencoded()

Router

:-:-
router.all()
router.METHOD()
router.param()
router.route()
router.use()

Application

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安裝子應用程序的路徑模式

Events

:-:-
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()

Request

屬性

:-:-
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()

Response

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

為傳遞給此路由器的任何請求調用

router.use(function (req, res, next) {
  // .. 這里有一些邏輯 .. 像任何其他中間件一樣
  next()
})

將處理任何以 /events 結尾的請求

// 取決于路由器在哪里 "use()"
router.get('/events', (req, res, next) => {
  // ..
})

Response

res 對象表示 Express 應用程序在收到 HTTP 請求時發送的 HTTP 響應

app.get('/user/:id', (req, res) => {
  res.send('user ' + req.params.id)
})

Request

req 對象表示 HTTP 請求,并具有請求查詢字符串、參數、正文、HTTP 標頭等的屬性

app.get('/user/:id', (req, res) => {
  res.send('user ' + req.params.id)
})

res.end()

res.end()
res.status(404).end()

結束響應過程。這個方法其實來自 Node 核心,具體是 http.ServerResponseresponse.end() 方法

res.json([body])

res.json(null)
res.json({ user: 'tobi' })
res.status(500).json({ error: 'message' })

app.all

app.all('/secret', function (req, res, next) {
  console.log('訪問秘密部分...')
  next() // 將控制權傳遞給下一個處理程序
})

app.delete

app.delete('/', function (req, res) {
  res.send('DELETE request to homepage')
})

app.disable(name)

app.disable('trust proxy')
app.get('trust proxy')
// => false

app.disabled(name)

app.disabled('trust proxy')
// => true

app.enable('trust proxy')
app.disabled('trust proxy')
// => false

app.engine(ext, callback)

var engines = require('consolidate')

app.engine('haml', engines.haml)
app.engine('html', engines.hogan)

app.listen([port[, host[, backlog]]][, callback])

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.pugPug 模板文件,內容如下

html
  head
    title= title
  body
    h1= message

創建一個路由來渲染 index.pug 文件。如果未設置視圖引擎屬性,則必須指定視圖文件的擴展名

app.get('/', (req, res) => {
  res.render('index', {
    title: 'Hey', message: 'Hello there!'
  })
})