vue打包优化

介绍一款神器webpack-bundle-analyzer(帮助我们查看各个模块的大小),只需要在webpack.prod.conf.js中加上下面一段,然后npm run build --report就可以了

const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
 module.exports = {
  plugins: [
    new BundleAnalyzerPlugin()
  ]
 }

第一步优化:图片懒加载   安装插件vue-lazyload  详情参考官网:https://github.com/hilongjw/vue-lazyload

在main.js中设置以下代码

import VueLazyload from 'vue-lazyload'

Vue.use(VueLazyload)

Vue.use(VueLazyload, {
  preLoad: 1.0,  //图片 设置显示比列 默认为1.3
  error: require('../static/img/timg.gif'),
  loading: require('../static/img/timg.gif'),
  attempt: 1
})

第二步优化:路由懒加载

 { 
      path: '/EnterpriseServe', 
      component: resolve => require(['@/pages/serve/EnterpriseServe.vue'],resolve),
      meta: {
        title: "企业服务",
        active: "/EnterpriseServe"
      }
    },
    { 
      path: '/PersonageServe', 
      component: resolve => require(['@/pages/serve/PersonageServe.vue'],resolve),
      meta: {
        title: "个人服务",
        active: "/PersonageServe"
      }
    },

第三步优化:在webpack.prod.conf.js配置uglifyjs-webpack-plugin(vue-cli已经帮我们装好了)

new UglifyJsPlugin({
      uglifyOptions: {
        compress: {
          unused: true, //是否去掉未关联的函数和变量
          warnings: false, //是否去除警告
          pure_funcs: ['console.log'], //去掉所有console语句
          reduce_vars: true //弄忘记了^_^
        }
      },
      sourceMap: true, //将错误消息位置映射到模块(会减慢编译速度)
      parallel: true //多通道并行处理
    }),

第四步优化:cdn外部加载第三方包

//在index.html中配置
<script src="https://cdn.bootcss.com/vue/2.5.16/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/echarts/3.7.1/echarts.min.js"></script>
<script src="https://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>

//在webpack.base.conf.js里配置

externals: {
    'vue' : 'Vue',
    'vue-router': 'VueRouter',
    'jquery': '$',
    'echarts': 'echarts'
 },


//这样写可以去掉import引入

第五步优化:懒加载子组件

shareTop: () => import('../components/share-top.vue').then(component => {
        component.default._Ctor = {}

        if (!component.default.attached) {
          component.default.backupMounted = component.default.mounted
        }
        component.default.mounted = function() {
          if (component.default.backupMounted) {
            component.default.backupMounted.call(this)
          }
        }
        component.default.attached = true
        return component
      }),

以上是个人的一些方法,希望能对大家有一点用处,也希望能和大家一起多多学习,共同进步

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值