Express中app.use()用法


app.use(path,callback)中的callback既可以是router對象又可以是函數
app.get(path,callback)中的callback只能是函數

當一個路由有好多個子路由時用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(),則要不斷的重復,很麻煩,也不利用區分


app.get("/home",callback)
app.get("/home/one",callback)
app.get("/home/second",callback)
app.get("/home/three",callback)
我們可以創建一個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中導入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 .啟動服務
app.listen(3000, function () {
  console.log('app is running at port 3000.')
})
那么,什么時用app.use,什么時用app.get呢?

路由規則是app.use(path,router)定義的,router代表一個由express.Router()創建的對象,在路由對象中可定義多個路由規則。可是如果我們的路由只有一條規則時,可直接接一個回調作為簡寫,也可直接使用app.get或app.post方法。即
當一個路徑有多個匹配規則時,使用app.use()

app.use(express.static('public'));
為了提供對靜態資源文件(圖片,css,js文件)的服務,請使用Express內置的中間函數express.static.

傳遞一個包含靜態資源的目錄給express.static中間件用於立即開始提供文件。 比如用以下代碼來提供public目錄下的圖片、css文件和js文件:
app.use(express.static('public'));

如果前台想請求后台public目錄下images/08.jpg靜態的圖片資源
通過: http://localhost:3000/images/08.jpg

通過多次使用 express.static中間件來添加多個靜態資源目錄:


app.use(express.static('public'));
app.use(express.static('file'));
Express將會按照你設置靜態資源目錄的順序來查看靜態資源文件。

為了給靜態資源文件創建一個虛擬的文件前綴(文件系統中不存在),可以使用express.static函數指定一個虛擬的靜態目錄,如下:


app.use('/static', express.static('public'))
現在你可以使用‘/static’作為前綴來加載public文件夾下的文件了

比如: http:// localhost:3000/static/image/kitten.jpg

轉發:https://www.jianshu.com/p/1d92463ebb69

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM