Bootstrap

app.use()和express.static()

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

;