当前位置: 首页 > news >正文

Vue 3 组件库开发实战:打造基础 UI 组件库并发布 - 构建可复用的 Vue 组件资产

引言

欢迎再次回到 Vue 3 + 现代前端工程化 系列技术博客! 在昨天的第六篇博客中,我们深入探索了 Vue 3 Composition API 的进阶应用,通过构建可拖拽看板应用,熟练掌握了自定义 Hook 的代码复用技巧。 今天,我们将迈向 Vue 3 组件化开发的更高阶段,聚焦于 组件库的开发与发布,构建可复用的 Vue 组件资产,提升团队协作效率和项目开发质量。

在实际项目开发中,尤其是大型项目或团队协作开发中,组件的复用性至关重要。 如果每个项目都从零开始构建组件,不仅效率低下,而且难以保证 UI 风格的统一性和代码质量。 组件库 (Component Library) 应运而生,它是一组预先构建好的、可复用的 UI 组件集合,可以像乐高积木一样,在不同的项目之间灵活组装和复用,极大地提升了开发效率,并保证了 UI 风格的统一性。 在本篇博客中,我们将从零开始,构建一个基础的 Vue 3 UI 组件库,并学习如何将其 打包和发布到 npm 仓库,为后续更复杂的组件库开发和团队协作奠定基础。

通过这个项目,您将学习到:

  • 组件库核心概念: 深入理解组件库的定义、价值和开发流程,掌握组件库开发的关键要素。
  • Vue 3 组件库项目搭建: 掌握使用 Vue CLI 或 Vite 搭建 Vue 3 组件库项目的步骤,理解组件库项目的基本结构。
  • Vue 3 组件库组件开发: 学习在组件库项目中开发可复用的 Vue 3 组件,掌握组件设计的通用原则和最佳实践。
  • 组件库打包与构建: 掌握组件库的打包配置,理解 Rollup 等打包工具在组件库构建中的作用,生成可发布的代码包。
  • 组件库发布到 npm: 学习将组件库发布到 npm 仓库的详细步骤,理解 npm 包管理和发布流程。
  • 在 Vue 项目中使用组件库: 体验如何在其他 Vue 3 项目中使用已发布的组件库,验证组件库的可用性和便捷性。
  • 构建可维护的组件资产: 学会构建和维护可复用的 Vue 3 组件库,提升您的组件库设计和开发能力。
  • 工程化思维: 将组件库开发融入到 Vue 3 项目中,进一步提升您的前端工程化实践水平,构建更专业的前端解决方案。

项目简介: 基础 UI 组件库 (Vue 3 Basic UI Components)

我们将构建一个名为 Vue 3 Basic UI Components 的基础 UI 组件库,包含以下核心组件 (本篇博客作为入门实践,组件数量和功能将进行简化):

  • MyButton: 基础按钮组件,支持不同的颜色和尺寸。
  • MyInput: 基础输入框组件,支持不同的类型和占位符。
  • MyCard: 基础卡片组件,用于展示信息内容。

通过构建这个基础 UI 组件库,我们将深入实践:

  • 组件库项目初始化: 使用 Vue CLI 或 Vite 创建组件库项目,配置项目结构和构建工具。
  • 组件库组件开发: 开发 MyButton, MyInput, MyCard 等基础 UI 组件,设计清晰的组件 API 和样式。
  • 组件库导出配置: 配置组件库的入口文件 index.js,导出所有组件,方便按需导入。
  • 组件库打包构建: 配置 Rollup 或其他打包工具,将组件库代码打包成可发布的 JavaScript 模块。
  • 组件库 npm 发布: 注册 npm 账号,配置 package.json 文件,并将组件库发布到 npm 仓库。
  • 组件库项目使用: 在一个新的 Vue 3 项目中安装和使用我们发布的组件库,验证组件库的可用性。

组件库核心概念回顾

在开始项目实战之前,让我们回顾组件库的核心概念,为后续的实践打下坚实的基础。

  • 组件库 (Component Library) 的定义: 组件库是一组 可复用的、预先构建好的 UI 组件集合。 组件库通常以 npm 包的形式发布,供开发者在不同的项目中安装和使用。 组件库的目标是提供一致的 UI 风格、提升开发效率、降低维护成本。 组件库也常被称为 UI 组件库 (UI Component Library)UI 工具包 (UI Kit)
  • 组件库的价值:
    • 提升开发效率: 开发者无需从零开始构建常用 UI 组件,可以直接使用组件库提供的组件,快速搭建页面,节省大量开发时间。
    • 保证 UI 风格一致性: 组件库提供统一的 UI 规范和样式,确保不同项目或不同模块之间的 UI 风格保持一致,提升用户体验和品牌形象。
    • 提高代码质量和可维护性: 组件库中的组件通常经过充分测试和优化,代码质量更高,更容易维护和升级。 开发者无需关注组件的底层实现细节,只需关注业务逻辑的开发。
    • 促进团队协作: 组件库成为团队共享的 UI 资产,不同成员可以使用相同的组件构建应用,减少沟通成本,提高团队协作效率。
    • 降低维护成本: 当需要更新 UI 风格或修复组件 Bug 时,只需要更新组件库,所有使用该组件库的项目都会自动同步更新,降低维护成本。
  • 组件库开发流程 (简化版): 一个典型的组件库开发流程通常包含以下步骤:
    1. 组件设计: 根据项目需求和 UI 规范,设计组件的 API (props, events, slots) 和样式。
    2. 组件开发: 使用 Vue 3 Composition API 或其他方式开发组件代码,包括模板、脚本和样式。
    3. 组件测试: 编写单元测试和集成测试,确保组件的功能和稳定性。
    4. 组件文档: 编写组件的使用文档,包括组件 API 说明、示例代码和演示案例。
    5. 组件打包: 使用 Rollup 或其他打包工具将组件代码打包成可发布的 JavaScript 模块。
    6. 组件发布: 注册 npm 账号,配置 package.json 文件,并将组件库发布到 npm 仓库。

为什么需要开发组件库?

开发组件库,或者使用成熟的开源组件库,对于现代前端开发至关重要,原因如下:

  • 构建可复用的 UI 资产: 组件库是可复用的 UI 资产,可以在多个项目之间共享,避免重复开发,提高开发效率,降低开发成本。 组件库使得团队能够构建自己的 “设计系统 (Design System)”,并将其落地到代码层面。
  • 提升大型项目开发效率: 在大型项目中,UI 组件的数量非常庞大,使用组件库可以极大地提升开发效率,并保证 UI 风格的统一性。 组件库可以将 UI 开发工作与业务逻辑开发工作解耦,提高并行开发效率。
  • 规范化前端开发流程: 组件库开发可以规范化前端开发流程,推动团队形成统一的组件设计规范、代码规范和文档规范,提升团队的专业化水平。 组件库开发也可以促进团队的代码复用文化和知识共享。
  • 提高代码质量和可维护性: 组件库中的组件通常经过严格的测试和审查,代码质量更高,更容易维护。 使用组件库可以减少项目中的 Bug,提高代码的可维护性和可扩展性。
  • 构建专业的前端解决方案: 开发和维护组件库是构建专业前端解决方案的重要组成部分。 组件库是前端基础设施的核心,也是前端技术积累和沉淀的重要载体。 组件库可以提升企业的技术竞争力,并为后续的技术创新奠定基础。

实战步骤: 构建基础 UI 组件库

接下来,我们将一步步使用 Vue 3 构建我们的基础 UI 组件库 Vue 3 Basic UI Components,深入理解组件库的开发和发布流程。

步骤 1: 项目初始化 (使用 Vue CLI 创建库项目)

我们将使用 Vue CLI 创建一个新的 Vue 项目,并选择 库 (library) 项目类型。 打开终端,执行以下命令:

vue create vue3-basic-components

在项目创建过程中,Vue CLI 会提示您选择预设,请选择 Manually select features (手动选择特性),然后按空格键取消选择所有特性,只选择 Library 特性,然后按 Enter 键继续。 其他选项可以默认选择,或者根据您的实际需求进行选择。

  • vue create vue3-basic-components: 这条命令使用 Vue CLI 创建一个名为 vue3-basic-components 的新项目。
  • 选择 “Library” 特性: 在 Vue CLI 的项目特性选择列表中,务必只选择 “Library” 特性。 Vue CLI 会根据 “Library” 特性预设配置项目结构和构建工具,使其更适合于组件库开发。 如果选择其他特性 (例如 Babel, TypeScript, Router, Vuex, CSS Pre-processors, Linter/Formatter, Unit Testing, E2E Testing),可能会增加项目配置的复杂性,对于本篇博客的入门实践来说不是必须的。

创建项目完成后,进入项目目录:

cd vue3-basic-components

步骤 2: 项目目录结构分析 (库项目结构)

使用 Vue CLI 创建的库项目,其目录结构与一般的 Vue 项目略有不同,更专注于组件库的开发和构建。 让我们简单分析一下项目目录结构:

vue3-basic-components/
├── dist/                # 打包构建后的代码输出目录
├── packages/            # 组件源码目录 (重要)
│   └── index.js         # 组件库入口文件 (重要)
├── public/              # 公共资源目录 (例如 favicon.ico, index.html)
├── README.md            # 组件库 README 文件
├── package.json         # npm 包配置文件 (重要)
├── jsconfig.json        # JavaScript  配置文件 (可选)
├── node_modules/        # npm 依赖包目录
└── vite.config.js       # Vite 配置文件 (重要,Vue CLI  库项目默认使用 Vite 构建)
  • dist/: 打包构建后的代码输出目录。 执行 npm run build 命令后,打包构建后的组件库代码会输出到这个目录。 dist 目录下的文件将是最终发布到 npm 仓库的代码。
  • packages/: 组件源码目录。 组件库的 所有组件源码都应该放在 packages/ 目录下。 Vue CLI 库项目默认将 packages/index.js 作为组件库的入口文件。
  • packages/index.js: 组件库入口文件packages/index.js 文件是组件库的入口文件,负责 导入和导出所有组件,以及注册全局组件 (可选)。 当用户在其他项目中导入组件库时,实际上是导入这个文件。
  • public/: 公共资源目录。 与一般的 Vue 项目相同,用于存放公共资源文件,例如 favicon.ico, index.html (库项目一般不需要 index.html)。
  • README.md: 组件库 README 文件。 用于编写组件库的介绍、安装、使用方法、API 文档等信息,方便用户了解和使用组件库。 发布到 npm 仓库后,README 文件的内容会显示在 npm 官网的组件库页面上。
  • package.json: npm 包配置文件。 与一般的 npm 包相同,用于配置 npm 包的信息,例如包名、版本、作者、依赖、scripts 等。 对于组件库来说,package.json 文件非常重要,需要配置正确的信息才能成功发布到 npm 仓库。
  • jsconfig.json: JavaScript 配置文件。 可选,用于配置 JavaScript 开发环境,例如代码提示、类型检查等。
  • node_modules/: npm 依赖包目录。 与一般的 npm 项目相同,存放通过 npm 安装的依赖包。
  • vite.config.js: Vite 配置文件。 Vue CLI 库项目默认使用 Vite 作为构建工具,vite.config.js 文件用于配置 Vite 构建选项,例如打包配置、插件配置等。 组件库的打包配置主要在这个文件中进行配置。

步骤 3: 开发组件库组件 (packages 目录)

现在,我们开始开发组件库的组件。 所有的组件源码都应该放在 packages/ 目录下。 我们将在 packages/ 目录下创建三个文件夹,分别存放 MyButton, MyInput, MyCard 组件的源码。

packages/ 目录下创建以下文件夹和文件:

packages/
├── my-button/          # MyButton 组件目录
│   ├── index.js         # MyButton 组件入口文件
│   └── MyButton.vue     # MyButton 组件源码文件
├── my-card/            # MyCard 组件目录
│   ├── index.js         # MyCard 组件入口文件
│   └── MyCard.vue       # MyCard 组件源码文件
├── my-input/           # MyInput 组件目录
│   ├── index.js         # MyInput 组件入口文件
│   └── MyInput.vue      # MyInput 组件源码文件
└── index.js             # 组件库入口文件 (已存在)

开发 MyButton 组件 (packages/my-button/MyButton.vue)

创建 packages/my-button/MyButton.vue 文件,编写 MyButton 组件的源码:

<template><buttonclass="my-button":class="typeClass":disabled="disabled"@click="$emit('click', $event)"><slot></slot></button>
</template><script setup>
import { computed } from 'vue';const props = defineProps({type: {type: String,default: 'default',validator: value => ['default', 'primary', 'success', 'warning', 'danger'].includes(value)},disabled: {type: Boolean,default: false}
});defineEmits(['click']);const typeClass = computed(() => {return `my-button--${props.type}`;
});
</script><sty

相关文章:

Vue 3 组件库开发实战:打造基础 UI 组件库并发布 - 构建可复用的 Vue 组件资产

引言 欢迎再次回到 Vue 3 + 现代前端工程化 系列技术博客! 在昨天的第六篇博客中,我们深入探索了 Vue 3 Composition API 的进阶应用,通过构建可拖拽看板应用,熟练掌握了自定义 Hook 的代码复用技巧。 今天,我们将迈向 Vue 3 组件化开发的更高阶段,聚焦于 组件库的开发与…...

UNION 和 UNION ALL 的区别:深入解析 SQL 中的合并操作

在 SQL 的世界里&#xff0c;当我们需要合并多个查询结果集时&#xff0c;UNION和UNION ALL是两个常用的操作符。虽然它们的功能看起来相似&#xff0c;但实际上有着重要的区别&#xff0c;这些区别在不同的应用场景中会对查询结果和性能产生显著影响。本文将详细探讨UNION和UN…...

Redis 哈希(Hash)

Redis 哈希(Hash) 概述 Redis 哈希&#xff08;Hash&#xff09;是一种特殊的键值对类型&#xff0c;它允许存储结构化的数据&#xff0c;例如一个对象或记录。每个哈希值可以包含多个字段&#xff0c;每个字段又可以存储一个字符串值。这使得Redis哈希非常适合用于存储对象的…...

Android Activity栈关系解析

在 Android 系统中&#xff0c;这些类共同构成了 Activity 任务栈管理的核心架构。它们的关系可以类比为一栋大楼的管理体系&#xff0c;每个类负责不同层级的任务。以下是它们的详细解释和实际场景示例&#xff1a; 1. ActivityRecord&#xff08;活动记录&#xff09; 是什么…...

7.1.2 计算机网络的分类

文章目录 分布范围交换方式 分布范围 计算机网络按照分布范围可分为局域网、广域网、城域网。局域网的范围在10m~1km&#xff0c;例如校园网&#xff0c;网速高&#xff0c;主要用于共享网络资源&#xff0c;拓扑结构简单&#xff0c;约束少。广域网的范围在100km&#xff0c;例…...

Arcgis中添加脚本工具箱

准备资料 &#xff08;1&#xff09;工具箱 &#xff08;2&#xff09;python脚本 1、打开arcmap 2、找到目录窗口 3、复制粘贴工具箱的路径 4、添加或者确认python脚本路径 脚本上右键属性(注意&#xff1a;脚本内容和路径最后都不要有中文&#xff0c;否则可能报错) 如果…...

【Python 数据结构 1.零基础复习】

目录 一、输入与输出 1.输入 2.格式化输出 二、数字与变量 1.字符串 & 整型 2.字符串 & 整型 & 浮点型 3.变量 练习 2235. 两整数相加 三、运算与操作 1.四则运算 练习 2769. 找出最大的可达成数字 3.取整与取余 练习 2651. 计算列车到站时间 ​编辑 四、真与假 1…...

颠覆NLP的魔法:深度解读Transformer架构及其核心组件

目录 颠覆NLP的魔法&#xff1a;深度解读Transformer架构及其核心组件 一、Transformer 架构概述 二、核心组件解析 1. Self-Attention&#xff08;自注意力机制&#xff09; 2. 位置编码&#xff08;Positional Encoding&#xff09; 3. 多头注意力&#xff08;Multi-Hea…...

【pytest框架源码分析二】pluggy源码分析之add_hookspecs和register

这里我们看一下_manager.py里的类和方法&#xff0c;最主要的是PluginManager类&#xff0c;类的初始化函数如下&#xff1a; class PluginManager:"""Core class which manages registration of plugin objects and 1:N hookcalling.You can register new hoo…...

【leetcode hot 100 53】最大子数组和

解法一&#xff1a;&#xff08;动态规划&#xff09;我们用 f(i) 代表以第 i 个数结尾的「连续子数组的最大和」&#xff0c;那么很显然我们要求的答案就是&#xff1a;max{f(i)}&#xff0c;f(i)max{f(i−1)nums[i],nums[i]} class Solution {public int maxSubArray(int[] …...

Sqlserver安全篇之_启用TLS即配置SQL Server 数据库引擎以加密连接

官方文档 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-sql-server-encryption?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/manage-certificates?viewsql-server-ver15&pre…...

009---基于Verilog HDL的单比特信号边沿检测

文章目录 摘要一、边沿检测二、时序逻辑实现2.1 rtl2.2 tb 三、组合逻辑实现3.1 rtl3.2 tb 摘要 文章为学习记录。采用时序逻辑和组合逻辑实现边沿检测的核心逻辑。组合逻辑实现的上升沿和下降沿的脉冲比时序逻辑实现的上升沿和下降沿的脉冲提前一拍。 一、边沿检测 边沿检测…...

istio的核心概念简介

Istio 是一个开源的服务网格&#xff08;Service Mesh&#xff09;平台&#xff0c;旨在帮助管理、连接、保护和观察分布式微服务架构中的服务。它最初由 Google、IBM 和 Lyft 合作开发&#xff0c;广泛应用于 Kubernetes 环境。Istio 的核心目标是通过提供统一的流量管理、安全…...

如何在Apple不再支持的MacOS上安装Homebrew

手头有一台2012年产的Macbook Pro&#xff0c;系统版本停留在了10.15.7&#xff08;2020年9月24日发布的&#xff09;。MacOS 11及后续的版本都无法安装到这台老旧的电脑上。想通过pkg安装Homebrew&#xff0c;发现Homebrew releases里最新的pkg安装包不支持MacOS 10.15.7&…...

@update 的常见用法 Vue.js

在 Vue.js 中&#xff0c;update 是一个事件监听器&#xff0c;通常用于监听自定义组件或某些 Vue 原生组件&#xff08;如 <input> 或自定义组件&#xff09;的更新事件。它并不是 Vue 的核心 API&#xff0c;而是一种约定俗成的命名方式&#xff0c;用于处理组件内部状…...

C#开发——日期操作类DateTime

在C#中&#xff0c;日期和时间的操作主要通过 System.DateTime 类来实现。 DateTime 提供了丰富的属性和法&#xff0c;用于处理日期和时间的创建、格式化、比较和计算等操作。以下是一些常用的日期函数和特性&#xff1a; 一、创建日期和时间 1、直接指定日期和时间&…...

大语言模型学习--LangChain

LangChain基本概念 ReAct学习资料 https://zhuanlan.zhihu.com/p/660951271 LangChain官网地址 Introduction | &#x1f99c;️&#x1f517; LangChain LangChain是一个基于语言模型开发应用程序的框架。它可以实现以下应用程序&#xff1a; 数据感知&#xff1a;将语言模型…...

Oracle数据库安全防护体系构建与核心技术解析

引言&#xff1a;从某跨国集团数据泄露事件看Oracle防护困局 2025年1月&#xff0c;某跨国零售企业Oracle数据库遭APT组织"暗夜猎手"攻击&#xff0c;攻击者通过三重渗透路径实现数据窃取&#xff1a; 存储层突破&#xff1a;利用Oracle TDE密钥管理漏洞获取wallet…...

iOS UICollectionViewCell 点击事件自动化埋点

iOS 中经常要进行埋点&#xff0c;我们这里支持 UICollectionViewCell. 进行自动化埋点&#xff0c;思路&#xff1a; 通过hook UICollectionViewCell 的setSelected:方法&#xff0c; 则新的方法中执行埋点逻辑&#xff0c;并调用原来的方法 直接上代码 implementation UICol…...

软件工程---基于构件的软件工程

基于构件的软件工程&#xff08;CBSE&#xff09;是一种软件开发方法&#xff0c;通过重用现有的软件构件来构建系统&#xff0c;从而提高开发效率和软件质量。这种方法强调软件系统的模块化设计和构建复用&#xff0c;使得软件开发过程更加高效和灵活。 企业软件开发&#xf…...

Redis--单线程模型

目录 一、引言 二、Redis单线程模型 三、原因 四、为什么redis是单线程模型&#xff0c;但他的速度这么快&#xff1f; 五、总结 一、引言 本篇文章就Redis为什么是单线程模型做简单介绍。 二、Redis单线程模型 redis只使用一个线程&#xff0c;处理所有的命令请求&#x…...

NodeJS服务器 + Vue3框架 从搭建服务器 定义接口 到请求数据页面展示

NodeJS服务器 Vue3框架全栈开发 后端项目初始化项目安装express创建服务器server.js启动服务验证服务是否启动成功 前端项目新建vue3项目安装axios启动前端项目启动时报错问题解决 vue页面使用axios调用node接口完整代码页面效果图跨域问题解决 本篇文章主要介绍使用Node.js和…...

3.1、密码学基础

目录 密码学概念与法律密码安全分析密码体制分类 - 私钥密码/对称密码体制密码体制分类 - 公钥密码/非对称密码体制密码体制分类 - 混合密码体制 密码学概念与法律 密码学主要是由密码编码以及密码分析两个部分组成&#xff0c;密码编码就是加密&#xff0c;密码分析就是把我们…...

iOS接入Flutter项目

首先要把iOS项目和flutter项目统一目录下&#xff0c;而且需要注意的是flutter是module。 第一步&#xff1a;Flutter相关内容的创建 module创建命令&#xff1a; flutter create --templatemodule my_flutter&#xff0c;之后再执行 flutter pub get flutter build ios …...

点云配准技术的演进与前沿探索:从传统算法到深度学习融合(4)

4、点云配准面临的挑战与应对策略 4.1 点云配准面临的主要挑战 在点云配准的实际应用中&#xff0c;尽管已经取得了显著的研究成果&#xff0c;但仍然面临着诸多复杂而严峻的挑战&#xff0c;这些挑战严重制约了点云配准技术在更多领域的广泛应用和深入发展。 在自动驾驶场景…...

SEKI —— 基于大型语言模型的自进化与知识启发式神经架构搜索

01、项目概述 我们引入了一种基于新型大型语言模型&#xff08; LLM &#xff09;的神经架构搜索&#xff08; NAS &#xff09;方法&#xff0c;名为 SEKI 。SEKI 受到现代 LLM 中思维链&#xff08; CoT &#xff09;范式的启发&#xff0c;分为两个关键阶段运行&#xff1a…...

Nat Mach Intell | AI分子对接算法评测

《Nature Machine Intelligence》发表重磅评测&#xff0c;系统评估AI与物理方法在虚拟筛选&#xff08;VS&#xff09;中的表现&#xff0c;突破药物发现效率瓶颈。 核心评测体系&#xff1a;三大数据集 研究团队构建了三个新型测试集&#xff1a; TrueDecoy&#xff1a;含14…...

01. HarmonyOS应用开发实践与技术解析

文章目录 前言项目概述HarmonyOS应用架构项目结构Ability生命周期 ArkTS语言特性装饰器状态管理 UI组件与布局基础组件响应式布局样式与主题 页面路由与参数传递页面跳转参数接收 数据绑定与循环渲染数据接口定义循环渲染 条件渲染组件生命周期最佳实践与性能优化组件复用响应式…...

001-码云操作

码云操作 一、配置公钥1.官网地址1.进入 git bash2.查看生成的公钥3.设置到 Gitee4.测试 二、初始化一个项目1.新建仓库 一、配置公钥 方便后续提交代码不用填写密码 1.官网地址 官网地址&#xff1a;https://gitee.com/Git码云教程&#xff1a;https://gitee.com/help/arti…...

10.LED点阵实验

LED点阵是一种由发光二极管排列而成的显示器件&#xff0c;在生活里的各种电器中很常见&#xff0c;像汽车报站器和广告屏等地方都会用到它。 平时用得比较多的是 88 点阵。多个 88 点阵能组合成不同大小的 LED 点阵显示屏&#xff0c;比如 4 个 88 点阵可以拼成一个 1616 点阵…...

cesium+vue3自定义HTML实体弹窗、加高德路网、防实体漂浮、让用户画圆、鹰眼

一、基础使用&#xff1a;Cesium.js基础使用&#xff08;vue&#xff09;-CSDN博客 1、基础路径 为 Cesium 库设置一个全局变量 CESIUM_BASE_URL&#xff0c;用于指定 Cesium 的资源文件&#xff08;如 WebGL shaders、纹理、字体等&#xff09;的 示例场景&#xff1a;假设你…...

Spring(二)容器-注册

目录 一 定义组件Bean (1)添加组件 (2)获取组件 二 配置类Configuration (1)配置类的作用 三 MVC分层注解 - Controller&#xff1a; - Service&#xff1a; - Repository&#xff1a; 四 批量扫描ComponentScan (1) 默认扫描当前包及其子包 (2) 指定扫描包路径 …...

Java-实现PDF合同模板填写内容并导出PDF文件

可用于公司用户合同导出pdf文件 效果图 一、导入所需要jar包 <!--生成PDF--><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.11</version></dependency><dependency&…...

C# 数据转换

1. 文本框读取byte&#xff0c;ushort格式数据 byte addr; if (byte.TryParse(textBoxAddr.Text, out addr) true) {}2. 字节数组 (byte[]) 转换为 ASCII 字符串 byte[] bytes { 72, 101, 108, 108, 111 }; // "Hello" 的 ASCII 码 string s0 Encoding.ASCII.Ge…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_list_init

ngx_list_init 定义在 src\core\ngx_list.h static ngx_inline ngx_int_t ngx_list_init(ngx_list_t *list, ngx_pool_t *pool, ngx_uint_t n, size_t size) {list->part.elts ngx_palloc(pool, n * size);if (list->part.elts NULL) {return NGX_ERROR;}list->par…...

鸿蒙NEXT开发-元服务和服务卡片的开发

注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注&#xff0c;博主会一直更新鸿蒙next相关知识 目录 1. 元服务基本概念 1.1 基本介绍 1.2 元…...

Docker安装Redpandata-console控制台

介绍 Redpanda控制台&#xff0c;这是一个功能强大的Web UI&#xff0c;用于管理和监控您的Redpanda 集群。探索实际示例和场景&#xff0c;以帮助您了解如何利用 Redpanda 控制台实现不同的用例&#xff0c;包括数据可观察性、Redpanda 管理、访问控制和连接。 可对Redpanda…...

DeepSeek Agent 企业应用

DeepSeek Agent 技术是基于深度求索(DeepSeek)大模型构建的智能代理系统,其核心技术架构与应用优势可从以下几个方面进行深度解析: 一、核心技术架构 混合专家模型(MoE)与架构优化 DeepSeek 的模型家族(如DeepSeekMoE、DeepSeek-V3)采用 混合专家系统(MoE) ,通过动…...

vcredist_x64 资源文件分享

vcredist_x64 是 Microsoft Visual C Redistributable 的 64 位版本&#xff0c;用于在 64 位 Windows 系统上运行使用 Visual C 开发的应用程序。它包含了运行这些应用程序所需的运行时组件。 vcredist_x64 资源工具网盘下载链接&#xff1a;https://pan.quark.cn/s/ef56f838f…...

解决redis lettuce连接池经常出现连接拒绝(Connection refused)问题

一.软件环境 windows10、11系统、springboot2.x、redis 6 7 linux&#xff08;centos&#xff09;系统没有出现这问题&#xff0c;如果你是linux系统碰到的&#xff0c;本文也有一定大参考价值。 根本思路就是&#xff1a;tcp/ip连接的保活(keepalive)。 二.问题描述 在spr…...

Mac远程桌面软件哪个好用?

远程桌面软件能帮助我们快速的远程控制另一台电脑&#xff0c;从而提供远程帮助&#xff0c;或者进行远程办公。那么&#xff0c;对macOS系统有什么好用的Mac远程桌面软件呢&#xff1f; 远程看看是一款操作简单、界面简洁的远程桌面软件&#xff0c;支持跨平台操作&#xff0…...

一篇吃透模型:all-MiniLM-L6-v2

MiniLM 是什么&#xff1f; MiniLM 是微软研究院开发的一种轻量级的语言模型&#xff0c;旨在以较小的参数量和计算成本实现与大型语言模型&#xff08;如 BERT&#xff09;相当的性能。它是基于 Transformer 架构的预训练模型&#xff0c;通过深度自注意力蒸馏&#xff08;De…...

深入学习Linux内存管理-缺页异常

1.什么是缺页异常 在Linux虚拟内存管理中,缺页异常(Page Fault) 是CPU在访问虚拟地址时发现对应物理页未就绪时触发的中断。根据触发原因,缺页异常分为两类: 次要缺页(Minor Fault):物理页已存在(如缓存或共享内存),只需建立映射。 主要缺页(Major Fault):需要…...

互推机制在开源AI智能名片2+1链动模式S2B2C商城小程序源码推广中的应用探索

摘要&#xff1a; 在数字化营销时代&#xff0c;开源AI智能名片21链动模式S2B2C商城小程序源码作为一种创新的技术解决方案&#xff0c;正逐步成为企业数字化转型的重要工具。然而&#xff0c;面对激烈的市场竞争&#xff0c;如何高效推广这一前沿技术产品&#xff0c;成为开发…...

SparkSQL全之RDD、DF、DS ,UDF、架构、资源划分、sql执行计划、调优......

1 SparkSQL概述 1.1 sparksql简介 Shark是专门针对于spark的构建大规模数据仓库系统的一个框架Shark与Hive兼容、同时也依赖于Spark版本Hivesql底层把sql解析成了mapreduce程序&#xff0c;Shark是把sql语句解析成了Spark任务随着性能优化的上限&#xff0c;以及集成SQL的一些…...

神经网络 - 激活函数(Maxout 单元)

一、Maxout 单元 Maxout 单元是一种特殊的激活函数&#xff0c;用于神经网络中&#xff0c;其主要思想是通过多个线性变换的最大值来作为神经元的输出&#xff0c;从而提高模型的表达能力和鲁棒性。 1. 数学定义 假设输入为 x&#xff0c;Maxout 单元会计算 k 个线性变换&am…...

【软考-架构】1.3、磁盘-输入输出技术-总线

GitHub地址&#xff1a;https://github.com/tyronczt/system_architect ✨资料&文章更新✨ 文章目录 存储系统&#x1f4af;考试真题输入输出技术&#x1f4af;考试真题第一题第二题 存储系统 寻道时间是指磁头移动到磁道所需的时间&#xff1b; 等待时间为等待读写的扇区…...

专业便捷PDF软件,即开即用

PDF文件因其小巧的体积、便捷的分享与存储方式&#xff0c;以及卓越的安全性&#xff0c;已成为学习、企业及各类机构中不可或缺的文件格式。无论是在学术研究、课程资料、商业报告还是合同文件中&#xff0c;PDF都能有效保持原有的格式和布局&#xff0c;确保内容在不同设备和…...

TEE可信执行环境的安全业务保护方案

基于硬件隔离技术&#xff0c;安全业务可在**TEE&#xff08;可信执行环境&#xff09;**中运行&#xff0c;以保障安全资产的完整性。TEE具备以下核心特点&#xff1a; 跨平台兼容&#xff1a;已集成于多款芯片平台&#xff08;MTK、NXP、RK、Samsung、TI、JLQ、Spreadtrum等…...

smolagents学习笔记系列(番外二)Agent+Ollama分析本地图像与文件

这篇文章是在 smolagents 官方教程结束后的番外篇二&#xff0c;实现了如何使用 smolagents 库 Ollama 调用本地模型对图像与文件进行分析。 【注意】&#xff1a;这篇文章需要你在本地部署Ollama的视觉语言模型&#xff0c;如果你的架构方案是纯线上模式&#xff0c;则可以跳…...