当前位置: 首页 > news >正文

vue-cli如何正确关闭prefetchprefetch和preload

webpack4.6.0+新增了对prefetching和preloading的支持

通过在声明导入时使用内联指令可以让webpack输出“Resource Hint”,告诉浏览器

import(/* webpackPrefetch: true */ 'LoginModal');
import(/* webpackPreload: true */ 'ChartingLibrary');
  • prefetch:用来告诉浏览器在页面加载完成后,利用空闲时间提前获取用户未来可能会访问的内容
  • preload:用来指定页面加载后很快会被用到的资源,所以在页面加载的过程中,我们希望在浏览器开始主体渲染之前尽早 preload

路由懒加载

结合 Vue 的异步组件和 Webpack 的代码分割功能,轻松实现路由组件的懒加载

const Foo = () => import('./Foo.vue')

const router = new VueRouter({
  routes: [
    { path: '/foo', component: Foo }
  ]
})

可以通过内联指令设置chunkname将所有组件都打包在同个异步块 (chunk) 中

const Foo = () => import(/* webpackChunkName: "group-foo" */ './Foo.vue')
const Bar = () => import(/* webpackChunkName: "group-foo" */ './Bar.vue')
const Baz = () => import(/* webpackChunkName: "group-foo" */ './Baz.vue')

如何关闭prefetch

Prefetch 链接将会消耗带宽。如果你的应用很大且有很多 async chunk,而用户主要使用的是对带宽较敏感的移动端,那么你可能需要关掉 prefetch 链接并手动选择要提前获取的代码区块

因为项目中用了路由懒加载,而且组件数量比较多,所以想着关掉会让首屏加载快些

// vue.config.js
module.exports = {
  chainWebpack: config => {
    // 移除 prefetch 插件
    config.plugins.delete('prefetch')

    // 或者
    // 修改它的选项:
    config.plugin('prefetch').tap(options => {
      options[0].fileBlacklist = options[0].fileBlacklist || []
      options[0].fileBlacklist.push(/myasyncRoute(.)+?\.js$/)
      return options
    })
  }
}

然而

设置之后没有效果,preload和prefetch后面有个index,于是就换下名字再次尝试

config.plugins.delete('prefetch-index').delete('preload-index');

    最后终于生效了,为什么会这样呢,看看源码怎么写的
    node_modules/@vue/cli-service/lib/config/app.js

    webpackConfig
      .plugin(`preload-${name}`)
         .use(PreloadPlugin, [{
           rel: 'preload',
           includeHtmlNames: [filename],
           include: {
             type: 'initial',
             entries: [name]
           },
           fileBlacklist: [/\.map$/, /hot-update\.js$/]
         }])
    
    webpackConfig
      .plugin(`prefetch-${name}`)
        .use(PreloadPlugin, [{
          rel: 'prefetch',
          includeHtmlNames: [filename],
          include: {
            type: 'asyncChunks',
            entries: [name]
          }
        }])
    })
    

    vue-cli如何正确关闭prefetch - 灰信网(软件开发博客聚合)

    相关文章:

  • go命令使用
  • 【40】单片机编程核心技巧:static 的重要作用
  • Retrofit中scalars转换html为字符串
  • 在树莓派上如何使用 Vosk检测唤醒词
  • 【Java SE】final关键字
  • mayfly-go开源的一站式 Web 管理平台
  • K8S-etcd备份还原操作手册
  • 网络华为HCIA+HCIP NFV
  • 996引擎-接口测试:消息Tips
  • 【leetcode hot 100 17】电话号码的字母组合
  • GCC 预定义宏:解锁编译器的隐藏信息
  • 使用Docker运行 Ollama本地部署 DeepSeek 模型并用Dify实现可视化操作
  • 使用DeepSeek查找资料:C++ sprintf % 种类
  • 视频剪辑行业的现状与进阶之路:一个双视角分析
  • 《Android 13深度定制:手势拦截技术实现SystemUI状态栏智能折叠方案》
  • Java-校验值区间值的连续性
  • 每天学一个 Linux 命令(6):shutdown
  • Java八股
  • 【设计模式】三十二、策略模式
  • buu-bjdctf_2020_babystack2-好久不见51
  • 消息人士称泽连斯基已启程前往土耳其
  • 哪种“网红减肥法”比较靠谱?医学专家和运动专家共同解答
  • 车载抬头显示爆发在即?业内:凭借市场和产业链优势,国内供应商实现反超
  • 古巴外长谴责美国再次将古列为“反恐行动不合作国家”
  • 日本广岛大学一处拆迁工地发现疑似未爆弹
  • 哈佛新论文揭示 Transformer 模型与人脑“同步纠结”全过程!AI也会犹豫、反悔?