Express中app.use()用法

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.getapp.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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容