第一步:在vue.config.js配置打包路径
module.exports = {
publicPath:'./'
}
第二步:在router/index.js将路由模式改为hash
const router = new VueRouter({
mode: "hash",
base: process.env.BASE_URL,
routes,
});
如果项目上线要求是history模式,需要告诉后端重定向一下路径。
开发环境:.env.development
VUE_APP_ENV = 'dev'
VUE_APP_BASE_API = 'http://localhost:3000'
生产环境:.env.production
VUE_APP_ENV = 'pro'
VUE_APP_BASE_API = 'http://localhost:3000'
在.vue文件里可以使用 console.log(process.env.VUE_APP_BASE_API) 判断该环境是开发环境还是生产环境,从而选择接口地址url。
$axios( options ){
let apiUrl = null;
if( process.env.VUE_APP_ENV ==='dev' ){
apiUrl = options.url;
}else{
apiUrl = process.env.VUE_APP_BASE_API + options.url;
}
return axios({
url:apiUrl
})
}
全局命令:npm install express-generator -g
进入项目目录:express --view=ejs server
router.all('*', function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type');
res.header('Access-Control-Allow-Methods', '*');
res.header('Content-Type', 'application/json;charset=utf-8');
next();
});
npm install webpack-bundle-analyzer
vue.config中配置
//引入可视化插件
const BundleAnalyzer = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
module.exports = {
configureWebpack:config=>{
config.plugins.push(
new BundleAnalyzer()
)
}
}
别生成map文件
说明:map是方便代码运行的时候,可以准确输出代码到底是哪一行出现了错误。
module.exports={
//不生成map文件
productionSourceMap:false
}
说明:app.js是用来存放页面中的js操作的。例如:如果路由没有懒加载和分包,那么所有的路由全部会放在app.js文件中。
使用webpackChunkName在router/index.js文件在进行拆包
{
path: "/course",
name: "Course",
component: () => import(/* webpackChunkName:'course'*/ "../views/course/Course.vue")
},
vendors.js:
说明:存放项目中的依赖。例如:vue.js、vue-router、vuex、axios、element-ui...
ui组件的按需引入:
根据不同的ui组件,使用按需引入,会让vendors.js文件的体积变小
可以把vue.js、router、vuex、axios...做成cdn引入。
注意:其实任何文件都可以做成cdn的形式,但是不建议ui组件做成cdn