data() {
return {
publicPath: process.env.BASE_URL;
}
}
然后使用这个publicPath变量:
<img :src="`${publicPath}`myImg.png">
这里判断是否是生产环境,如果是生产环境则前面的部署路径加上 /nbgl/,如果不是生产环境则默认使用根路径 / 。publicPath 在生产环境中经常配合前端服务器的nginx代理使用。如下所示:
module.exports = {
publicPath: process.env.NODE_ENV === 'production' ? '/nbgl/' : '/'
}
module.exports = {
publicPath: process.env.NODE_ENV === 'production' ? '/nbgl/' : '/',
}
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes,
})
__webpack_public_path__ = process.env.ASSET_PATH;
或者
__webpack_public_path__ = window.staticResourceURLPrefix || "/";
// 入口文件.js
import './public-path';
import './app';
则 webpack_public_path 的赋值是在导入后进行,即 import ‘./public-path’; 执行后对 webpack_public_path 进行赋值,所以必须将 webpack_public_path 的赋值移至自己的专属模块(如与 main.js 同级的 public-path.js 中),在 public-path.js 中对 webpack_public_path 进行赋值,如下所示:
// public-path.js
(function() {
if (window.__POWERED_BY_QIANKUN__) {
if(process.env.NODE_ENV === 'development') {
__webpack_public_path__ = `localhost:${process.env.VUE_APP_PORT}${process.env.BASE_URL}`;
return;
}
__webpack_public_path__ = window.INJECTED_PUBLIC_PATH_BY_QIANKUN__;
}
})();
然后再将 public-path.js 导入到入口文件( 如 main.js )的最上面,如下所示:
// main.js
import './public-path';
import './app';