使用 Vite 和 Vue 框架创建组件库
在前端开发中,组件化开发已成为一种高效、可维护的方式。通过创建组件库,不仅可以提高代码复用率,还能方便地在不同项目之间共享组件。本文将详细介绍如何使用 Vite 和 Vue 框架创建一个组件库,并将其导出供其他项目使用。为保持一致性和避免潜在冲突,我们将使用 Yarn 作为包管理工具。
步骤 1:初始化项目
首先,使用 Vite 初始化一个新的 Vue 项目。你可以使用以下命令:
yarn create vite my-vue-components --template vue
cd my-vue-components
yarn install
步骤 2:创建组件
在 src/components
目录下创建你的组件。例如,创建一个名为 MyButton.vue
的组件:
<!-- src/components/MyButton.vue -->
<template><button :class="['my-button', { active: isActive }]" @click="handleClick"><slot></slot></button>
</template><script setup>
import { ref } from 'vue';const isActive = ref(false);
const handleClick = () => {isActive.value = !isActive.value;
};
</script><style scoped>
.my-button {padding: 10px 20px;font-size: 16px;cursor: pointer;
}.my-button.active {background-color: blue;color: white;
}
</style>
步骤 3:创建入口文件
在 src
目录下创建一个入口文件 index.js
或 index.ts
,用于导出你的组件。
// src/index.js
import MyButton from './components/MyButton.vue';const components = {MyButton,
};const install = (app) => {for (const name in components) {app.component(name, components[name]);}
};if (typeof window !== 'undefined' && window.Vue) {install(window.Vue);
}export default {install,...components,
};
步骤 4:配置 Vite
配置 Vite 以构建库。在 vite.config.js
中添加以下配置:
// vite.config.js
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';export default defineConfig({build: {lib: {entry: 'src/index.js',name: 'MyVueComponents',fileName: (format) => `my-vue-components.${format}.js`,},rollupOptions: {external: ['vue'],output: {globals: {vue: 'Vue',},},},},plugins: [vue()],
});
步骤 5:构建库
运行以下命令来构建你的库:
yarn build
构建完成后,你会在
dist
目录下看到生成的库文件。
步骤 6:在其他项目中使用
现在,你可以在其他 Vue 项目中使用这个组件库。
- 首先,安装构建好的库。你可以将库发布到 npm,或者本地链接。例如,如果你将库发布到 npm,你可以在其他项目中运行:
yarn add my-vue-components
或者,如果你使用本地链接,你可以运行:
yarn link /path/to/my-vue-components/dist
注意:本地链接到
dist
目录可能不是标准的做法,因为dist
目录通常包含构建后的文件。在实际操作中,你可能想要链接到包含源代码的包目录,并在链接后运行构建命令。然而,为了演示目的,这里我们假设你已经有了构建好的文件。 - 然后,在你的 Vue 项目中导入并使用组件库:
// main.js or main.ts import { createApp } from 'vue'; import App from './App.vue'; import MyVueComponents from 'my-vue-components'; // 或本地路径,如果本地链接了构建后的文件const app = createApp(App); app.use(MyVueComponents); app.mount('#app');
- 在你的组件中使用
MyButton
:<template><div><MyButton>Click Me</MyButton></div> </template>
总结
通过以上步骤,你创建了一个简单的 Vue 组件库,并使用 Vite 和 Yarn 进行了构建和导出。你可以根据需要扩展这个库,添加更多的组件和功能。
新时代农民工
相关文章:
使用 Vite 和 Vue 框架创建组件库
在前端开发中,组件化开发已成为一种高效、可维护的方式。通过创建组件库,不仅可以提高代码复用率,还能方便地在不同项目之间共享组件。本文将详细介绍如何使用 Vite 和 Vue 框架创建一个组件库,并将其导出供其他项目使用。为保持一…...
【数据结构学习笔记】19:跳表(Skip List)
介绍 跳表是一个能在 O ( n l o g n ) O(nlogn) O(nlogn)时间完成查找、插入、删除的数据结构,相比于树形结构优点就是很好写(所以也用于实现Redis ZSet)。其核心思想就是维护一个元素有序的,能随机提升索引层数的链表。最下面一…...
【8】深入理解 Go 语言中的协程-从基础到高级应用
文章目录 一、引言 🌟二、协程基础概念 🧐(一)什么是协程(二)协程与线程、进程的区别三、协程的创建与启动 🚀(一)使用 go 关键字创建协程(二)简单…...

深入理解 ECMAScript 2024 新特性:字符串 isWellFormed 方法
ECMAScript 2024 引入了一个新的字符串实例方法:String.prototype.isWellFormed。这一新增功能是为了帮助开发者更容易地验证字符串是否为有效的 Unicode 文本。本文将详细介绍这一方法的使用场景、实现原理及其在实际应用中的价值。 String.prototype.isWellFormed…...
算法分析与设计之贪心算法
文章目录 前言一、Greedy Algorithms1.1 贪心选择性质1.2 最优子结构性质1.3 正确性证明 二、典型例题2.1 Interval Scheduling间隔调度2.2 Interval Partitioning最少间教室排课2.3 Selecting Breakpoints选择加油站停靠点2.4 硬币找零2.5 Scheduling to Minimizing Lateness2…...

Centos 宝塔安装
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 安装成功界面 宝塔说明文档 https://www.bt.cn/admin/servers#wcu 或者可以注册宝塔账号 1 快速部署 安装docker 之后 2 需要在usr/bin下下载do…...

蓝桥与力扣刷题(709 转换成小写字母)
题目:给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。 示例 1: 输入:s "Hello" 输出:"hello"示例 2: 输入:s "here…...

Redis的过期策略、内存淘汰机制
Redis只能存5G数据,可是你写了10G,那会删5G的数据。怎么删的?还有,你的数据已经设置了过期时间,但是时间到了,为什么内存占用率还是比较高? 一、Redis的过期策略 Redis采用的是定期删除惰性删除策略。 1…...

视觉多模态大模型---MiniMax-vl-01---以闪电般的注意力缩放基础模型
简介 MiniMax-VL-01 是与今年1月15日由上海稀宇科技有限公司(MiniMax)发布并开源的一款视觉多模态大模型,它与基础语言大模型 MiniMax-Text-01 一同构成了 MiniMax-01 系列。这款模型的设计初衷是为了应对日益增长的长上下文处理需求&#x…...

【微服务】面试 3、 服务监控 SkyWalking
微服务监控的原因 问题定位:在微服务架构中,客户端(如 PC 端、APP 端、小程序等)请求后台服务需经过网关再路由到各个微服务,服务间可能存在多链路调用。当某一微服务挂掉时,在复杂的调用链路中难以迅速确定…...

【案例81】NMC调用导致数据库的效率问题
问题现象 客户在使用NC系统时,发现系统特别卡顿。需要紧急排查。 问题分析 排查NMC发现,所有的线程都处于执行SQL层面,说明数据库当前出现了异常。查看数据库资源状态发现,Oracle相关进程CPU利用率达到了100%。 查看现在数据库…...

Linux_信号
信号的概念 && 知识补充 信号是进程之间事件异步通知的一种方式,是一种软中断。 标准信号:编号为1-31之间都是标准信号,这些都是预定义信号,用于通知进程发生的各种事件。实时信号:编号从32开始起均是实时信号…...

LeetCode100之搜索二维矩阵(46)--Java
1.问题描述 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回…...

学员答疑:安卓分屏窗口的TouchableRegion设置流程追踪
背景: vip学员在群里问到了一个分屏触摸区域设置的问题,开始以为就是和普通Activity设置区域没啥差别,都是在InputMonitor中进行的设置,但是仔细研究下来其实并不是哈。本文就带大家来手把手分析一下分屏情况下的触摸区域是怎么设置的。 d…...
[cg] UE5 调试技巧
UE 中 rhi命令的提交是在render 线程,而graphics api 真正的执行是在rhi 线程, 今天想看下rhi的底层调用,但由于是通过task执行的,无法获取到render thread传入的地方,调试起来不太方便。 可通过开启下面的命令来调试 …...

Python Wi-Fi密码测试工具
Python Wi-Fi测试工具 相关资源文件已经打包成EXE文件,可双击直接运行程序,且文章末尾已附上相关源码,以供大家学习交流,博主主页还有更多Python相关程序案例,秉着开源精神的想法,望大家喜欢,点…...
Linux 创建用户
Linux 创建用户 创建用户 sudo useradd -m -s /bin/bash test - -m:自动创建家目录 /home/test - -s /bin/bash:指定默认的 shell 为 bash修改密码 # 修改密码 sudo passwd test删除用户 userdel -r zengshun - -r:把用户的主目录一起删…...

自建RustDesk服务器
RustDesk服务端 下面的截图是我本地的一个服务器做为演示用,你自行的搭建服务需要该服务器有固定的ip地址 1、通过宝塔面板快速安装 2、点击【安装】后会有一个配置信息,默认即可 3、点击【确认】后会自动安装等待安装完成 4、安装完成后点击【打开…...
Spring Boot Web技术栈(官网文档解读)
摘要 Spring Boot框架既支持传统的Servlet技术栈,也支持新兴的响应式(Reactive)技术栈。本篇文章将详细讲述Spring Boot 对两种技术栈的详细支持和使用。 Servlet 概述 基于Java Servlet API构建,它依赖于传统的阻塞I/O模型&…...
【llama_factory】qwen2_vl训练与批量推理
训练llama factory配置文件 文件:examples/train_lora/qwen2vl_lora_sft.yaml ### model model_name_or_path: qwen2_vl/model_72b trust_remote_code: true### method stage: sft do_train: true finetuning_type: lora lora_target: all### dataset dataset: ca…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案
一、延迟敏感行业面临的DDoS攻击新挑战 2025年,金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征: AI驱动的自适应攻击:攻击流量模拟真实用户行为,差异率低至0.5%,传统规则引…...