当前位置: 首页 > news >正文

vue项目打包上线的流程

我们在完成项目打包上线的时候,会发现他的文件很大,这个时候我就需要对项目先做一些优化,优化之后在进行打包

一、项目打包之前的优化

1. 通过 externals 加载外部 CDN 资源
默认情况下,通过 import 语法导入的第三方依赖包,最终会被打包合并到同一个文件中,从而导致打包成功
后,单文件体积过大的问题。
为了解决上述问题,可以通过 webpack 的 externals 节点,来配置并加载外部的 CDN 资源。凡是声明在
externals 中的第三方依赖包,都不会被打包。

config.set('externals', {
 vue: 'Vue', 'vue-router': 'VueRouter',
axios: 'axios',
lodash: '_',
echarts: 'echarts',
nprogress: 'NProgress', 'vue-quill-editor': 'VueQuillEditor'
})

同时,需要在 public/index.html 文件的头部,添加如下的 CDN 资源引用

<!-- nprogress 的样式表文件 --> <link rel="stylesheet" href="https://cdn.staticfile.org/nprogress/0.2.0/nprogress.min.css" />
<!-- 富文本编辑器 的样式表文件 -->
<link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.4/quill.core.min.css" />
<link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.4/quill.snow.min.css" />
<link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.4/quill.bubble.min.css" />
<!--同时,需要在 public/index.html 文件的头部,添加如下的 CDN 资源引用-->
<script src="https://cdn.staticfile.org/vue/2.5.22/vue.min.js"></script>
<script src="https://cdn.staticfile.org/vue-router/3.0.1/vue-router.min.js"></script>
<script src="https://cdn.staticfile.org/axios/0.18.0/axios.min.js"></script>
<script src="https://cdn.staticfile.org/lodash.js/4.17.11/lodash.min.js"></script>
<script src="https://cdn.staticfile.org/echarts/4.1.0/echarts.min.js"></script>
<script src="https://cdn.staticfile.org/nprogress/0.2.0/nprogress.min.js"></script>
<!-- 富文本编辑器的 js 文件 -->
<script src="https://cdn.staticfile.org/quill/1.3.4/quill.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-quill-editor@3.0.4/dist/vue-quill-editor.js"></script>

2.通过 CDN 优化 ElementUI 的打包
虽然在开发阶段,我们启用了 element-ui 组件的按需加载,尽可能的减少了打包的体积,但是那些被按需加
载的组件,还是占用了较大的文件体积。此时,我们可以将 element-ui 中的组件,也通过 CDN 的形式来加
载,这样能够进一步减小打包后的文件体积。

具体操作流程如下:
① 在 main-prod.js 中,注释掉 element-ui 按需加载的代码
② 在 index.html 的头部区域中,通过 CDN 加载 element-ui 的 js 和 css 样式

<!-- element-ui 的样式表文件 --> <link rel="stylesheet" href="https://cdn.staticfile.org/element-ui/2.8.2/themechalk/index.css" />
<!-- element-ui 的 js 文件 -->
<script src="https://cdn.staticfile.org/element-ui/2.8.2/index.js"></script>

3、路由懒加载
当打包构建项目时,JavaScript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成
不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。
具体需要 3 步:
① 安装 @babel/plugin-syntax-dynamic-import 包。
② 在 babel.config.js 配置文件中声明该插件。
③ 将路由改为按需加载的形式,示例代码如下

const Foo = () => import(/* webpackChunkName: "group-foo" */ './Foo.vue')
const Bar = () => import(/* webpackChunkName: "group-foo" */ './Bar.vue')
const Baz = () => import(/* webpackChunkName: "group-boo" */ './Baz.vue')

二、项目打包上线的流程

1、在项目文件夹下运行npm run build
2、我们会发现在原来的项目文件夹中多出了一个dist文件夹,这个文件夹就是我们要放到线上的内 容
我们把这个dist文件夹给到后端的工作人员,后端的工作人员,后端的工作人员就会把这个文件挂载到后端服务器上
现在我们把dist文件夹里的内容放在htdocs文件夹中

相关文章:

  • css-css权威指南学习笔记1
  • 前端常见面试题总结
  • 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目
  • 解决“chrome提示adobe flash player 已经过期”的小问题
  • Java 通过JDBC连接Mysql数据库
  • 跟我一起写 Makefile(十三)
  • 无向图的结合点
  • CSDN上的文章好像是hBifts的嘛。怎么连作者名字都不提一下。过份!
  • Yii2.0 API实例
  • 关于Whidbey的东西
  • AFURLRequestSerialization
  • top命令简介
  • 竟然发现在windows2003下的搜索工具不能搜索asp文件中的select文字
  • Android高级之十二讲之内存、电量、卡顿、流量
  • 邮件
  • CODING 缺陷管理功能正式开始公测
  • ES2017异步函数现已正式可用
  • input的行数自动增减
  • Java教程_软件开发基础
  • JDK9: 集成 Jshell 和 Maven 项目.
  • log4j2输出到kafka
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • PAT A1092
  • Wamp集成环境 添加PHP的新版本
  • 基于组件的设计工作流与界面抽象
  • 坑!为什么View.startAnimation不起作用?
  • 数据可视化之 Sankey 桑基图的实现
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 一些关于Rust在2019年的思考
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​linux启动进程的方式
  • ​Python 3 新特性:类型注解
  • "无招胜有招"nbsp;史上最全的互…
  • # .NET Framework中使用命名管道进行进程间通信
  • #include
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #vue3 实现前端下载excel文件模板功能
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • $forceUpdate()函数
  • (C)一些题4
  • (MATLAB)第五章-矩阵运算
  • (solr系列:一)使用tomcat部署solr服务
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (蓝桥杯每日一题)love
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (学习日记)2024.01.09
  • (转)树状数组
  • .gitignore文件—git忽略文件
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .net 调用php,php 调用.net com组件 --
  • .NET 回调、接口回调、 委托
  • .NET 事件模型教程(二)
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法