项目开发完成,部署应用包的时候,会用到publicPath这个字段,默认是 '/'。
前置知识:
/为绝对路径./为相对路径
使用场景
-
部署在域名的根路径下,使用
./或/项目如果部署在域名的根路径上,使用这三者方式都可以。
例如:域名是
https: xxx.xxx.cn/, 应用包中的资源路径就会直接到根路径去寻找,而根路径就是在域名下面,所以这个时候是可以找到的。 -
部署在域名的子路径下,使用
/子路径名称或./例如:子路径为
https: xxx.xxx.cn/download, 使用/download或./都可以。
./表示相对路径,部署在域名的子路径上面可以找到对应的资源。
相对路径有两个缺陷,下面这两种情况需要避免使用相对路径:
- 当使用基于HTML5`history.pushState`的路由时;
- 当使用`pages`选项构建多页应用时。
推荐使用 /子路径这种方式。
推荐使用/子路径的原因:一般部署到服务器后,一个域名下面会有很多应用,所以一般每个应用会有一个前缀,比如/aaa/,然后nginx配置,指向服务器某个地址。如果用‘./’也可以实现,因为是相对路径,所以静态资源的访问是域名+nginx+打包后的地址,但是对于本地,如果是相对路径,因为启动是localhost:8080,所以首页取静态资源是‘localhost:8080/static’这种,但是具体页面因为router配置了base:'/aaa',所以静态资源是‘’localhost:8080/aaa/static‘’,两个前缀不同,肯定有一个取不到。