当前位置:   article > 正文

Vue3+Vite神器:按需引入自定义组件unplugin-vue-components_unplugin-vue-components/vite

unplugin-vue-components/vite

目录

前言

简介

使用步骤

第三方UI库用法


前言

我们做项目时,会封装大量的公共组件,如果我们每一个都去在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中配置

  1. ...
  2. // 这里
  3. import Components from 'unplugin-vue-components/vite'
  4. export default ({ mode } : ConfigEnv) : UserConfig => {
  5. return {
  6. ...
  7. plugins : [
  8. vue(),
  9. ...
  10. // 这里
  11. Components({ dts : true }),
  12. ],
  13. }
  14. }

3、tsconfig.json中配置

配置完成后,运行代码,会在项目根目录自动生成一个components.d.ts文件。

需要在tsconfig.json的includes配置中加入此文件:

  1. {
  2. "compilerOptions": {
  3. "target": "ES2020",
  4. "module": "ES2020",
  5. "moduleResolution": "node",
  6. "strict": true,
  7. "jsx": "preserve",
  8. "sourceMap": true,
  9. "resolveJsonModule": true,
  10. "removeComments": true,
  11. "esModuleInterop": true,
  12. "baseUrl": ".",
  13. "noImplicitThis": true,
  14. "noEmitOnError": true,
  15. "paths": {
  16. "@/*": ["src/*"]
  17. },
  18. "lib": ["es2020", "dom","es5", "es6", "dom.iterable"],
  19. "skipLibCheck": true,
  20. "types": ["vite/client", "node"]
  21. },
  22. // 这里
  23. "include": ["src/**/*", "src/**/*.vue", "config/**/*", "./components.d.ts"],
  24. "exclude": ["node_modules", "dist", "dist-beta", "dist-production"]
  25. }

第三方UI库用法

使用第三方UI组件库的时候也是用此插件实现按需引入,只需引入相关resolver函数,并在刚才的配置里添加就可以。

例如Vant

 其他UI组件库:

  1. // vite.config.ts
  2. ...
  3. import {
  4. ElementPlusResolver,
  5. AntDesignVueResolver,
  6. VantResolver,
  7. HeadlessUiResolver,
  8. ElementUiResolver
  9. } from 'unplugin-vue-components/resolvers'
  10. ...
  11. export default defineConfig({
  12. plugins: [
  13. Components({
  14. ...
  15. // ui库解析器
  16. resolvers: [
  17. ElementPlusResolver(),
  18. AntDesignVueResolver(),
  19. VantResolver(),
  20. HeadlessUiResolver(),
  21. ElementUiResolver()
  22. ]
  23. ...
  24. })
  25. ]
  26. })

觉得有用的话,望点赞一下哦~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/119064
推荐阅读
相关标签
  

闽ICP备14008679号