第一步:在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