关于vue的懒加载实践

最近在研讨vue的按需加载,好新鲜,之前彷佛并没有看到vue的官文内里有这一部分,是我看差了吗hahaha~尬笑~

实在只需要看vue-router官文就能够了,内里有懒加载的解说,而且附带了细致内容的衔接。一个一个看过去,很轻易操作了。
因而我看了一下。做个纪录,防备忘记了又要从新看一遍。
首先是运用的vue-cli构建的简朴项目
把过剩的东西都删掉,剩下一个HelloWord.vue
然后修正目次接口,新建一个pages目次,把HelloWord.vue放进去,components目次新建两个文件,test1.vue test2.vue。pages目次新建一个Page2.vue
那末就用这四个文件来测试一下

pages目次下:
HelloWord.vue
Page2.vue

components目次下:
test1.vue
test2.vue

修正路由router.js内容为:

import Vue from 'vue'
import Router from 'vue-router'
// 这里用到了webpack2的import()它会返回一个promise
let HelloWorld = () => import('@/pages/HelloWorld')
let Page2 = () => import('@/pages/Page2')
Vue.use(Router)
export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    },
    {
      path: '/page2',
      name: 'Page2',
      component: Page2
    }
  ]
})

然后改写HelloWord.vue和Page2.vue的组件引入情势,也是运用import(),
HelloWord.vue

<template>
  <div class="hello">
    <h1>HOME</h1>
    <router-link to="/page2">page2</router-link>
    <test1 :value="a">{{a}}</test1>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  components: {
    'test1': () => import('../components/test1')
  },
  data () {
    return {
      a: 'a test value.'
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
  font-weight: normal;
}
</style>

末了是依据webpack的分块加载情势修正webpack设置
在根目次下的build/webpack.prod.confj.js
增加new webpack.optimize.CommonsChunkPlugin(“common.js”)

《关于vue的懒加载实践》

然后打包就能够看到结果了。
打包后的文件:

《关于vue的懒加载实践》

那些[number].[hash].js的文件就是页面分块后的文件了,加载页面时出了那些大众模块,会对应只加载相应页面模块。而且缓存起来。所以很大程度上优化了页面的初始加载速率。

末了Page2.vue, test1.vue, test2.vue的内容就不贴了,实际上是很简朴是实例来的。只是为了测试按需加载随意写的罢了。

参考:
vue-router
webpack官文
示例博文

    原文作者:Maosheng
    原文地址: https://segmentfault.com/a/1190000013579235
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞