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