t ui plus

基于vue3+ts+Element-plus二次封装基础组件文档;vue3基础组件文档

345
62
Vue

T-ui-Plus

Vue2 基于 Element-ui基础组件传送门

基于 Element-ui 二次封装基础组件地址

T-ui-Plus使用Demo项目

wocwin-admin是基于 Vue3.3、TypeScript、Vite4、Pinia、Element-Plus 开源的一套后台管理模板;此项目全面使用了T-ui-Plus二次封装基础组件库

介绍

基于 vue3+ ts+ Element-plus 二次封装组件

这是我在学习 Vue3 中基于Element-plus 二次封装基础组件文档,希望对你有用。可查看 详细组件案例文档 预览

vue3 t-ui-plus t-ui-plus npm

动态效果图

安装

建议您使用包管理器 (pnpm推荐yarnnpm) 安装 @wocwin/t-ui-plus

pnpm install @wocwin/t-ui-plus -S
yarn add @wocwin/t-ui-plus
npm install @wocwin/t-ui-plus    -S

全局注册使用

前提条件:使用项目必须全局注册 Element-plus组件库

// 在main.js中按下引入
import { createApp } from "vue";
import App from "./App.vue";
import ElementPlus from "element-plus";
import "element-plus/dist/index.css";
import "element-plus/theme-chalk/dark/css-vars.css";
import locale from "element-plus/es/locale/lang/zh-cn";
// element-plus图标
import * as ElementPlusIconsVue from "@element-plus/icons-vue";
import TuiPlus from '@wocwin/t-ui-plus'
import '@wocwin/t-ui-plus/index.css'
const app = createApp(App)
// 注册所有图标
  for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
    app.component(key, component);
  }
  // 注册ElementPlus
  app.use(ElementPlus, {
    locale // 语言设置
    // size: Cookies.get('size') || 'medium' // 尺寸设置
  });
app.use(TuiPlus)
app.mount('#app')

按需引入

// 在main.js中按下引入
import '@wocwin/t-ui-plus/index.css'
// 单个.vue文件引入
<script setup lang="ts">
  import {TDetail, TForm} from "@wocwin/t-ui-plus"
</script>

浏览器直接引入

直接通过浏览器的 HTML 标签导入 @wocwin/t-ui-plus,然后就可以使用全局变量 TuiPlus 了。

根据不同的 CDN 提供商有不同的引入方式, 我们在这里以unpkgjsDelivr 举例。 你也可以使用其它的 CDN 供应商。

unpkg

<head>
  <!-- 导入element-plus样式 -->
  <link rel="stylesheet" href="//unpkg.com/element-plus/dist/index.css" />
  <!-- 导入vue3 -->
  <script src="//unpkg.com/vue@3"></script>
  <!-- 导入element-plus -->
  <script src="//unpkg.com/element-plus"></script>

  <!-- 导入t-ui-plus样式 -->
  <link rel="stylesheet" href="//unpkg.com/@wocwin/t-ui-plus/index.css" />
  <!--导入t-ui-plus"  -->
  <script src="//unpkg.com/@wocwin/t-ui-plus"></script>
</head>

jsDelivr

<head>
  <!-- 导入element-plus样式 -->
  <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/element-plus/dist/index.css" />
  <!-- 导入vue3 -->
  <script src="//cdn.jsdelivr.net/npm/vue@3"></script>
  <!-- 导入element-plus -->
  <script src="//cdn.jsdelivr.net/npm/element-plus"></script>

  <!-- 导入t-ui-plus样式 -->
  <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/@wocwin/t-ui-plus/index.css" />
  <!--导入t-ui-plus"  -->
  <script src="//cdn.jsdelivr.net/npm/@wocwin/t-ui-plus"></script>
</head>

全部组件如下

组件名称 说明
TLayoutPage 布局页面
TLayoutPageItem 布局页面子项
TAdaptivePage 一屏组件(继承TTable 及 TQueryCondition 组件的所有属性、事件、插槽、方法)
TQueryCondition 条件查询组件
TTable 表格组件
Virtualized TTable 虚拟列表
TForm 表单组件
TSelectTable 下拉选择表格组件
Virtualized TSelectTable 下拉选择虚拟表格组件
TSelectIcon 图标选择组件
TSelect 下拉选择组件
TDetail 详情组件
TButton 防抖按钮组件
TStepWizard 步骤条组件
TTimerBtn 定时按钮组件
TModuleForm 模块表单/详情组件
TDatePicker 日期选择器组件
TRadio 单选组件
TCheckbox 多选组件
TChart 图表组件
TTabs 标签页组件
TSelectIcon 图标选择组件

Vue - Official (Volar)待验证

// 需要在使用的项目的tsconfig.json文件中添加以下
compilerOptions:{
  "types": [
      "@wocwin/t-ui-plus/index.d.ts"
    ],
}

自动按需导入 (暂不支持–待完善)

    1. 安装插件
    pnpm install -D unplugin-vue-components unplugin-auto-import @t-ui-plus/resolver
    
    
    1. 配置 vite.config.ts 或者配置 webpack(vue).config.js

vite.config.ts配置

  // 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'
  import { TuiPlusResolver } from '@t-ui-plus/resolver'

  export default defineConfig({
    // ...
    plugins: [
      // ...
      AutoImport({
        resolvers: [ElementPlusResolver()]
      }),
      Components({
        resolvers: [ElementPlusResolver(), TuiPlusResolver()]
      })
    ]
  })

vue.config.js配置

const { defineConfig } = require('@vue/cli-service')
  const AutoImport = require('unplugin-auto-import/webpack')
  const Components = require('unplugin-vue-components/webpack')
  const { ElementPlusResolver } = require('unplugin-vue-components/resolvers')
  const { TuiPlusResolver } = require('@t-ui-plus/resolver')

  module.exports = defineConfig({
    // ...
    configureWebpack: {
      plugins: [
        // ...
        AutoImport({
          resolvers: [ElementPlusResolver()]
        }),
        Components({
          resolvers: [TuiPlusResolver(), ElementPlusResolver()]
        })
      ]
    }
  })

安装依赖

注意: 本地环境版本最好安装 Node.js 18.x+pnpm 7.x+

npm install -g pnpm

# 安装依赖
pnpm install --registry=https://registry.npmjs.org/
>pnpm config get registry 查看当前指向源

# 如果安装依赖失败,可以尝试使用淘宝镜像  --registry=https://registry.npmmirror.com/
>pnpm config set registry https://registry.npmmirror.com/ 切换淘宝镜像源
>pnpm install

本地运行 vitepress 中组件文档

// docs项目(文档demo示例)基于vue3+vite项目
npm run docs:dev

Thanks to all the contributors

contributors

微信交流群

目前微信群已超过 200 人,需要加微信好友(请备注 T-ui-Plus),拉大家进群

微信二维码

Git 提交规范

  • ci: ci 配置文件和脚本的变动;
  • chore: 构建系统或辅助工具的变动;
  • fix: 代码 BUG 修复;
  • feat: 新功能;
  • perf: 性能优化和提升;
  • refactor: 仅仅是代码变动,既不是修复 BUG 也不是引入新功能;
  • style: 代码格式调整,可能是空格、分号、缩进等等;
  • docs: 文档变动;
  • test: 补充缺失的测试用例或者修正现有的测试用例;
  • revert: 回滚操作;