Vue3.3 + TS4,自主打造媲美 ElementPlus 的组件库(无秘分享)

1. 项目初始化

首先,我们需要创建一个基于 Vite 的 Vue 3 + TypeScript 项目。 bash

perl 复制代码
perl
代码解读
复制代码
npm init vite@latest my-component-library -- --template vue-ts cd my-component-library

2. 项目结构搭建

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

为了更好地组织代码,我们可以按照以下结构来搭建项目: plaintext

css 复制代码
css
代码解读
复制代码
my-component-library/ ├── src/ │   ├── components/  # 组件目录 │   │   ├── Button/  # 示例组件 │   │   │   ├── Button.vue │   │   │   ├── index.ts │   ├── index.ts     # 组件库入口文件 ├── vite.config.ts   # Vite 配置文件 ├── package.json     # 项目依赖和脚本配置

3. 配置 Vite

vite.config.ts 中进行一些基本的配置,例如别名配置和构建配置: typescript

javascript 复制代码
javascript
代码解读
复制代码
import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; import path from 'path'; export default defineConfig({   plugins: [vue()],   resolve: {     alias: {       '@': path.resolve(__dirname, 'src'),     },   },   build: {     lib: {       entry: path.resolve(__dirname, 'src/index.ts'),       name: 'MyComponentLibrary',       fileName: (format) => `my-component-library.${format}.js`,     },     rollupOptions: {       external: ['vue'],       output: {         globals: {           vue: 'Vue',         },       },     },   }, });

4. 创建组件

以创建一个简单的按钮组件为例:

src/components/Button/Button.vue

vue

xml 复制代码
xml
代码解读
复制代码
<template>   <button :class="['my-button', { 'my-button--primary': type === 'primary' }]" @click="handleClick">     <slot></slot>   </button> </template> <script setup> import { defineProps, defineEmits } from 'vue'; const props = defineProps<{   type?: 'primary' | 'default'; }>(); const emits = defineEmits(['click']); const handleClick = () => {   emits('click'); }; </script> <style scoped> .my-button {   padding: 8px 16px;   border: none;   cursor: pointer; } .my-button--primary {   background-color: #007bff;   color: white; } </style>

src/components/Button/index.ts

typescript

css 复制代码
css
代码解读
复制代码
import { App } from 'vue'; import Button from './Button.vue'; // 定义 install 方法,用于 Vue.use() 安装组件 Button.install = (app: App) => {   app.component('MyButton', Button); }; export default Button;

5. 组件库入口文件

src/index.ts 中导出所有组件: typescript

javascript 复制代码
javascript
代码解读
复制代码
import { App } from 'vue'; import Button from './components/Button'; const components = [Button]; const install = (app: App) => {   components.forEach((component) => {     app.use(component);   }); }; export { Button }; export default {   install, };

6. 开发环境测试

src/App.vue 中测试组件: vue

xml 复制代码
xml
代码解读
复制代码
<template>   <div>     <MyButton @click="handleClick">点击我</MyButton>     <MyButton type="primary" @click="handleClick">主要按钮</MyButton>   </div> </template> <script setup> const handleClick = () => {   console.log('按钮被点击了'); }; </script>

7. 构建和发布

运行以下命令进行构建: bash

arduino 复制代码
arduino
代码解读
复制代码
npm run build

构建完成后,会在 dist 目录下生成组件库的文件。你可以将其发布到 npm 上供他人使用。

8. 文档和测试

  • 文档:使用工具如 VitePress 或 Storybook 来为组件库生成文档,方便用户了解组件的使用方法和属性。
  • 测试:使用 Vitest 或 Jest 等测试框架对组件进行单元测试,确保组件的稳定性和可靠性。

通过以上步骤,你就可以使用 Vue 3.3 和 TypeScript 4 自主打造一个简单的组件库。你可以根据需求不断添加更多的组件,并进行优化和扩展。

相关推荐
wearegogog1234 小时前
基于 MATLAB 的卡尔曼滤波器实现,用于消除噪声并估算信号
前端·算法·matlab
Drawing stars4 小时前
JAVA后端 前端 大模型应用 学习路线
java·前端·学习
品克缤4 小时前
Element UI MessageBox 增加第三个按钮(DOM Hack 方案)
前端·javascript·vue.js
小二·4 小时前
Python Web 开发进阶实战:性能压测与调优 —— Locust + Prometheus + Grafana 构建高并发可观测系统
前端·python·prometheus
小沐°4 小时前
vue-设置不同环境的打包和运行
前端·javascript·vue.js
qq_419854055 小时前
CSS动效
前端·javascript·css
烛阴5 小时前
3D字体TextGeometry
前端·webgl·three.js
桜吹雪5 小时前
markstream-vue实战踩坑笔记
前端
C_心欲无痕5 小时前
nginx - 实现域名跳转的几种方式
运维·前端·nginx
花哥码天下5 小时前
恢复网站console.log的脚本
前端·javascript·vue.js