这是一个很头疼的问题,webpack极大的简化了前端自动化配置,但是打包速度实在是不如人意。在此之前,本人也尝试过网友的一些方法,但是,很多坑,跳进去就出不来,经过多个项目实践,现总结一下我用到的优化方式: cdn

原理: 上线依赖(通常放在package.json>dependencies)不参与打包构建,全部通过cdn引入

测试结果: 经过几个项目测验,能从40s以上降到 20s以下,至少节省一半打包时间。

// index.html
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> <script src="https://cdn.bootcss.com/vue/2.5.2/vue.js"></script>
<script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.js"></script>
<script src="https://cdn.bootcss.com/vuex/3.0.1/vuex.js"></script>
<script src="https://cdn.bootcss.com/echarts/4.0.4/echarts.js"></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script> <!--<script src="https://cdn.bootcss.com/vue/2.5.2/vue.min.js"></script>-->
<!--<script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.min.js"></script>-->
<!--<script src="https://cdn.bootcss.com/vuex/3.0.1/vuex.min.js"></script>-->
<!--<script src="https://cdn.bootcss.com/echarts/4.0.4/echarts.min.js"></script>-->
<!--<script src="https://unpkg.com/element-ui/lib/index.js"></script>-->
// build > webpack.base.conf.js
module.exports = {
context: path.resolve(__dirname, '../'),
entry: {
app: './src/main.js'
},
output: {
...
},
resolve: {
...
},
module: {
...
},
node: {
...
},
externals:{
// '引入资源名': '对外资源名'
'vue': 'Vue',
'vue-router': 'VueRouter',
'vuex':'Vuex',
'element-ui': 'ELEMENT',
'echarts': 'echarts',
},
}
// src > main.js
// import Vue from 'vue'
import App from './App'
// import ElementUI from 'element-ui';
// import 'element-ui/lib/theme-chalk/index.css';
import router from './router'
import store from './store' // Vue.use(ElementUI) import VueCountUp from 'vue-countupjs';
Vue.use(VueCountUp); // 其它组件可正常用Vue.use(xxx)
// src > router > index.js
// import Vue from 'vue'
// import Router from 'vue-router'
// Vue.use(Router) var router= new VueRouter({ // VueRouter,保持和 webpack.base.conf.js 中 externals 暴露的变量一致。
})
// src > store > index.js
// import Vue from 'vue'
// import Vuex from 'vuex'
// Vue.use(Vuex)

另外,在store中调用element的方式也有变化,element方法都会挂载到 ELEMENT 变量上。

  // actions.js 删除地址
async delAddress({commit,dispatch},id) {
let { msg } = await delAddress([id]);
if(msg === 'success'){
ELEMENT.Message({
showClose: true,
message: '删除成功',
type: "error"
})
dispatch("getAddressList");
}
},

vue打包速度优化的更多相关文章

  1. VUE打包上线优化

    1.将vue vue-router vuex 尽量使用CDN externals: { 'vue':'Vue', 'vue-router':'VueRouter', 'vuex':'Vuex', 'a ...

  2. webpack常用loader和plugin及打包速度优化

    优化 或 也可以用: 备用: 慎用的配置,用的不好会增加打包时间: 代码丑化插件:

  3. webpack 与 vue 打包体积优化

    webpack 与 vue 在使用vue开发时,遇到打包后单个文件太大,因而需要分包,不然加载时间太久.虽然尽可能减少请求次数,但是单个包太大也不是好事 思路 组件按需加载 vue-router 的懒 ...

  4. vue打包体积优化之旅

    webpack 与 vue 在使用vue开发时,遇到打包后单个文件太大,因而需要分包,不然加载时间太久.虽然尽可能减少请求次数,但是单个包太大也不是好事 思路 组件按需加载 vue-router 的懒 ...

  5. vue 打包优化

    vue 打包优化 路由按需加载 通过vue写的单页应用时,可能会有很多的路由引入.当打包构建的时候,javascript包会变得非常大,影响加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后 ...

  6. Vue打包优化之分析工具webpack-bundle-analyzer

    // 1. 安装 cnpm install webpack-bundle-analyzer --save-dev // 2. 在/build/webpack.prod.conf.js文件中引入 con ...

  7. 优化webpack打包速度方案

    基本原理要么不进行打包:要么缓存文件,不进行打包:要么加快打包速度. 不进行打包方案: 1,能够用CDN处理的用CDN处理,比如项目引入的第三方依赖jquery.js,百度编辑器 先进行打包或者缓存然 ...

  8. 【Vuejs】335-(超全) Vue 项目性能优化实践指南

    点击上方"前端自习课"关注,学习起来~ 前言 Vue 框架通过数据双向绑定和虚拟 DOM 技术,帮我们处理了前端开发中最脏最累的 DOM 操作部分, 我们不再需要去考虑如何操作 D ...

  9. 最全 webpak4.0 打包性能优化清单

    最全 webpak4.0 打包性能优化清单 webpack4.0如何进行打包优化? 无非是从两个角度进行优化,其一:优化打包速度,其二:优化打包体积,送你一份打包性能优化清单 1.使用loader的时 ...

随机推荐

  1. 146. LRU缓存机制

    题目描述 运用你所掌握的数据结构,设计和实现一个LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . 获取数据 get(key) - 如果密钥 (key ...

  2. python的类变量与实例变量以及__dict__属性

    关于Python的实例变量与类变量,先来看一段可能颠覆世界观的例子 #!/usr/bin/env python # -*- coding: utf_8 -*- # Date: 2016年10月10日 ...

  3. 【Mysql】MySQL event 计划任务

    一.查看event是否开启 show variables like '%sche%'; set global event_scheduler =1; 二. -- 设置时区并设置计划事件调度器开启,也可 ...

  4. 【协议】1、tcp,http,socket协议介绍

    1.TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上. ...

  5. Vim settings file on Windows

    Question: I can't believe I am typing a question for a simple thing like this but here we are. I can ...

  6. SQL Server 基本SELECT语句

    1.SELECT 和 FROM 语句 SELECT表示执行的是查询,接着需要更知道从哪边查询数据,FROM就是限制读取的数据在哪一个表或哪几个表中,这样就构成了一个基本语句. SELECT * FRO ...

  7. blfs(systemv版本)学习笔记-安装、配置和使用wpa_supplicant无线网络连接工具

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! wireless项目地址:http://www.linuxfromscratch.org/blfs/view/8.3/basic ...

  8. ES6学习之变量的解构赋值

    前言:什么是ES6?ECMAScript 6(简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.其中相比较于ES5新增了诸多的特性,并且ES6可转换为ES5的语法.- ...

  9. 获取url参数的方法(web)

    //获取url参数的方法(web) function GetQueryString(name) {     var reg = new RegExp("(^|&)" + n ...

  10. 移动端安卓手机不能识别border 0.5px解决方案

    由于安卓手机无法识别border 0.5px,因此我们要用0.5px的话必须要借助css3中的-webkit-transform:scale缩放来实现, 原理:将伪元素的宽设为200%,height设 ...