位置: IT常识 - 正文

vite + vue + ts 自动按需导入 Element Plus组件,并如何解决按需引入后ElMessage与ElLoading 的问题(找不到名称“ElMessage”问题。)

编辑:rootadmin
vite + vue + ts 自动按需导入 Element Plus组件,并如何解决按需引入后ElMessage与ElLoading 的问题(找不到名称“ElMessage”问题。)

推荐整理分享vite + vue + ts 自动按需导入 Element Plus组件,并如何解决按需引入后ElMessage与ElLoading 的问题(找不到名称“ElMessage”问题。),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

按需引入后ElMessage与ElLoading 的问题,两步优雅解决找不到名称“ElMessage”问题。不需要导入npm包,不需要下载任何东西,只要五行代码

目录

1、添加Element Plus组件库

1.2、下载

1.2、自动导入(官方推荐)

2、按需引入后ElMessage与ElLoading 的问题

2.1、解决问题

2.2、下面是分析原因,有兴趣可以看一下


1、添加Element Plus组件库1.1、下载

 npm

npm install element-plus --save

  yarn 

 yarn add element-plus 1.2、下载element-iconnpm install @element-plus/icons-vue

 element-icon也有自动导入的,但我感觉更麻烦,所有还是手动导入吧

手动导入方式:

import { Grid, RefreshRight } from "@element-plus/icons-vue";1.3、自动导入(官方推荐)

首先你需要安装unplugin-vue-components 和 unplugin-auto-import这两款插件

如果你是从vite+vue3+ts 手把手教你创建一个vue3项目  过来的,已经下过了,就不用再下了,只要添加有element注释的那行就行

npm install -D unplugin-vue-components unplugin-auto-import

 vite.config.ts文件

import { defineConfig } from 'vite'import vue from '@vitejs/plugin-vue'// 自动导入vue中hook reactive ref等import AutoImport from "unplugin-auto-import/vite"//自动导入ui-组件 比如说ant-design-vue element-plus等import Components from 'unplugin-vue-components/vite';//elementimport { ElementPlusResolver } from 'unplugin-vue-components/resolvers'// https://vitejs.dev/config/export default defineConfig({ plugins: [ vue(), //element按需导入 AutoImport({ //安装两行后你会发现在组件中不用再导入ref,reactive等 imports: ['vue', 'vue-router'], dts: "src/auto-import.d.ts", //element resolvers: [ElementPlusResolver()], }), Components({ //element resolvers: [ElementPlusResolver()], //默认存放位置 //dts: "src/components.d.ts", }), ],})2、按需引入后ElMessage与ElLoading 的问题2.1、解决问题

1.创建一个 Element-puls.d.ts 的文件(如果觉得名字不好,可以改,但要以.d.ts结束就行)

export {}declare global { const ElMessage:typeof import('element-plus')['ElMessage'] const ElLoading:typeof import('element-plus')['ElLoading'] }

 2.然后在 tsconfig.json 文件添加一行代码

{ ......."include": ["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue", //添加这行"Element-puls.d.ts"],}

vite + vue + ts 自动按需导入 Element Plus组件,并如何解决按需引入后ElMessage与ElLoading 的问题(找不到名称“ElMessage”问题。)

这样就完成了,看效果

2.2、下面是分析原因,有兴趣可以看一下

原因:它们与普通的标签组件不同,它们两都是可以运行在script上的API,而这个文件也是引入的API放到全局,然后可以在script使用的,在这文件里的是自动按需导入的,

可以看下源码的导出,node_modules >element-plus>global.d.ts

// ****注释的忽略,是为是能看到全部内容

可以看到这是分两个类型的,

一个是GlobalComponents(全局组件),

一个是 ComponentCustomProperties(组件自定义属性)

 

然而自动导入会在你的components.d.ts 文件 只导入 GlobalComponents(全局组件) ,

但不会导入 ComponentCustomProperties(组件自定义属性)

*****而我也是突然觉得,为啥不也导入组件自定义属性

那为什么不与一起呢?

       这是因为vite.config.ts里的配置,每次解析imports内的内容,放到dts里,会自动刷新src/auto-import.d.ts内的代码。

 

 知道原因了,那解决也不难了,

本文链接地址:https://www.jiuchutong.com/zhishi/288984.html 转载请保留说明!

上一篇:【2023-Pytorch-检测教程】手把手教你使用YOLOV5做电线绝缘子缺陷检测

下一篇:uniapp 前端获取微信小程序 URL Link (HTTPS调用)(uniapp获取window对象)

  • 小米平板5pro怎么双击亮屏(小米平板5pro怎么开机)

  • 微信完成群待办之后别人能看到吗(微信完成群待办后看不到后面)

  • 苹果tv遥控器如何配对(苹果tv遥控器如何拆开)

  • oppo充电符号变黄(oppo充电符号变白)

  • 手机如何打出删除线字(手机如何打出删除线字OPPO)

  • 抖音看自己的界面不同(抖音看自己的界面怎么看)

  • 华为nova7se可以无线充电吗(华为nova7se可以插内存卡吗)

  • mate30反向充电支持什么手机(mate30反向充电能给什么手机充)

  • 快手怎么保存图片到相册里(快手怎么保存图片带音乐的视频)

  • 淘宝默认好评加分吗(淘宝默认好评能加心吗)

  • iphone扩容有什么影响(iphone扩容有用吗)

  • 手机上怎么修改银行卡预留手机号(手机上怎么修改银行卡密码)

  • 手机里如何做表格(手机里如何做表格excel)

  • 小米8用4g为啥经常断网(小米8用4g为啥经常卡)

  • 手机淘宝会员名怎么改(手机淘宝会员的昵称是什么意思)

  • 安卓手机飘字怎么设置(怎么用手机屏幕飘字)

  • 苹果x怎么打电话就断网(苹果x怎么打电话录音)

  • word文档等宽两栏怎么设置(word文档等宽两栏怎么加分隔线)

  • 让QuickLook查看文件时可以选择和复制文字的方法(quicklylook)

  • 在web页面中直接播放rtsp视频流(在web页面中如果出现html语句)

  • vue项目使用定时器每隔几秒运行一次某方法(vue定时调用方法)

  • dedecms织梦tag+keyword调用相关文章(织梦cms官网)

  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设 电脑维修 湖南楚通运网络