Element Plus for Vue 3 入门教程

2023-11-06

Element Plus for Vue 3 入门教程

本文首发:《Element Plus for Vue 3 入门教程

Element Plus 是为了适配 Vue 3 对 Element UI 进行的重构。Vue 3.0 的这次大版本升级,对于第三方组件库来说是一件好事,那些已经修修补补无数次,还无法彻底解决的问题,在这次面向 Vue 3.0 重构时,一次性全部解决。

Element Plus 有那些升级?

Element Plus 使用 Vue 3 与 TypeScript开发,提供完整的类型定义文件,使用 Composition API 简化逻辑,降低耦合。

Element Plus 这一次使用 TypeScript + Composition API 来进行重构

  • 使用 TypeScript 开发
  • 使用 Vue 3 Teleport 新特性重构挂载类组件
  • 使用 Vue 3 Composition API 简化逻辑,降低耦合
  • 选择了 Day.js 这种更轻便通用的时间日期选择器解决方案
  • 使用 Lerna 维护和管理项目
  • 升级适配 async-validator,popperjs 等核心依赖
  • 完善 52 种国际化语言支持

Element Plus 与 Element UI 是什么关系?

Element Plus 是为了适配 Vue 3 对 Element UI 进行的重构,就如同 vue-next 对于 vue 一样,你可以理解为不同的大版本。

具体可参见 Element 的 README:https://github.com/ElemeFE/element/blob/dev/README.md

老 Element 项目是否可以平滑升级到 Vue 3 + Element Plus ?

Vue 从 2 到 3 的升级,本身就有部分 API 进行了调整,Element Plus 作为 Vue 3 的第三方库,也不可避免的在这些更新的细节上也进行了对应的修改。所以老项目升级到全新的 Element Plus 这些适配 Vue 3 的部分也就跟随一起要做简单的变动。不过大家不用担心,整体变动并不大。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5yJJ9BhK-1649305710235)(https://kalacloud.com/static/69c66d1cd077cb74a46fddb8a2f7cf67/be796/03-vue-element-plus-website.jpg “vue-element-plus-website”)]

Element Plus 相关生态

更多顶级 Vue 3 开源 UI 库测评,请看这篇:《12 款最棒 Vue 开源 UI 库测评 - 特别针对国内使用场景推荐

有关 Element Plus 与低代码开发工具卡拉云的对比测评,请见本文文尾。

怎么安装、引入 Element Plus?

vue-element-plus

上图为跟随本教程搭建的 Element Plus 完成界面

创建 Vue 3 环境和新项目

vue create element-plus
cd element-plus

选择 vue 3 让他自动安装,然后 cd 到 element-plus 项目目录,接下里的操作都在这个目录里完成。

使用 vue add 自动帮你选择适配的版本

vue add element-plus

vue-add-element-plus

选择完整引入,完成 Element-plus 引入。

特别注意:npm 的方式安装已经不再适用于 Element-plus v1.1.0-beta.21 版本,如果你使用这种方式,启动vue的时候会出现这种错误:ERROR Failed to compile with 2 errors,请更换成 vue add 安装。

安装按需引入插件 babel-plugin-import 我们可以只引入需要的组件,以便打包时减小体积。

npm install babel-plugin-import -D

项目创建完成、Element-plus 引入完成后,我们来修改代码,把 Element-plus 配置起来

首先修改 babel.config.js 配置文件,改为:

module.exports = {
  plugins: [
    [
      "import",
      {
        libraryName: 'element-plus',
        customStyleName: (name) => {
          return `element-plus/lib/theme-chalk/${name}.css`;
        },
      },
    ],
  ],
};

然后在 src 目录下新增文件夹 utils ,创建 elementPlus.js 文件,此配置文件用于说明 element plus 需要引入那些组件。

以下是组件的完整列表,大家可根据自己的需求增减:

import {
    ElAlert,
    ElAside,
    ElAutocomplete,
    ElAvatar,
    ElBacktop,
    ElBadge,
    ElBreadcrumb,
    ElBreadcrumbItem,
    ElButton,
    ElButtonGroup,
    ElCalendar,
    ElCard,
    ElCarousel,
    ElCarouselItem,
    ElCascader,
    ElCascaderPanel,
    ElCheckbox,
    ElCheckboxButton,
    ElCheckboxGroup,
    ElCol,
    ElCollapse,
    ElCollapseItem,
    ElCollapseTransition,
    ElColorPicker,
    ElContainer,
    ElDatePicker,
    ElDialog,
    ElDivider,
    ElDrawer,
    ElDropdown,
    ElDropdownItem,
    ElDropdownMenu,
    ElFooter,
    ElForm,
    ElFormItem,
    ElHeader,
    ElIcon,
    ElImage,
    ElInput,
    ElInputNumber,
    ElLink,
    ElMain,
    ElMenu,
    ElMenuItem,
    ElMenuItemGroup,
    ElOption,
    ElOptionGroup,
    ElPageHeader,
    ElPagination,
    ElPopconfirm,
    ElPopover,
    ElPopper,
    ElProgress,
    ElRadio,
    ElRadioButton,
    ElRadioGroup,
    ElRate,
    ElRow,
    ElScrollbar,
    ElSelect,
    ElSlider,
    ElStep,
    ElSteps,
    ElSubmenu,
    ElSwitch,
    ElTabPane,
    ElTable,
    ElTableColumn,
    ElTabs,
    ElTag,
    ElTimePicker,
    ElTimeSelect,
    ElTimeline,
    ElTimelineItem,
    ElTooltip,
    ElTransfer,
    ElTree,
    ElUpload,
    ElInfiniteScroll,
    ElLoading,
    ElMessage,
    ElMessageBox,
    ElNotification,
} from 'element-plus';

export const components = [
    ElAlert,
    ElAside,
    ElAutocomplete,
    ElAvatar,
    ElBacktop,
    ElBadge,
    ElBreadcrumb,
    ElBreadcrumbItem,
    ElButton,
    ElButtonGroup,
    ElCalendar,
    ElCard,
    ElCarousel,
    ElCarouselItem,
    ElCascader,
    ElCascaderPanel,
    ElCheckbox,
    ElCheckboxButton,
    ElCheckboxGroup,
    ElCol,
    ElCollapse,
    ElCollapseItem,
    ElCollapseTransition,
    ElColorPicker,
    ElContainer,
    ElDatePicker,
    ElDialog,
    ElDivider,
    ElDrawer,
    ElDropdown,
    ElDropdownItem,
    ElDropdownMenu,
    ElFooter,
    ElForm,
    ElFormItem,
    ElHeader,
    ElIcon,
    ElImage,
    ElInput,
    ElInputNumber,
    ElLink,
    ElMain,
    ElMenu,
    ElMenuItem,
    ElMenuItemGroup,
    ElOption,
    ElOptionGroup,
    ElPageHeader,
    ElPagination,
    ElPopconfirm,
    ElPopover,
    ElPopper,
    ElProgress,
    ElRadio,
    ElRadioButton,
    ElRadioGroup,
    ElRate,
    ElRow,
    ElScrollbar,
    ElSelect,
    ElSlider,
    ElStep,
    ElSteps,
    ElSubmenu,
    ElSwitch,
    ElTabPane,
    ElTable,
    ElTableColumn,
    ElTabs,
    ElTag,
    ElTimePicker,
    ElTimeSelect,
    ElTimeline,
    ElTimelineItem,
    ElTooltip,
    ElTransfer,
    ElTree,
    ElUpload,
]

export const plugins = [
    ElInfiniteScroll,
    ElLoading,
    ElMessage,
    ElMessageBox,
    ElNotification,
]

修改 main.js 文件:

import { createApp } from 'vue'
import App from './App.vue'

import {
    components,
    plugins
} from './utils/elementPlus.js'

const app = createApp(App)
components.forEach(component => {
    app.component(component.name, component)
})

plugins.forEach(plugin => {
    app.use(plugin)
})
app.mount('#app')

最后,修改 components/HelloWorld.vue 文件,我们把主要的元素放在页面上

<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
    <el-row>
  <el-button>默认按钮</el-button>
  <el-button type="primary">主要按钮</el-button>
  <el-button type="success">成功按钮</el-button>
  <el-button type="info">信息按钮</el-button>
  <el-button type="warning">警告按钮</el-button>
  <el-button type="danger">危险按钮</el-button>
</el-row>

<el-row>
  <el-button plain>朴素按钮</el-button>
  <el-button type="primary" plain>主要按钮</el-button>
  <el-button type="success" plain>成功按钮</el-button>
  <el-button type="info" plain>信息按钮</el-button>
  <el-button type="warning" plain>警告按钮</el-button>
  <el-button type="danger" plain>危险按钮</el-button>
</el-row>

<el-row>
  <el-button round>圆角按钮</el-button>
  <el-button type="primary" round>主要按钮</el-button>
  <el-button type="success" round>成功按钮</el-button>
  <el-button type="info" round>信息按钮</el-button>
  <el-button type="warning" round>警告按钮</el-button>
  <el-button type="danger" round>危险按钮</el-button>
</el-row>

<el-row>
  <el-button icon="el-icon-search" circle></el-button>
  <el-button type="primary" icon="el-icon-edit" circle></el-button>
  <el-button type="success" icon="el-icon-check" circle></el-button>
  <el-button type="info" icon="el-icon-message" circle></el-button>
  <el-button type="warning" icon="el-icon-star-off" circle></el-button>
  <el-button type="danger" icon="el-icon-delete" circle></el-button>
</el-row>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  props: {
    msg: String
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
  margin: 40px 0 0;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
</style>

扩展阅读:《最好用的 7 款 Vue 富文本编辑器

Element Plus 卡拉云对比

Element Plus 是 Vue 3 的一个组件库,所以使用 Element Plus 首先要搭 Vue 3 开发环境,然后再引入 Element Plus,然后按照文档的说明,根据自己的需求进行二次开发。使用 Element Plus 相对来说对前端技能要求较高。

卡拉云是新一代低代码开发平台,与 Element Plus 相比,卡拉云的优势在于不用搭建 Vue 环境,直接注册即可开始使用。开发者完全不用处理任何前端问题,只需简单拖拽,即可快速生成所需组件,可一键接入包括 MySQL 在内的常见数据库及 API,根据引导简单几步打通前后端,数周的开发时间,缩短至 1 小时。

拖拽生成组件,一秒连接前后端展示数据

卡拉云搭建的数据看板 DEMO:https://my.kalacloud.com/apps/ykxauq3u6r/published

使用卡拉云 10 分钟内搭建的「天气预报数据看板」,简单拖拽,几行代码即可快速完成,搭建即发布,可一键分享给其他同学一起使用。立即注册使用卡拉云。

扩展阅读:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Element Plus for Vue 3 入门教程 的相关文章

随机推荐

  • 第一讲:反事实因果分析框架(1)

    1 因果关系的定义 举个栗子 背景 小明是个土财主 有一天他打了佣人一棍子 第二天佣人死了 问题 打的那棍子是造成佣人死亡的原因么 在因果推断中 是否打人是处理变量 是否死亡是响应变量 影响我们判断的乱七八糟的其他因素是混淆变量 如果我们认
  • Spark实时数据流分析与可视化:实战指南【上进小菜猪大数据系列】

    上进小菜猪 沈工大软件工程专业 爱好敲代码 持续输出干货 本文介绍了如何利用Apache Spark技术栈进行实时数据流分析 并通过可视化技术将分析结果实时展示 我们将使用Spark Streaming进行数据流处理 结合常见的数据处理和可
  • [每日习题]年终奖(动态规划) 迷宫问题(DFS+回溯)——牛客习题

    hello 大家好 这里是bang bang 本篇记录2道牛客习题 年终奖 简单 迷宫问题 中等 如有需要 希望能有所帮助 目录 1 年终奖 2 迷宫问题 1 年终奖 年终奖 牛客题霸 牛客网 nowcoder com 描述 小东所在公司要
  • auto_copy.py

    coding utf 8 author DT date 20190118 import os import os path import shutil import time datetime def del file path for f
  • k8s1.23.15版本二进制部署/扩容及高可用架构详解

    前言 众所周知 kubernetes在2020年的1 20版本时就提出要移除docker 这次官方消息表明在1 24版本中彻底移除了dockershim 即移除docker 但是在1 24之前的版本中还是可以正常使用docker的 考虑到可
  • kali虚拟机安装出现无法定位软件包,无法找到任何软件包的解决方法

    问题如下 出现这种安装问题 原因是长时间未打开kali虚拟机 解决方法 输入命令 sudo apt update 注 在root或非root用户下都可以 然后继续安装就可以了
  • 【NLP】第 8 章:使用基于注意力的神经网络构建聊天机器人

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • python爬虫正则表达式

    博主简介 博主是一个大二学生 主攻人工智能领域研究 感谢缘分让我们在CSDN相遇 博主致力于在这里分享关于人工智能 C python 爬虫等方面的知识分享 如果有需要的小伙伴 可以关注博主 博主会继续更新的 如果有错误之处 大家可以指正 专
  • 蓝桥杯常用模板

    文章目录 蓝桥杯算法模板 最大公约数 GCD 拓展欧几里得 EXGCD 最小公倍数 LCM 多个数的GCD和LCM 判断闰年 整数快速幂 用于快速求幂 快速幂取模 快速乘 O logn 对于一个大数最后结果只需要部分结尾数字 则在过程中取模
  • (十一)javascript内置对象之Math内置对象

    内置对象就是 js 语言自带的一些对象 这些对象可供开发者使用 这些内置对象提供了一些常用的或是最基本而必要的一些功能 内置对象最大的优点是帮助我们快速开发 javascript提供的常用的内置对象有 Math Date Array Str
  • matlab plot 连续曲线,Matlab怎么画出连续的曲线?

    因为你是在for循环中画的 所以循环一次算出一个点 matlab就画一个点 你可以在循环完毕后在使用plot画图 clear all clc i 1 脚标i L1 1 L2 1 L 1 C1 1 C2 1 C 1 m 0 5 w 50 a
  • C++期末复习运算符混淆---打妖怪

    7 2 打妖怪 低级错误 运算符混淆问题 实验1 第二题 话说孙大圣保唐僧西天取经 路上遇到一妖怪 妖怪共有 v 滴血 大圣每打一棒就能使妖怪失去 h 滴血 妖怪一旦没血就会立即死去 大圣打 n 棒刚好将妖怪打死 请编写程序 输入 v 和
  • 代码题: 看代码说结果, 事件循环 + async 函数的

    1 基本的 async await 和事件循环 console log 1 async function asyncFunc console log 2 await Promise resolve console log 3 asyncFu
  • Simulated Binary Crossover(SBX)的学习

    最近在做作业遇到一个Dejong s fifth function的multi modal的问题 用传统的GA方法尝试了很多次 的确没办法搞定 随机很多次也不一定在global optimum的地方得到一次解 前几天去导师家里的路上谈到这个
  • 什么是 MATLAB(矩阵实验室)?工作、功能和应用

    MATLAB 被 MathWorks 定义为专有软件应用程序和编程语言 可促进复杂的数据分析任务 例如算法实施 与其他应用程序交互以及操作数据矩阵 本文介绍了 MATLAB 的用途 其关键概念以及 2022 年的用例 什么是 MATLAB
  • 【解决】TypeError: this.$refs.treeRefs.xxx is not a function

    问题 使用refs触发子组件内方法时报 TypeError this refs treeRefs xxx is not a function 解决 经查看 发现子组件被放在了v for循环体内 示例代码如下
  • 虚拟机上部署K8S集群

    虚拟机上部署K8S集群 安装VM Ware 安装Docker 安装K8S集群 安装kubeadm 使用kubeadm引导集群 安装VM Ware 参考 http www taodudu cc news show 2034573 html a
  • 推荐系统:Wide & Deep模型解析

    1 Wide Deep模型介绍 经典推荐深度模型 Wide Deep 对应的论文 Wide Deep Learning for Recommender Systems 链接 arxiv Wide Deep的模型架构如下图所示 可以看到Wid
  • 运维技能风向标

    运维介绍 运维是一个融合多学科 网络 系统 开发 安全 应用架构 存储等 的综合性技术岗位 从最初的网络管理 网管 发展到现在的系统运维工程师 网络运维工程师 安全运维工程师 运维开发工程师等 可以看出 运维的分工一直在细化 并且对综合技能
  • Element Plus for Vue 3 入门教程

    本文首发 Element Plus for Vue 3 入门教程 Element Plus 有那些升级 Element Plus 与 Element UI 是什么关系 老 Element 项目是否可以平滑升级到 Vue 3 Element