You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel+Vue项目中懒加载vue-tel-input并从vendor.js排除

Laravel + Vue 拆分vue-tel-input为独立Chunk并排除出vendor.js

1. 确保无全局引入

  • 检查resources/js/app.js或其他全局入口文件,不要直接引入vue-tel-input或调用Vue.use(VueTelInput),全局引入会强制将其打包进vendor.js。

2. 调整Laravel Mix的Webpack配置

在webpack.mix.js中添加SplitChunks配置,强制将vue-tel-input拆分为独立chunk:

mix.js('resources/js/app.js', 'public/js')
   .vue()
   // 添加webpack配置
   .webpackConfig({
     optimization: {
       splitChunks: {
         chunks: 'all',
         cacheGroups: {
           // 单独拆分vue-tel-input
           'vue-tel-input': {
             test: /[\\/]node_modules[\\/]vue-tel-input[\\/]/,
             name: 'chunk-vue-tel-input',
             priority: 10, // 优先级高于默认的vendor缓存组
             enforce: true // 强制拆分
           }
         }
       }
     }
   });

3. 组件内正确异步引入

根据Vue版本选择对应写法:

Vue 3 写法(使用<script setup>)

<script setup>
import { defineAsyncComponent } from 'vue';

// 异步加载组件和样式,合并到同一个chunk
const VueTelInput = defineAsyncComponent(async () => {
  // 先加载样式
  await import(/* webpackChunkName: "chunk-vue-tel-input" */ 'vue-tel-input/vue-tel-input.css');
  // 再加载组件
  const { VueTelInput } = await import(/* webpackChunkName: "chunk-vue-tel-input" */ 'vue-tel-input');
  return VueTelInput;
});
</script>

<template>
  <VueTelInput v-model="phone" />
</template>

Vue 2 写法

<script>
export default {
  components: {
    // 异步注册组件
    VueTelInput: () => 
      Promise.all([
        import(/* webpackChunkName: "chunk-vue-tel-input" */ 'vue-tel-input'),
        import(/* webpackChunkName: "chunk-vue-tel-input" */ 'vue-tel-input/vue-tel-input.css')
      ]).then(([{ VueTelInput }]) => VueTelInput)
  },
  data() {
    return {
      phone: ''
    }
  }
}
</script>

<template>
  <VueTelInput v-model="phone" />
</template>

4. 清理缓存并重新编译

  • 删除public/js目录下的旧打包文件
  • 执行编译命令:npm run dev(开发环境)或npm run production(生产环境)

完成后,你会在public/js目录下看到chunk-vue-tel-input.js和对应的css文件,且vendor.js中不再包含vue-tel-input的代码,只有当使用该组件的页面加载时,才会异步加载这个chunk。

内容的提问来源于stack exchange,提问作者user1580394

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 19:44:54