Express框架在使用app.use中傳入express.static設置靜態路由時,這個文件夾下的所有文件夾和文件都會變成路由文件,也就是說當在URL輸入該路徑時,會直接捕捉到該請求。
這時候,下面的app.get請求捕捉到的將會失效。
eg:
這樣一個結構:

var express = require("express"); var app = express(); var router = require("./controller"); //設置模版引擎 app.set("view engine","ejs"); //路由中間件 //靜態頁面 app.use(express.static("./public")); //get/的時候,上層函數回調的時候傳入req,res //首頁 app.get("/",router.showIndex); app.get("/admin",function (req,res) { res.send("admin"); }); app.listen(3000);
這時候訪問:http://localhost:3000/admin/
得到的是

static靜態路由下的文件夾路由。
如果想解決這個問題,我們只需要在app.use,第一個參數傳入一個標識字符串即可,eg:
var express = require("express"); var app = express(); var router = require("./controller"); //設置模版引擎 app.set("view engine","ejs"); //路由中間件 //靜態頁面 app.use("/static",express.static("./public")); //get/的時候,上層函數回調的時候傳入req,res //首頁 app.get("/",router.showIndex); app.get("/admin",function (req,res) { res.send("admin"); }); app.listen(3000);
結果:

得到了我們要的動態admin
