热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vuecli开发项目,文件打包后,appjs/vendorjs文件过大

项目上线后,浏览器第一次加载会特别特别慢,network中看到vendorjs文件1.9M,不慢才怪。echarts按需引入后࿰

项目上线后,浏览器第一次加载会特别特别慢,network中看到vendorjs文件1.9M,不慢才怪。

echarts按需引入后,也有1.1M左右,由于对vue脚手架理解不深,自己扒了大量的文档,又测

试了很多次,才测试成功,暂时简单记录下。

npm run build --report

可以查看文件的大小分布 罪魁祸首是elementui和echarts()

1- app.js存放页面中的js操作,使用路由的按需加载,可把app.js分隔成多个小的js文件

此时分隔好的js文件要看各页面中的业务代码量,其中我这里单独的一个图表页还是很大,

800k左右,又是echarts的锅。暂时放这。

2- vendorjs中是项目中所有引用的依赖包,即使用的vue、eleui、axios等等插件框架什么

的都在这里边,怪不得大。

参考文档,找到以下解决方法:

  # cdn引入插件

  # 打包时使用Gzip

2.1- cdn引入:

  1.index.html文件中引入link/script引入(cdn或ukg链接)

  2.build/webpack.base.conf.js中添加external配置,webpack打包时会跳过配置中的插件

  3. 去除import...from..和use什么的,不去除照样会打包,其他照常

  然后就OK了,我看到的文档大都是这样的,不是很清晰哈,那看代码

 index.html (tips: 先后顺序、引入的地方)

1 DOCTYPE html>
2 <html>
3 <head>
4 <meta charset&#61;"utf-8">
5 <meta name&#61;"viewport" content&#61;"width&#61;device-width,initial-scale&#61;1.0">
6 <link rel&#61;"stylesheet" href&#61;"https://unpkg.com/element-ui/lib/theme-chalk/index.css">
7 <title>myapptitle>
8 head>
9 <body>
10 <div id&#61;"app">div>
11
12 <script src&#61;"https://cdn.jsdelivr.net/npm/vue&#64;2.5.17/dist/vue.js">script>
13 <script src&#61;"https://cdn.bootcss.com/vue-router/3.0.1/vue-router.min.js">script>
14 <script src&#61;"https://unpkg.com/element-ui/lib/index.js">script>
15 <script src&#61;"https://cdn.bootcss.com/echarts/4.2.0-rc.2/echarts-en.min.js">script>
16 body>
17 html>

 webpack配置

1 module.exports &#61; {
2 context: path.resolve(__dirname, &#39;../&#39;),
3 entry: {
4 ....
5 },
6 externals: {
7 // 要引入的资源的名字&#xff1a;该模块提供给外部引用的名字(由对应的库自定)
8 &#39;vue&#39;: &#39;Vue&#39;,
9 &#39;vue-router&#39;: &#39;VueRouter&#39;,
10 &#39;element-ui&#39;: &#39;ELEMENTUI&#39;,
11 &#39;echarts&#39;: &#39;echarts&#39;
12 },
13 output: {
14   ....19 }

main.js中 (tips: 文件中import router from &#39;./router&#39;  并不是引入的vueRouter 看路径)

// import Vue from &#39;vue&#39;
import App from &#39;./App&#39;// 这里不是引入的vueRouter
import router from &#39;./router&#39;// import ElementUI from &#39;element-ui&#39;
//
import &#39;element-ui/lib/theme-chalk/index.css&#39;
//
import echarts from &#39;echarts&#39;

Vue.config.productionTip
&#61; false
// Vue.use(ElementUI)
//
Vue.prototype.$echarts &#61; echarts/* eslint-disable no-new */
new Vue({el: &#39;#app&#39;,router,components: { App },template: &#39;&#39;
})

 router/index.js文件下 &#xff08;tips: 脚手架中初始使用的为router  这里要改为VueRouter 原因看external那一步&#xff09;

1 // import Vue from &#39;vue&#39;
2 // import router from &#39;vue-router&#39; // 这里才是引入的路由
3 import HelloWorld from &#39;&#64;/components/HelloWorld&#39;
4
5 // Vue.use(VueRouter)
6
7 export default new VueRouter({
8 routes: [
9 {
10 path: &#39;/&#39;,
11 name: &#39;HelloWorld&#39;,
12 component: HelloWorld
13 }
14 ]
15 })

 这样配置好之后&#xff0c;开发环境下&#xff0c;项目照常是可以运行的&#xff0c;打包后查看文件大小分布&#xff0c;真香。

补充&#xff1a; vue项目中刚开始用的时候直接全局使用的echarts&#xff0c;即添加原型链那一步&#xff0c;页面中可以直接使用this.$echarts访问实例

后改用页面中直接var echarts &#61; require(&#39;echarts&#39;)按需引入&#xff0c;页面中访问可以直接echarts.init()什么的&#xff0c;在使用cdn引入echarts

按需引入那里照常会打包到vendorjs中&#xff0c;因为 require引入使和import作用是一样的&#xff08;引入插件&#xff09;&#xff0c;其他区别自行百度。

所以&#xff1a;echarts cdn引入后页面中直接使用echart.init()等方法即可&#xff0c;添加原型链也可以&#xff0c;页面中还是this.echarts访问

项目中如果是使用了Eslint插件&#xff0c;会报错。所以主要还是看页面能不能正常运行

2.2&#xff1a; Gzip打包

  1.下载插件

  2.开启使用插件&#xff08;cli自带配置&#xff09;

下载插件

npm install compression-webpack-plugin

 需要查看下webpack.base中的配置中的输出配置&#xff0c;然后决定下载哪个版本的压缩插件

output: {path: config.build.assetsRoot,filename: &#39;[name].js&#39;, // 看这里publicPath: process.env.NODE_ENV &#61;&#61;&#61; &#39;production&#39;? config.build.assetsPublicPath: config.dev.assetsPublicPath}

查看官方文档会发现&#xff0c;最新版本的这个插件的filename换成了assetsname&#xff0c;所以我这里下载的时候后面加上版本号&#64;1.0.0-beta.1

(这里的vuecli为2.x&#xff0c;vuecli3.x的可以直接npm i compression-webpack-plugin)

然后config/index.js中把productionGzip: false&#xff0c;改为true即可

tips: 关闭sourcemap打包的速度可以提升很多

打包后你会发现&#xff0c;文件的下面会多一个后缀为.gz的文件&#xff0c;这个就是gzip格式的文件了&#xff0c;如果有这个文件&#xff0c;网站在和服务器连接的时候

会启用gzip格式文件&#xff0c;渲染速度就提升上去了。

 

ps&#xff1a;先写这么多&#xff0c;想起来会再补充。

19.01.20更  打包之后出现了gzip文件之后并不是就完事了。

线上环境&#xff0c;向服务器请求资源的时候&#xff0c;请求头里会有这么个东西 Accept-Encoding: gzip, deflate, br&#xff08;三种编码方式&#xff09;

如果服务端配置好了的话&#xff0c;在响应头中会有Content-Encoding: gzip 这里就说明服务端返回的文件编码方式为gzip的

也就是说 此处优化完成。

转:https://www.cnblogs.com/laine001/p/9959525.html



推荐阅读
  • 解析 HTTP 头 'Vary: Accept-Encoding' 的作用与重要性
    本文详细探讨了 'Vary: Accept-Encoding' HTTP 头的作用,即指导缓存系统(如代理服务器和 CDN)根据不同的编码需求存储和提供适当的资源版本,确保不同类型的客户端能够接收到适合自己的内容。 ... [详细]
  • 13、单向链表
    头文件:LinkList.hLinkList.cmain.cVS2 ... [详细]
  • 本文介绍了FTP(文件传输协议)的基础知识,包括其定义、如何通过TCP建立控制和数据连接,以及主动模式与被动模式的区别。FTP作为一种重要的文件传输协议,在互联网数据交换中扮演着关键角色。 ... [详细]
  • 本文总结了在使用React Native开发过程中遇到的一些常见问题及其解决方法,包括配置错误、依赖问题和特定组件的使用技巧。 ... [详细]
  • 这个报错出现在userDao里面,sessionfactory没有注入。解决办法:spring整合Hibernate使用test测试时要把spring.xml和spring-hib ... [详细]
  • 匠心|传统_2021年度总结 | 葡萄城软件开发技术回顾(上)
    匠心|传统_2021年度总结 | 葡萄城软件开发技术回顾(上) ... [详细]
  • 利用Selenium框架解决SSO单点登录接口无法返回Token的问题
    针对接口自动化测试中遇到的SSO单点登录系统不支持通过API接口返回Token的问题,本文提供了一种解决方案,即通过UI自动化工具Selenium模拟用户登录过程,从浏览器的localStorage或sessionStorage中提取Token。 ... [详细]
  • 本文详细对比了MySQL中的InnoDB与MyISAM两种存储引擎,从性能、事务处理能力、锁机制等多个维度进行了深入探讨,旨在为数据库设计者提供选择依据。 ... [详细]
  • 本文提供最新的CUUG OCP 071考试题库,包含70道题目,旨在帮助考生更好地准备Oracle Certified Professional (OCP) 考试。 ... [详细]
  • 四月个人任务:Linux基础操作与网络管理
    本文介绍了两项主要任务:编写一个脚本来检测192.168.1.0/24子网中当前在线的IP地址,以及如何在Linux系统中挂载Windows网络共享目录。通过具体步骤和代码示例,帮助读者理解和掌握相关技能。 ... [详细]
  • Python中调用Java代码的方法与实践
    本文探讨了如何在Python环境中集成并调用Java代码,通过具体的步骤和示例展示了这一过程的技术细节。适合对跨语言编程感兴趣的开发者阅读。 ... [详细]
  • VS Code 中 .vscode 文件夹配置详解
    本文介绍了 VS Code 中 .vscode 文件夹下的配置文件及其作用,包括常用的预定义变量和三个关键配置文件:launch.json、tasks.json 和 c_cpp_properties.json。 ... [详细]
  • UVA 401 - 镜像回文字符串
    本题探讨了如何判断一个字符串是否为普通回文、镜像回文或两者都不是。通过特定的字符映射表来实现字符串的镜像转换,并根据转换后的结果进行分类。 ... [详细]
  • Node.js模块化的优势及实践
    本文探讨Node.js模块化的重要性和具体实现方式,包括其带来的代码复用性增强、可维护性提升、以及如何有效避免命名冲突等问题。 ... [详细]
  • 本文详细介绍了如何在Vue项目中集成和配置XGPlayer视频插件,包括安装步骤、基本配置以及常见问题的解决方法。 ... [详细]
author-avatar
雨舒紫_586
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有