Vue3.3 + TS4 ,自主打造媲美 ElementPlus 的组件库

80 阅读4分钟

Vue 3.3 + TypeScript 4 和 ElementPlus 定位不同,前者是前端开发框架与类型系统的组合,提供开发基础和结构,后者是基于 Vue 3 的组件库,提供预制 UI 组件,它们在不同方面各具优势:

Vue3.3 + TS4 ,自主打造媲美 ElementPlus 的组件库(完结)_优课it

Vue 3.3 + TypeScript 4 的优势

强大的框架能力

  • 性能提升:Vue 3.3 在 Vue 3 基础上进一步优化,采用 Proxy 实现响应式系统,相比 Vue 2 的 Object.defineProperty 性能更好,响应式数据更新更高效,启动速度更快,尤其是在处理大型数据集合时优势明显。
  • 组合式 API:Vue 3.3 强化了组合式 API,使代码逻辑的组织和复用更加灵活。开发者可以根据功能将代码拆分成不同的逻辑模块,提高代码的可读性和可维护性。例如在开发复杂的电商商品详情页时,将商品信息展示、评论列表加载、购买按钮逻辑等拆分成不同的组合式函数,方便管理和复用。
  • 更好的 TypeScript 集成:TypeScript 4 为 Vue 3.3 提供了强大的类型支持。在开发过程中,编译器可以进行静态类型检查,提前发现潜在的类型错误,减少运行时错误。比如在定义组件的 props 和 emits 时,可以明确指定类型,让代码更加健壮。

社区与生态优势

  • 庞大的社区支持:Vue 拥有活跃且庞大的社区,开发者可以在社区中找到丰富的学习资源、插件和工具。遇到问题时,也能快速获得帮助和解决方案。
  • 生态系统丰富:基于 Vue 的生态系统不断发展,有各种路由管理(Vue Router)、状态管理(Vuex/Pinia)等库,能满足不同项目的需求,提高开发效率。

ElementPlus 的优势

高效的 UI 开发

  • 丰富的组件库:ElementPlus 提供了大量高质量、美观且易用的预制 UI 组件,如按钮、表单、表格、弹窗等。开发者可以直接使用这些组件快速搭建界面,无需从头开始设计和开发,大大缩短了开发周期。
  • 统一的设计风格:组件遵循统一的设计规范和风格,使整个项目的界面保持一致性和专业性。这对于提升用户体验和品牌形象非常有帮助。

易于使用和定制

  • 简单的使用方式:ElementPlus 的组件使用简单,通过简单的配置和属性设置就能实现各种功能。例如,使用表格组件时,只需传入数据和列定义,就能快速生成一个功能齐全的表格。

  • 高度可定制:虽然提供了默认的样式和功能,但也支持高度定制。开发者可以根据项目需求对组件的样式、行为进行修改和扩展,以满足个性化的设计要求### 布局组件

  • Container 布局容器:用于搭建页面的整体布局结构,它包含了 <el-header>(页头)、<el-aside>(侧边栏)、<el-main>(主体内容)和 <el-footer>(页脚)等子组件,可以方便地创建出常见的页面布局,如侧边栏导航 + 主体内容的布局。

vue

<template>
  <el-container>
    <el-header>Header</el-header>
    <el-container>
      <el-aside width="200px">Aside</el-aside>
      <el-main>Main</el-main>
    </el-container>
    <el-footer>Footer</el-footer>
  </el-container>
</template>
  • Row 行与 Col 列:用于实现栅格布局,通过 span 属性可以灵活地控制每一列所占的宽度比例,从而实现响应式的页面布局。

vue

<template>
  <el-row>
    <el-col :span="12">Col 1</el-col>
    <el-col :span="12">Col 2</el-col>
  </el-row>
</template>

表单组件

  • Input 输入框:用于文本输入,支持多种类型的输入,如文本、密码、数字等,还可以设置占位符、禁用状态等属性。

vue

<template>
  <el-input v-model="inputValue" placeholder="请输入内容"></el-input>
</template>

<script setup>
import { ref } from 'vue';
const inputValue = ref('');
</script>
  • Select 选择器:提供下拉选择的功能,支持单选和多选,可自定义选项内容。

vue

<template>
  <el-select v-model="selectedValue" placeholder="请选择">
    <el-option label="选项1" value="option1"></el-option>
    <el-option label="选项2" value="option2"></el-option>
  </el-select>
</template>

<script setup>
import { ref } from 'vue';
const selectedValue = ref('');
</script>
  • Button 按钮:有多种类型(如默认、 primary、success 等)和尺寸可供选择,可用于触发各种操作。

vue

<template>
  <el-button type="primary">主要按钮</el-button>
  <el-button type="success">成功按钮</el-button>
</template>

数据展示组件

  • Table 表格:用于展示结构化的数据,支持分页、排序、筛选等功能,可自定义表头和表内容。

vue

<template>
  <el-table :data="tableData">
    <el-table-column prop="name" label="姓名"></el-table-column>
    <el-table-column prop="age" label="年龄"></el-table-column>
  </el-table>
</template>

<script setup>
import { ref } from 'vue';
const tableData = ref([
  { name: '张三', age: 20 },
  { name: '李四', age: 25 }
]);
</script>
  • Card 卡片:用于展示信息块,有标题、内容等区域,可用于展示文章摘要、商品信息等。

vue

<template>
  <el-card :header="header">
    <template #header>
      <div>卡片标题</div>
    </template>
    <div>卡片内容</div>
  </el-card>
</template>

<script setup>
import { ref } from 'vue';
const header = ref('');
</script>

反馈组件

  • Message 消息提示:用于在页面中弹出消息提示框,有不同的类型(如成功、警告、错误等),可设置自动关闭时间。

vue

<template>
  <el-button @click="showMessage">显示消息</el-button>
</template>

<script setup>
import { ref } from 'vue';
import { ElMessage } from 'element-plus';

const showMessage = () => {
  ElMessage.success('操作成功');
};
</script>
  • Dialog 对话框:用于显示重要信息或进行交互操作,可自定义标题、内容和按钮操作。

vue

<template>
  <el-button @click="dialogVisible = true">打开对话框</el-button>
  <el-dialog :visible.sync="dialogVisible" title="对话框标题">
    <template #content>
      <div>对话框内容</div>
    </template>
    <template #footer>
      <el-button @click="dialogVisible = false">取消</el-button>
      <el-button type="primary" @click="dialogVisible = false">确定</el-button>
    </template>
  </el-dialog>
</template>

<script setup>
import { ref } from 'vue';
const dialogVisible = ref(false);
</script>