vue项目打包优化

一、打包路径和路由模式

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

三、使用node搭建后端项目

复制代码
全局命令:npm install express-generator -g

进入项目目录:express --view=ejs server

四、node-express跨域

复制代码
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()
				)
			}
		}

六、减少体积-productionSourceMap

别生成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")
},

八、减少体积-ui组件的按需引入

vendors.js:

说明:存放项目中的依赖。例如:vue.js、vue-router、vuex、axios、element-ui...

ui组件的按需引入:

根据不同的ui组件,使用按需引入,会让vendors.js文件的体积变小

九、减少体积-cdn引入包

可以把vue.js、router、vuex、axios...做成cdn引入。

注意:其实任何文件都可以做成cdn的形式,但是不建议ui组件做成cdn

相关推荐
Larcher3 分钟前
# 告别“古法编程”:吴恩达 AI 课程学习笔记与生日贺卡项目实战
前端·github·ai编程
叫我少年7 分钟前
Vue3 状态管理 Pinia 入门指南
vue.js
用户852495071847 分钟前
# 大二前端新人的AI初体验:跟着吴恩达学“Vibe Coding”,我如何用提示词“指挥”AI写代码?
前端
bupt_018 分钟前
Hermes深入理解及源码解析(二):Hermes的记忆机制
java·服务器·前端
飘尘10 分钟前
WebAssembly 是什么?它为什么重要?
前端·javascript
情绪总是阴雨天~11 分钟前
大模型 Function Call(函数调用)详解:原理、实践与数据库智能查询 Agent
前端·数据库·人工智能
之歆14 分钟前
DAY_10 JavaScript 深度解析:原型链 · 引用类型 · 内置对象 · 数组方法全攻略(上)
开发语言·javascript·ecmascript
GalenZhang88836 分钟前
OpenClaw (2026.4.x 至 2026.5.12) 升级问题及解决
前端·chrome·openclaw
Ww.xh44 分钟前
鸿蒙Web组件中Hash路由传登录态方案
前端·哈希算法·harmonyos
LCG元1 小时前
STM32实战:基于STM32F103的智慧教室环境监控系统(CO₂+光照+人数统计)
前端·stm32·嵌入式硬件