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 自主打造一个简单的组件库。你可以根据需求不断添加更多的组件,并进行优化和扩展。

相关推荐
FungLeo14 分钟前
node 后端和浏览器前端,有关 RSA 非对称加密的完整实践, 前后端匹配的代码演示
前端·非对称加密·rsa 加密·node 后端
不灭锦鲤24 分钟前
xss-labs靶场第11-14关基础详解
前端·xss
不是吧这都有重名1 小时前
利用systemd启动部署在服务器上的web应用
运维·服务器·前端
霸王蟹1 小时前
React中巧妙使用异步组件Suspense优化页面性能。
前端·笔记·学习·react.js·前端框架
Maỿbe1 小时前
利用html制作简历网页和求职信息网页
前端·html
森叶1 小时前
Electron 主进程中使用Worker来创建不同间隔的定时器实现过程
前端·javascript·electron
霸王蟹1 小时前
React 19 中的useRef得到了进一步加强。
前端·javascript·笔记·学习·react.js·ts
霸王蟹1 小时前
React 19版本refs也支持清理函数了。
前端·javascript·笔记·react.js·前端框架·ts
繁依Fanyi2 小时前
ColorAid —— 一个面向设计师的色盲模拟工具开发记
开发语言·前端·vue.js·编辑器·codebuddy首席试玩官
明似水3 小时前
Flutter 开发入门:从一个简单的计数器应用开始
前端·javascript·flutter