app.use()是一个中间件,是用来处理用户的任何url请求的,也会处理path下的子路径:
app.use("/admin",function(req,res){
res.write(req.originalUrl + "\n"); // /admin/aa/bb/cc/dd
res.write(req.baseUrl + "\n"); // /admin
res.write(req.path + "\n"); // /aa/bb/cc/dd
res.end("你好");
});
这里,若在浏览器中输入http://127.0.0.1:3000/admin/aa/bb/cc/dd,则会输出三种不同的字符串但是依然可以访问页面。所以它不仅仅能够匹配http://127.0.0.1:3000/admin,类似http://127.0.0.1:3000/admin/cc等后面还有路径的url也能够被访问。而app.get()就不能。
静态资源
静态资源可以理解为对于不同的用户来说,内容都不会变化的文件。
app.use(express.static("./public"));
express 会在静态资源目录下查找文件,所以不需要把静态目录public作为url的一部分。比如,如果在public文件目录下有index.ejs,main.css,1.jpg等文件,则链接的url是:
http://localhost:3000/images/1.jpg
http://localhost:3000/css/main.css
http://localhost:3000/js/index.ejs
可以多次使用 express.static 中间件来添加多个静态资源目录,这时express 将会按照你设置静态资源目录的顺序来查找静态资源文件
为了给静态资源文件创建一个虚拟的文件前缀(实际上文件系统中并不存在) ,可以使用 express.static 函数指定一个虚拟的静态目录,就像下面这样:
app.use('/static', express.static('public'));
这时候需要在刚刚的url中加入static访问:
http://localhost:3000/static/images/1.jpg
http://localhost:3000/static/css/main.css
http://localhost:3000/static/js/index.ejs