node Express框架使用
阿新 • • 發佈:2021-01-24
技術標籤:nodejs
Express
建立應用
建立專案根目錄
mkdir express-demo
cd express-demo
初始化npm
配置
npm init
npm install express --save
package.json
檔案內容
{
"name": "express-demo",
"version": "1.0.0",
"description": "",
"main": "index.js" ,
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "gx",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
}
}
新建index.js檔案
let express = require('express')
let app = express()
app.listen(8000)
app.get('/', (req, res) => {
res.send('Hello Express')
})
一個簡單的express
專案就搭建完成了
執行node命令啟動專案
node index.js
執行結果
路由匹配
// 匹配請求url: /aa /aba /abcda等
app.get('/a*a', (req, res) => {
res.send(req.originalUrl)
})
// 匹配請求url: /a和/ab
app. get('/ab?', (req, res) => {
res.send(req.originalUrl)
})
// 匹配請求url: /a/bb等以/a/開頭的url
app.get('/a/', (req, res) => {
res.send(req.originalUrl)
})
// 支援正則表示式匹配url
app.get('/abcd+', (req, res) => {
res.send(req.originalUrl)
})
路由引數
// 將引數userId放入url中
app.get('/:userId', (req, res) => {
res.send(req.params)
})
// 使用分隔符'-'和'.'分割url中的引數
app.get('/user/:userId-:userName.:userAge', (req, res) => {
res.send(req.params)
})
路由處理器
// 傳入多個回撥處理器,除了最後一個,前面的回撥函式最後面要呼叫next()
app.get('/routers/handlers-1', (req, res, next) => {
console.log('first handler')
next()
}, (req, res, next) => {
console.log('second handler')
next()
}, (req, res) => {
console.log('last handler')
res.send('last handler')
})
// 陣列形式傳入回撥處理器
let handler1 = (req, res, next) => {
console.log('handler1')
next()
}
let handler2 = (req, res, next) => {
console.log('handler2')
next()
}
app.get('/routers/handlers-2', [handler1, handler2], (req, res) => {
console.log('handler3')
res.send('handler3')
})
路由分級函式:app.route()
使用app.route()
處理同一個url
不同請求方法的介面請求
app.route('/manager')
.get((req, res) => {
res.send('get')
})
.post((req, res) => {
res.send('post')
})
.put((req, res) => {
res.send('put')
})
路由分級函式:app.use()
app.use()
可以將一類介面建立檔案單獨處理,方便維護
建立一個js
檔案user-handler.js
let express = require('express')
let router = express.Router()
router.get('/:userId/get', (req, res) => {
console.log(req.baseUrl); // 輸出結果 /user
console.log(req.url); // 輸出結果 /11/get
console.log(req.originalUrl); // 輸出結果 /user/11/get
res.send(req.params.userId)
})
.get('/post', (req, res) => {
console.log(req.url);
res.send('/post')
})
module.exports = router
在主檔案中匯入並使用
app.use('/user', require('./user-handler'))
以/user/
開頭的url
請求會分配到user-handler.js
去處理