从实际项目深入理解ElementPlus的导入方式

简介: ElementPlus官网中介绍了三种导入方式,分别是完整导入、按需自动导入、(按需)手动导入。但在实际项目中还会有全局导入部分组件以及全局导入和按需导入组合的方式。本文通过github上几个高star数的项目来展示几种导入ElementPlus的方式,并对关键知识加以解释从而加深对这些导入方式的理解。

1.完整导入
本部分内容参考了element-plus官网和vue3.0-ts-admin项目。
正如官方文档所言,如果你对打包后的文件大小不是很在乎,那么使用完整的导入比较方便。
注意:完整导入后,使用的时候直接用
1.1 导入
main.ts文件
import { createApp } from 'vue'
import ElementPlus from "element-plus";
import "element-plus/lib/theme-chalk/index.css";
import App from './App.vue'

const app = createApp(App)

app.use(ElementPlus)
app.mount('#app')
复制代码
1.2 使用
如下代码中用到了el-menu,直接使用即可:


复制代码
2.按需自动导入
按需自动导入是推荐的导入方式。本节内容参考了vue3-music项目,您可以clone代码进行详细学习。
注意:如果采用自动按需导入的方式,则在使用组件的时候直接使用,不需要任何显示的导入语句。我们看一下按需导入的几个关键环节:
2.1 安装插件
m install -D unplugin-vue-components unplugin-auto-import
复制代码
2.2 vite配置文件
// vite.config.ts
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig({
// ...
plugins: [

// ...
AutoImport({
  resolvers: [ElementPlusResolver()],
}),
Components({
  resolvers: [ElementPlusResolver()],
}),

],
})
复制代码
unplugin-vue-components/vite是负责组件自动导入的,你可以在不导入和注册组件的情况下在模板中使用想要用到的组件。
unplugin-vue-components内置了流行UI组件库的resolvers(例如element-plus的),我们可以看一下unplugin-vue-components中element-plus的resolver部分源码:
// https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/element-plus.ts
// resolveComponent方法中有一段代码:
return {
from: element-plus/lib/el-${partialName},
sideEffects: getSideEffectsLegacy(partialName, options),
}
// getSideEffectsLegacy:
function getSideEffects(dirName: string, options: ElementPlusResolverOptionsResolved): SideEffectsInfo | undefined {
const { importStyle, ssr } = options
const themeFolder = 'element-plus/theme-chalk'
const esComponentsFolder = 'element-plus/es/components'

if (importStyle === 'sass')

return ssr ? `${themeFolder}/src/${dirName}.scss` : `${esComponentsFolder}/${dirName}/style/index`

else if (importStyle === true || importStyle === 'css')

return ssr ? `${themeFolder}/el-${dirName}.css` : `${esComponentsFolder}/${dirName}/style/css`

}
复制代码
看到这些代码也大概知道其作用了:引入组件和样式。
unplugin-auto-import/vite是用于自动导入API的。例如下面这段代码,可以在不引入ref的情况下使用ref
const count = ref(0)
const doubled = computed(() => count.value * 2)
复制代码
2.3 使用
下面代码中使用了ElScrollbar,既没有引入组件也没有引入样式:

    </ElScrollbar>
  </div>
</div>  
<PlayList/>  




相关文章
|
Web App开发 搜索推荐 安全
免费、好用、强大的开源笔记软件综合评测
笔记产品那么多,为什么要使用开源笔记软件? 开源笔记软件的优点和缺 优点 • 免费使用; • 可扩展性强,满足用户的个性化需求; • 数据更加安全,不用担心开发者突然跑路; 缺点 • 用户最好具备一定的技术,有些功能的使用可能需要用户自 下面是一些比较著名的开源笔记软件。绝大多数开源软件都是针对某款知名笔记软件的替代品,比如印象笔记/EverNote、Roam Research、Notion 等笔记软件的替代品。 具体包括,Joplin、 Turtle、 Laverna、 Boostnote、 Anytype、 Focalboard、 TiddlyWiki 、 Athens、 Trilium.
3513 0
免费、好用、强大的开源笔记软件综合评测
|
关系型数据库 TensorFlow 算法框架/工具
Docker技术概论(4):Docker CLI 基本用法解析
Docker技术概论(4):Docker CLI 基本用法解析
1328 1
|
监控 算法 Linux
高效可靠的处理器微体系结构性能测量技术
本次分享的主题是高效可靠的处理器微体系结构性能测量技术,由华东师范大学系统优化实验室的博士研究生刘通宇分享。主要分为两个部分: 1. 关于Core PMU的工作 2. ARM架构下的的内存带宽质量问题
366 0
|
设计模式 安全 Java
JAVA中的switch语句
JAVA中的switch语句
582 1
|
消息中间件 存储 网络协议
一文搞懂分布式消息中间件设计
一文搞懂分布式消息中间件设计
784 91
|
存储 监控 物联网
时序数据库的优势有哪些?
【5月更文挑战第13天】时序数据库的优势有哪些?
749 1
|
人工智能 编解码 搜索推荐
AI绘画入门:从小白到入门,轻松玩转AI作画
随着AI技术的不断发展,AI绘画已经不再是遥不可及的梦想,它正逐渐走入大众视野,成为了一种新兴的艺术创作形式。即使没有绘画基础,你也可以通过AI工具轻松创作出精美的作品。本文将带你从小白入门,学习AI绘画的基础知识和操作技巧,让你快速体验AI绘画的乐趣。
1383 0
|
SQL 前端开发 Java
五邑大学餐厅网络点餐系统设计与实现(包含完整源码详细开发过程)
五邑大学餐厅网络点餐系统设计与实现(包含完整源码详细开发过程)
|
前端开发
element-plus的自动导入和按需导入
element-plus的自动导入和按需导入
1543 0
|
数据可视化 Ubuntu JavaScript
Docker 管理面板:Fast Os Docker 简易安装教程
说起 Docker 管理面板第一时间会想到 Por­tainer, 今天介绍的是另一款管理面板 FAST OS DOCKER 同样也是 Docker 可视化管理面板工具,为用户提供了 docker 总览、本地容器管理、远程镜像拉取、服务器磁盘映射、服务器网络管理等功能,基本能满足中小型单位对容器管理的全部需求。https://ciilii.com/article/70
1920 0