开发者学堂课程【Node.js 入门与实战:通过 express 模拟 Apache 实现静态资源托管服务(补充)】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/588/detail/8318
通过 express 模拟 Apache 实现静态资源托管服务(补充)
内容介绍
一、使用 express 处理静态资源
二、问题
一、使用express处理静态资源
在第一个参数写一个/,根目录就是请求这个url路径的根路径,它指的只是这个路径下的第一个路径,并不对应这个磁盘上的文件夹,到底对应的那个服务器那个目录下那个磁盘下这个完全取决与服务器,服务器想让根目录对应谁就对应谁。
//这种写法完全等价于上面的写法1/参数1叫做:,虚拟路径app.use(‘/xxx’,express.static(path.join(__dirname"public')));
// /index.html
// /xxx/index . html
用户想请求index.html必须是以/xxx才能请求到,这个仅仅只是一个标识,只要以这个开头就表示要找这个静态资源,只要不是以这个开头那就表示不是要找静态资源。
因为没有任何一个路由是来处理所以请求不到。这个只是一个表示所以交虚拟路径。
二、问题
问题1:
app.use(‘/xxx", express.static(path.join( ..dirname,"public')));
app.use(‘/www' , express.static(path.join( .dirname,"public')));
这样做运行起来是什么效果 注册两个虚拟路径但同时指向同一个文件夹从通过/XXX可以访问到这个静态资源从/www也可以访问到
问题2:app.use(‘/xxx’,express.static(path.join(.dirname,"public')));
app.use( ‘/ xxx’ , express.static(path.join( .dirname,'pp')));
如果现在访问/xxx下的350.jbg能访问到还是不能
当有同样一个虚拟路径指向两个文件夹它要找资源的时候先根据第一个文件夹去找如果找到就返回如果找不到就找第二个,因为他们两个的虚拟路径是一样的。
如果说第一个里面有一个350.jbp是苹果,第二个350.hbp里面是一个橘子通过/xxx看到的第一个是苹果,因为public里面放了一个350.jbp是苹果,pp里面放了个350.jbp是橘子,他先去public里面找,如果找到苹果了就不会再找了,如果public里面没有才会去pp里面找。