Vue3导入Elementplus时组件无法加载的情况及解决
作者:AXISAGA
这篇文章主要介绍了Vue3导入Elementplus时组件无法加载的情况及解决方案,具有很好的参考价值,希望对大家有所帮助
Vue3导入Elementplus时组件无法加载
在使用Vue3结合Elementplus做组件导入时,出现了组件无法显示,只在网页中出现了组建template中涉及ui中的相关字符串,或者页面中完全没有显示的情况。
经排错,是由于main.js文件中完整导入时,自作主张将Vue3自带的生成段和ElementPlus提供的部分注册段结合了。
app.use(ElementPlus) createApp(App).mount('#app')
严格按照ElementPlus提供的写法
const app = createApp(App) app.use(ElementPlus) app.mount('#app')
即可顺利显示组件。
倒推后提出猜想
上面一种写法中app的声明是ElementPlus注册之后才创建的,也就是说Element注册被调用时,注册到了一个还没有产生,并不存在的“app”上,这样的注册显然是空的无效的。
而后产生的app也不会被之前的注册影响。
后一种写法,在创建完app后,先将Element注册于其上,再mount进App.vue中,这就保证了app注册进Vue主文件中时,一定是注册好Element的。
这个案例提供的思考应该不仅限于此,可以说,Vue3 CLI自带的main.js虽然简化了app全局注册的写法,但是在需要注册其他绑定app的依赖时,都需要采用后者的写法。
vue3按需导入element-plus报错Module not found: Error: Can‘t resolve‘element-plus/es/components/button/
由于element-plus版本更新迭代较快,直接安装npm install element-plus -D
会默认安装最新版本,使用时可能会报错:
Module not found: Error: Can't resolve 'element-plus/es/components/button/style/css'
可以安装这个稳定的版本:
npm i element-plus@1.3.0-beta.5 -D
就可以直接在vue文件中调用了:
<template> <el-row class="mb-4"> <el-button>Default</el-button> <el-button type="primary">Primary</el-button> <el-button type="success">Success</el-button> <el-button type="info">Info</el-button> <el-button type="warning">Warning</el-button> <el-button type="danger">Danger</el-button> </el-row> </template>
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。