今天小编给大家分享一下Vue项目怎么配置index.html中的BASE_URL的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
Vue项目对index.html中BASE_URL的配置
问题
有时候后端配置资源的默认访问路径的时候,可能会与前端打包时配置的默认根路径有所差异
比如:后端要访问静态资源的根路径为/static,而一般情况下,我们项目的vue.config.js中对BAES_URL的配置是/,或者不做配置,因为它默认的值也是/
这个路径决定了我们的前端项目打包后获取静态资源的默认的根路径(不显示在代码中),同时,这个路径也在public/index.html中有明显的引用,大多时候都会看到如下的代码:
<!DOCTYPE html><html lang="zh-cmn-Hans"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link rel="icon" href="<%= BASE_URL %>logo.png" rel="external nofollow" > <title>xxxx</title> </head> <body> <div>.......</div> </body></html>
那么,我们应该如何去修改这个BAE_URL的值呢?
解决
通过 vue-cli3 官方文档的查阅,发现:
所以,显而易见,如果想修改 BASE_URL,
Vue CLI 3.3 之前的版本,配置:baseURl: '/static'
Vue CLI 3.3 之后(包括3.3)的版本,配置:publicPath: '/static'
因为这个值在开发环境下同样生效,所以说这么一改打包后是没问题了,但自己的项目运行起来却会报错,官方也给出了方案。很简单,只需要判断一下当前环境是生产环境还是开发环境,再应用不同的路径就可以了。如下:
module.exports = { publicPath: process.env.NODE_ENV === 'production' ? '/static/' : '/'}
注意:
还需要注意的一个问题是,当我们修改了publicPath 之后,如果我们对路由的配置是像下面这样:
export default new Router({ mode: 'history', base: process.env.BASE_URL, scrollBehavior: () => ({ y: 0 }), routes: constantRouterMap.concat(asyncRouterMap)})
可以看到路由的基础路径跟 BASE_URL 即 publicPath 是相同的。
如果保持原来的配置,那么所有的路由都会带上多余的前缀,如:/static/home
修改方式也很简单,如下:
Vue.use(Router)export default new Router({ mode: 'history', // base: process.env.BASE_URL, base: '/', scrollBehavior: () => ({ y: 0 }), routes: constantRouterMap.concat(asyncRouterMap)})
将base属性重置为/即可
Vue项目url中的<%= BASE_URL %>
vue-cli 创建的一个项目中执行命令 vue inspect > output.js 将 vue-cli 中 webpack 的配置信息导出到 output.js 文件,会有一段代码:
new DefinePlugin( { 'process.env': { NODE_ENV: '"development"', BASE_URL: '"/"' } } ),
在 webpack 中全局声明了 BASE_URL 这个变量为项目根目录。
以上就是“Vue项目怎么配置index.html中的BASE_URL”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。