赞
踩
目录
前言
我们做项目时,会封装大量的公共组件,如果我们每一个都去在maints里面引入,非常麻烦不说,代码也不优雅。所以更好的方法就是自动注册全局组件,在组件中直接使用就好。
一种方法是自己在components文件夹下新建index.ts文件来导入并注册,最后在main.ts引入,具体方法见我之前的文章:http://t.csdn.cn/t0xbi
今天介绍的另一种非常牛的方法:Vite按需引入自定义组件unplugin-vue-components。
unplugin-vue-components插件可以在Vue文件中自动引入组件(包括项目自身的组件和各种组件库中的组件)。
这个插件好处在于,不需要自己去注册组件,不管是组件内的import还是main.ts里的注册!
此外!由于是按需引入,不像第一个方法那样整个components都全局注册,打包后体积也会更小!
1、安装插件
pnpm i unplugin-vue-components -D
2、vite中去使用:vite.config.ts中配置
- ...
- // 这里
- import Components from 'unplugin-vue-components/vite'
-
- export default ({ mode } : ConfigEnv) : UserConfig => {
- return {
- ...
- plugins : [
- vue(),
- ...
- // 这里
- Components({ dts : true }),
- ],
- }
- }
3、tsconfig.json中配置
配置完成后,运行代码,会在项目根目录自动生成一个components.d.ts文件。
需要在tsconfig.json的includes配置中加入此文件:
- {
- "compilerOptions": {
- "target": "ES2020",
- "module": "ES2020",
- "moduleResolution": "node",
- "strict": true,
- "jsx": "preserve",
- "sourceMap": true,
- "resolveJsonModule": true,
- "removeComments": true,
- "esModuleInterop": true,
- "baseUrl": ".",
- "noImplicitThis": true,
- "noEmitOnError": true,
- "paths": {
- "@/*": ["src/*"]
- },
- "lib": ["es2020", "dom","es5", "es6", "dom.iterable"],
- "skipLibCheck": true,
- "types": ["vite/client", "node"]
- },
- // 这里
- "include": ["src/**/*", "src/**/*.vue", "config/**/*", "./components.d.ts"],
- "exclude": ["node_modules", "dist", "dist-beta", "dist-production"]
- }
使用第三方UI组件库的时候也是用此插件实现按需引入,只需引入相关resolver函数,并在刚才的配置里添加就可以。
例如Vant:
其他UI组件库:
- // vite.config.ts
-
- ...
- import {
- ElementPlusResolver,
- AntDesignVueResolver,
- VantResolver,
- HeadlessUiResolver,
- ElementUiResolver
- } from 'unplugin-vue-components/resolvers'
- ...
-
-
-
- export default defineConfig({
- plugins: [
- Components({
- ...
- // ui库解析器
- resolvers: [
- ElementPlusResolver(),
- AntDesignVueResolver(),
- VantResolver(),
- HeadlessUiResolver(),
- ElementUiResolver()
- ]
- ...
- })
- ]
- })
觉得有用的话,望点赞一下哦~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。