热门标签 | 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



推荐阅读
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • React 小白初入门
    推荐学习:React官方文档:https:react.docschina.orgReact菜鸟教程:https:www.runoob.c ... [详细]
  • 电信网为不能访问联通服务器的网站_老板说网站慢,我们总结了三大阶段提升性能...
    作者:李平来源:https:www.cnblogs.comleefreemanp3998757.html前言在前一篇随笔《大型网站系统架构的演化》中&# ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 微信民众号商城/小顺序商城开源项目介绍及使用教程
    本文介绍了一个基于WeiPHP5.0开发的微信民众号商城/小顺序商城的开源项目,包括前端和后端的目录结构,以及所使用的技术栈。同时提供了项目的运行和打包方法,并分享了一些调试和开发经验。最后还附上了在线预览和GitHub商城源码的链接,以及加入前端交流QQ群的方式。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • ReactJSUIAnt设计空组件原文:https://w ... [详细]
  • document .ready中的函数怎么被按钮调用? ... [详细]
  • 前言:原本纠结于Web 模板,选了Handlebars。后来发现页面都是弱逻辑的,不支持复杂逻辑表达式。几乎要放弃之际,想起了Javascript中eval函数。虽然eval函 ... [详细]
  • .babelrc是用来设置转码规则和插件的,这种文件在window上无法直接创建,也无法在HBuilder中创建,甚至无法查看,但可以在sublimetext中创建、查看并编辑。当 ... [详细]
  • 认识Vue关于Vue的描述有不少,不外乎都会拿来与Angular和React对比,同样头顶MVVM双向数据驱动设计模式光环的Angular自然被对比的最多,但到目前为止,Angul ... [详细]
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社区 版权所有