app.use(path,callback)中的callback既可以是router對象又可以是函數(shù)
app.get(path,callback)中的callback只能是函數(shù)
當一個路由有好多個子路由時用app.use(path,router)
例子:
http://localhost:3000/home/one
http://localhost:3000/home/second
http://localhost:3000/home/three
路由/home后面有三個子路由緊緊跟隨,分別是/one,/second,/three
如果使用app.get(),則要不斷的重復(fù),很麻煩,也不利用區(qū)分
app.get("/home",callback)
app.get("/home/one",callback)
app.get("/home/second",callback)
app.get("/home/three",callback)
我們可以創(chuàng)建一個router.js 專門用來一個路由匹配多個子路由
var express = require('express')
var router = express.Router()
router.get("/",(req,res)=>{
res.send("/")
})
router.get("/one",(req,res)=>{
res.send("one")
})
router.get("/second",(req,res)=>{
res.send("second")
})
router.get("/treen",(req,res)=>{
res.send("treen")
})
module.exports = router;
在app.js中導(dǎo)入router.js
var express = require('express')
var router = require("./router")
var app = express()
app.use('/home',router) //router路由對象中的路由都會匹配到"/home"路由后面
app.get('/about', function (req, res) {
console.log(req.query)
res.send('你好,我是 Express!')
})
// 4 .啟動服務(wù)
app.listen(3000, function () {
console.log('app is running at port 3000.')
})
那么,什么時用app.use,什么時用app.get呢?
路由規(guī)則是app.use(path,router)定義的,router代表一個由express.Router()創(chuàng)建的對象,在路由對象中可定義多個路由規(guī)則。可是如果我們的路由只有一條規(guī)則時,可直接接一個回調(diào)作為簡寫,也可直接使用app.get或app.post方法。即
當一個路徑有多個匹配規(guī)則時,使用app.use()
app.use(express.static('public'));
為了提供對靜態(tài)資源文件(圖片,css,js文件)的服務(wù),請使用Express內(nèi)置的中間函數(shù)express.static.
傳遞一個包含靜態(tài)資源的目錄給express.static中間件用于立即開始提供文件。 比如用以下代碼來提供public目錄下的圖片、css文件和js文件:
app.use(express.static('public'));
如果前臺想請求后臺public目錄下images/08.jpg靜態(tài)的圖片資源
通過: http://localhost:3000/images/08.jpg
通過多次使用 express.static中間件來添加多個靜態(tài)資源目錄:
app.use(express.static('public'));
app.use(express.static('file'));
Express將會按照你設(shè)置靜態(tài)資源目錄的順序來查看靜態(tài)資源文件。
為了給靜態(tài)資源文件創(chuàng)建一個虛擬的文件前綴(文件系統(tǒng)中不存在),可以使用express.static函數(shù)指定一個虛擬的靜態(tài)目錄,如下:
app.use('/static', express.static('public'))
現(xiàn)在你可以使用‘/static’作為前綴來加載public文件夾下的文件了
比如: http:// localhost:3000/static/image/kitten.jpg