【问题标题】:vue and webpack doesn't do lazy loading in components?vue 和 webpack 不会在组件中进行延迟加载?
【发布时间】:2020-06-19 11:44:48
【问题描述】:

vue/webpack 中的惰性组件似乎是错误的,或者我错过了混淆术语。

要延迟加载组件,我使用关键字import,webpack 应该将该组件拆分为单独的捆绑包,当我需要加载该组件时,webpack 应该处理它并加载该组件。

但实际上,webpack 确实会生成单独的文件,但它还是会在应用程序运行时加载。这是出乎意料的。

例如,我只是创建了一个简单的 vue 应用程序(使用 cli)并浏览到 localhost:8080/,然后应该使用 import 关键字加载(默认情况下)关于页面。

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/about',
    name: 'About',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
  }
]

所以这是设计使然?我每次加载我现在不需要的文件(关于页面)。如果我有 200 页,什么时候我会获取 200 个我不需要的文件。结果如何?我是用import 键保存在这里的吗?

例如,在vuetify 中,他们使用import 键,但无论如何都会加载文件,而不是按需加载。

【问题讨论】:

标签: vue.js webpack


【解决方案1】:

如果您指的是来自 Vue CLI 的默认应用程序模板,那么您实际上是在观察 About 页面的 prefetch,旨在减少用户可能会访问的页面的加载时间。

如果你想避免这种性能优化,请使用这个 Vue 配置:

// vue.config.js
module.exports = {
  chainWebpack: config => {
    config.plugins.delete('prefetch')
    config.plugins.delete('preload')
  }
}

对于故障排除参考,Chrome 的网络面板包含一个Initiator column,它提供了一个可点击的链接,指向触发网络调用的源文件。在这种about.js 的情况下,源文件如下所示:

【讨论】:

    【解决方案2】:

    尝试使用vue-lazyload 可能会有所帮助,对于<script> 标签,您可以尝试async defer 它有助于网站速度优化

    【讨论】:

      【解决方案3】:

      您还可以使用 webpack “魔术” cmets (https://webpack.js.org/guides/code-splitting/#prefetchingpreloading-modules) 之一来避免组件预取,例如。

      components: {
        MyComponent: () => import(/* webpackPrefetch: false */ './MyComponent.vue')
      }
      

      请随时阅读以下有关此 Vue 优化的更多信息:

      https://vueschool.io/articles/vuejs-tutorials/lazy-loading-individual-vue-components-and-prefetching/

      【讨论】:

      • webpackPrefetch: false doesn't work -> false 应该是默认设置,但是当我尝试它时,我收到警告:“webpackPrefetch 预期为真或数字,但收到:假。(魔术评论)”
      猜你喜欢
      • 2017-07-10
      • 2018-03-15
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 2018-08-30
      • 2019-03-13
      • 2021-07-07
      • 2016-04-27
      相关资源
      最近更新 更多