Express核心

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
    res.send('Hello World!')
})

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
})

使用 TypeScript

準備工作

  • yarn global add typescript ts-node全局安裝工具
  • yarn add @types/express 安裝類型支持
  • tsc --init
  • 修改 tsconfig的targetnolmplicitAny
  • require改為import

運行
ts-node app2.ts

路由

使用 app.use 如何實現路由

const express = require('express')
const app = express()

app.use((request,response, next)=> {
   if (request.path === '/' && request.method === 'get') {
       response.send('根目錄')
   }
   next()
})

app.use('/xxx', (request, response, next) => {
    response.send('這是 xxx')
    next()
})

app.get('/aaa', (request, response, next) => {
    response.send('這是 aaa')
    next()
})



app.listen(3000, ()=> {
    console.log('正在listen 3000');
})

更方便的寫法
app.use('/xxx',fn)
app.get('/xxx',fn)
app.post('/xxx',fn)
app.route('/xxx').all(f1).get(f2).post(f3)
這些都是 API 糖

錯誤處理

next()能傳參數嗎?

  • 你可以看文檔,也可以看TypeScript定義
  • 推薦后者

next(error)

  • 會直接進入errorHandler,不執行后面的中間件
  • errorHandler的默認實現見文檔

如何自定義errorHandler

  • 還是看文檔,文檔說一般在最后定義
  • app.use((err, req, res, next) => {})
  • 可以定義多個這樣的中間件
onst express = require('express')
const app = express()

app.use((request, response, next) => {
    response.write('1')
    next()
})

app.use((request, response, next) => {
    response.write('2')
    if (true) {
        next('error msg')
    } else {
        next()
    }
})

app.use((request, response, next) => {
    response.write('3')
    next()
})

app.use((error,request, response, next) => {
    response.write(error)
    response.end()
    next()
})



app.listen(3000, ()=> {
    console.log('正在listen 3000');
})
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容