vite+vue3配置自动化引入和按需生成全局组件

990 阅读2分钟

VUE3+Vite项目按需引入和Vant如何自动按需变成全局组件

实现方法

(1) 通过在main.js按需引入,并注册可实现(不推荐)

(2) 通过配置vite.config.js 实现

安装插件:

unplugin-vue-components (全局公共组件)

unplugin-auto-import(自动导入)

@vant/auto-import-resolver(vant的componets使用)

import Components from 'unplugin-vue-components/vite' //引入vite模块的
import AutoImport from 'unplugin-auto-import/vite' //引入vite模块的
import { VantResolver } from '@vant/auto-import-resolver'

AutoImport(vite.cofig.js的plugins配置自动导入模块)

解释

vue3的声明一个响应式变量:

未配置写法:

import {ref} from "vue"//组件手动引入vue的Ref方法;

const count=ref(0)

配置后写法(unplugin-auto-import):

const count=ref(1)//配置后就不用再组件引入Ref方法了

import AutoImport from 'unplugin-auto-import/vite'
plugins: [
    vue(),
    AutoImport({
      imports: [
        // 预设
        'vue',
        'vue-router',
        'pinia',
      ],
      resolvers: [],
      dts: 'src/auto-import.d.ts',//生成自动导入文件的位置
    }),
]

Components (自动导入组件)

解释

如vant组件库,按以前的做法都是在main.js引入并直接全局注册了;也不管项目是否用不用到所有组件

优化的做法

项目用到vant组件,在mian.js引入,并全局注册

缺点

每次使用都需要去main.js查看是否注册,需要手动按需引入注册

 unplugin-vue-components/vite (自动生成全局组件)
 @vant/auto-import-resolver(vant的componets使用)

Components配置

import Components from 'unplugin-vue-components/vite'
import AutoImport from 'unplugin-auto-import/vite'
import { VantResolver } from '@vant/auto-import-resolver'


  plugins: [
   AutoImport({
   ....
      resolvers: [VantResolver()],//AutoImport需要加入vantResover
  
    }),
    Components({
      resolvers: [VantResolver()], // 自定义组件的解析器
      dirs: ['src/components'], //自动导入组件-指定组件位置,默认是src/components
      extensions: ['vue'], // 组件的有效文件扩展名。
      dts: 'src/components.d.ts', // 配置文件生成位置-自动生成
      deep: true, // 搜索子目录
    }),
  ]

注: Components-dirs

dirs:配置的目录下的vue文件都会自动生成全局组件,无需在mian.js注册

pulgins代码如下

plugins: [
    vue(),
    AutoImport({
      imports: [
        // 预设
        'vue',
        'vue-router',
        'pinia',
      ],
      resolvers: [VantResolver()],
      dts: 'src/auto-import.d.ts',
    }),
    Components({
      resolvers: [VantResolver()], // 自定义组件的解析器
      dirs: ['src/components'], //自动导入组件-指定组件位置,默认是src/components
      extensions: ['vue'], // 组件的有效文件扩展名。
      dts: 'src/components.d.ts', // 配置文件生成位置-自动生成
      deep: true, // 搜索子目录
    }),
  ]

文档相关链接

[vant按需引入] vant-ui.github.io/vant/#/zh-C…

[Vite插件使用] cn.vitejs.dev/guide/using…

[NPM-unplugin-auto-import] www.npmjs.com/package/unp…

[NPM-unplugin-vue-components] www.npmjs.com/package/unp…