从组件封装到npm发布:掌握这6步,你也能开源自己的UI库

前端:2024年非常受欢迎非常火的 VueUI 库 阅读详情

第一章:JavaScript组件库开发概述

JavaScript组件库是现代前端工程化的核心组成部分,它通过封装可复用的UI元素与交互逻辑,提升开发效率并保证视觉与行为的一致性。无论是构建企业级管理系统还是复杂单页应用,一个设计良好的组件库都能显著降低维护成本。

组件库的核心价值

  • 提高开发效率:开发者无需重复编写基础UI控件
  • 统一设计语言:确保多团队协作下的视觉一致性
  • 易于维护升级:集中管理组件逻辑,支持批量更新
  • 支持主题定制:通过配置实现暗黑模式、品牌色切换等需求

典型技术选型对比

框架适用场景打包工具推荐
React动态交互密集型应用Vite + Rollup
Vue渐进式项目集成Vite + Vue CLI
Web Components跨框架复用Webpack + Lit

基础项目结构示例

在初始化组件库时,合理的目录结构至关重要:

/src
  /components
    /Button
      Button.vue
      Button.css
      index.js
  /utils
  /themes
index.js
package.json
vite.config.js
上述结构将每个组件独立封装,便于按需引入。配合Vite进行构建,可通过index.js导出所有公共组件,实现ES Module的树摇优化。
graph TD A[源码开发] --> B[组件编译] B --> C[生成类型定义] C --> D[发布NPM包] D --> E[项目中引入使用]

第二章:组件设计与封装实践

2.1 组件化开发的核心理念与原则

组件化开发强调将系统拆分为独立、可复用的功能单元,每个组件封装特定的业务逻辑与视图,实现高内聚、低耦合。通过定义清晰的接口进行通信,提升系统的可维护性与扩展性。
单一职责原则
每个组件应仅负责一个功能模块,避免功能交叉。例如,在前端框架中定义按钮组件:

// Button.vue
export default {
  props: ['type', 'disabled'],
  methods: {
    handleClick() {
      if (!this.disabled) this.$emit('click');
    }
  }
}
该组件仅处理按钮渲染与点击触发,逻辑隔离明确,便于测试和复用。
接口契约优先
组件间通过预定义的输入(props)和输出(events)进行交互,形成契约。使用类型校验保障通信可靠性:
  • Props 应标注类型与默认值
  • 事件名称需语义化且统一命名规范
  • 避免直接操作子组件实例

2.2 使用原生JavaScript构建可复用UI组件

在现代前端开发中,即使不依赖框架,也能通过原生JavaScript创建高度可复用的UI组件。核心在于封装、事件解耦与DOM动态管理。
组件封装基础
通过构造函数或ES6类将UI逻辑封装,实现实例化调用:

class ButtonComponent {
  constructor(text, onClick) {
    this.text = text;
    this.onClick = onClick;
  }

  render(container) {
    const button = document.createElement('button');
    button.textContent = this.text;
    button.addEventListener('click', this.onClick);
    container.appendChild(button);
  }
}
上述代码定义了一个按钮组件类,接收文本和点击回调作为参数,render 方法负责将元素插入指定容器,实现视觉与行为的统一封装。
提升复用性的策略
  • 通过属性配置(options对象)支持多样化定制
  • 使用事件委托机制降低事件绑定开销
  • 采用文档片段(DocumentFragment)优化批量DOM操作性能

2.3 组件状态管理与事件通信机制

在现代前端框架中,组件间的状态管理与事件通信是构建可维护应用的核心。当组件层级复杂时,有效的数据流控制显得尤为重要。
单向数据流与事件发射
父组件通过属性向下传递状态,子组件通过事件向上反馈变化,形成闭环。例如在 Vue 中:

// 子组件触发事件
this.$emit('update:value', newValue);
父组件监听该事件并更新自身状态,确保数据流向清晰可控。
状态提升与全局管理
对于跨层级通信,常采用状态提升或将状态交由全局 store 管理。React 中使用 Context 或 Redux,Vue 则可通过 Pinia 实现:
  • 避免 prop drilling,提升可测试性
  • 集中式状态便于调试与持久化
通过合理选择通信策略,可显著增强应用的可扩展性与协作效率。

2.4 实现组件的配置化与扩展性设计

为提升系统的灵活性与可维护性,组件应支持配置化驱动。通过外部配置文件定义行为参数,避免硬编码。
配置结构设计
采用 YAML 格式管理组件配置,清晰表达层级关系:
cache:
  enabled: true
  type: redis
  ttl: 300
plugins:
  - name: auth
    enabled: true
上述配置允许动态启用缓存策略与插件模块,提升部署灵活性。
扩展性实现机制
使用接口+工厂模式支持插件化扩展:
type Plugin interface {
    Initialize(config map[string]interface{}) error
    Execute() error
}
任何实现该接口的模块均可注册为插件,系统根据配置动态加载,实现热插拔能力。
  • 配置驱动降低耦合度
  • 接口抽象支持功能扩展

2.5 封装按钮、弹窗等基础组件实战

在前端开发中,封装可复用的基础组件是提升开发效率与维护性的关键。通过抽象通用逻辑,我们能快速构建一致的用户界面。
按钮组件封装
const CustomButton = ({ type = 'primary', disabled, onClick, children }) => {
  return (
    <button 
      className={`btn btn-${type}`} 
      disabled={disabled} 
      onClick={onClick}
    >
      {children}
    </button>
  );
};
上述代码定义了一个支持类型、禁用状态和点击回调的按钮组件。通过 type 参数控制样式变体,disabled 阻止交互,onClick 实现行为注入,实现结构与逻辑分离。
弹窗组件设计
  • 支持显隐控制(visible)
  • 提供关闭回调(onClose)
  • 内容插槽化(children)
这种设计模式增强了组件灵活性,适用于提示、确认等多种场景。

第三章:项目结构搭建与构建工具配置

3.1 初始化项目结构与模块组织规范

良好的项目结构是可维护性与协作效率的基础。在初始化阶段,应遵循清晰的目录划分原则,将核心逻辑、配置、工具和测试代码分层隔离。
标准项目结构示例
  • cmd/:主应用入口
  • internal/:业务核心逻辑
  • pkg/:可复用公共组件
  • config/:环境配置文件
  • scripts/:自动化脚本
Go 模块初始化
module github.com/example/project

go 1.21

require (
    github.com/gin-gonic/gin v1.9.1
    github.com/sirupsen/logrus v1.9.0
)
该 go.mod 文件定义了模块路径与依赖版本,确保构建一致性。使用语义化版本号锁定第三方库,避免意外更新引发兼容性问题。
依赖管理建议
依赖类型管理方式
核心框架锁定主版本
工具库定期安全扫描

3.2 配置Webpack或Rollup进行打包优化

在构建现代前端应用时,合理的打包配置能显著提升性能和加载速度。通过Webpack或Rollup的优化策略,可以有效减少资源体积并提高运行效率。
使用Webpack进行代码分割
通过动态导入实现按需加载,减少初始包体积:

module.exports = {
  optimization: {
    splitChunks: {
      chunks: 'all',
      cacheGroups: {
        vendor: {
          test: /[\\/]node_modules[\\/]/,
          name: 'vendors',
          priority: 10,
          reuseExistingChunk: true
        }
      }
    }
  }
};
该配置将第三方依赖单独打包为vendors.js,避免业务逻辑变更时重复下载公共库。
启用生产环境压缩
Rollup可通过terser插件压缩输出:
  • 安装依赖:npm install --save-dev @rollup/plugin-terser
  • 在rollup.config.js中引入并使用插件
  • 确保仅在生产环境下启用以加快开发构建速度

3.3 支持ESM、UMD等多种模块格式输出

现代前端构建工具需支持多种模块化标准,以适配不同运行环境。通过配置打包工具如Rollup或Vite,可同时生成ESM、CommonJS与UMD格式的产物。
多格式输出配置示例
export default {
  input: 'src/index.js',
  output: [
    {
      format: 'es',
      file: 'dist/bundle.esm.js'
    },
    {
      format: 'cjs',
      file: 'dist/bundle.cjs.js'
    },
    {
      format: 'umd',
      name: 'MyLib',
      file: 'dist/bundle.umd.js'
    }
  ]
};
上述配置中,format: 'es' 生成ES模块,适用于现代浏览器和Webpack等支持tree-shaking的场景;format: 'cjs' 用于Node.js环境;format: 'umd' 兼容AMD与CommonJS,并可通过script标签直接引入。
模块格式适用场景对比
格式适用环境特点
ESM现代浏览器、构建工具支持静态分析、tree-shaking
UMD通用兼容支持AMD、CommonJS和全局变量引用

第四章:测试、文档与版本管理

4.1 编写单元测试确保组件稳定性

在现代软件开发中,单元测试是保障组件行为正确性的基石。通过为每个独立模块编写测试用例,开发者能够在代码变更后快速验证功能完整性,降低引入回归缺陷的风险。
测试框架选择与基础结构
Go语言内置testing包,结合go test命令即可高效运行测试。以下是一个简单的被测函数及其测试用例:

func Add(a, b int) int {
    return a + b
}

// 对应测试
func TestAdd(t *testing.T) {
    result := Add(2, 3)
    if result != 5 {
        t.Errorf("期望 5,实际 %d", result)
    }
}
该测试验证了Add函数在标准输入下的输出一致性,t.Errorf用于报告失败,确保异常路径可追溯。
覆盖率与持续集成
使用go test -cover可查看测试覆盖率,建议核心组件覆盖率达到80%以上。将单元测试集成至CI流水线,能有效拦截低级错误,提升发布质量。

4.2 使用JSDoc生成API文档并集成示例页面

JSDoc 是一种基于注释的JavaScript文档生成工具,能够将代码中的特殊注释块解析为结构化API文档。通过在函数、类或模块上方添加符合规范的注释,可自动生成包含参数、返回值和示例的详细说明。
基本注释语法

/**
 * 计算两个数的和
 * @param {number} a - 第一个加数
 * @param {number} b - 第二个加数
 * @returns {number} 两数之和
 * @example
 * add(2, 3); // 返回 5
 */
function add(a, b) {
  return a + b;
}
上述注释中,@param描述输入参数类型与含义,@returns说明返回值,@example提供调用示例,这些信息将被JSDoc提取并渲染到HTML文档中。
集成示例页面
可通过配置templates/default/publish.js模板或使用插件如jsdoc-plugin-examples,将@example标签内容转化为可运行的交互式示例页面,提升文档实用性。结合Webpack等构建工具,实现文档与源码同步更新。

4.3 Git版本控制策略与语义化版本规范

在团队协作开发中,合理的Git分支策略与版本管理规范是保障代码质量与发布稳定的关键。推荐采用Git Flow的变体——GitHub Flow,以`main`分支为生产环境基准,功能开发通过特性分支(feature branch)进行,合并前需经过代码审查与自动化测试。
语义化版本规范(SemVer)
版本号格式为`MAJOR.MINOR.PATCH`,其含义如下:
  • MAJOR:不兼容的API变更
  • MINOR:向后兼容的功能新增
  • PATCH:向后兼容的缺陷修复
git tag -a v1.0.0 -m "Release version 1.0.0"
该命令创建一个带注释的标签,用于标记发布版本。标签应遵循语义化版本格式,并在CI/CD流程中触发构建与部署。
版本变更示例
变更类型示例版本跳变说明
新功能v1.0.0 → v1.1.0新增接口但未破坏现有调用
补丁修复v1.1.0 → v1.1.1修复安全漏洞或逻辑错误
架构重构v1.1.1 → v2.0.0接口签名变更导致不兼容

4.4 发布前的代码检查与性能评估

在发布前,全面的代码审查和性能评估是确保系统稳定性的关键环节。通过静态代码分析工具可有效识别潜在缺陷。
静态代码检查实践
使用 golangci-lint 对 Go 项目进行扫描:
// 启用常用 linter 并输出 JSON 格式结果
golangci-lint run --enable=gas,goconst --out-format=json
该命令启用安全检测(gas)和重复字符串检查(goconst),帮助发现安全隐患与代码冗余。
性能基准测试
通过基准测试量化函数性能表现:
  • 使用 go test -bench=. 执行压测
  • 监控内存分配与 GC 频率
  • 对比不同算法实现的吞吐差异
结合 pprof 工具生成 CPU 和内存火焰图,定位热点路径,优化关键路径执行效率。

第五章:从本地开发到npm发布全流程总结

项目初始化与模块设计
使用 npm init -y 快速生成 package.json,明确入口文件、版本号及依赖项。模块应遵循单一职责原则,将核心功能封装在独立文件中,便于测试和复用。
代码组织与导出规范

// index.js
const utils = {
  formatDate: (date) => new Date(date).toISOString().split('T')[0],
  capitalize: (str) => str.charAt(0).toUpperCase() + str.slice(1)
};

module.exports = utils; // CommonJS 导出格式
版本控制与测试验证
  • 通过 Git 管理代码变更,确保每次发布都有对应 tag
  • 编写单元测试(如使用 Jest)验证核心函数行为
  • 运行 npm test 确保所有用例通过后再进入发布流程
发布前的配置检查
配置项说明
name包名需在 npm 全局唯一,建议加 scope(如 @username/utils)
version遵循语义化版本(SemVer),首次发布建议为 1.0.0
files指定需上传的目录,如 ["dist/", "index.js"]
登录与发布执行
执行以下命令完成发布:

npm login
npm publish --access public
  
若为私有包且使用 scoped 名称,需设置 access 权限。

第六章:开源运营与社区共建之道

Vue封装组件并发布到npm仓库 前端模块化作为前端必备的一个技能,已经在前端开发中不可或缺;而模块化带来项目的规模不断变大,项目的依赖越来越多;随着项目的增多,如果每个模块都通过手动拷贝的方式无异于饮鸩止渴,我们可以把功能相似的模块或组件抽取到一个npm包中;然后上传到私有npm服务器,不断迭代npm包来更新管理所有项目的依赖。... 阅读详情

相关推荐

机器视觉/将HIK海康面阵相机连接Halcon软件

本文简述了如何将海康面阵相机连接到Halcon软件中进行实时取图的过程。

Dahe.qu 4869

浅谈前端八大UI库,web开发基础

面试题千万不要死记,一定要自己理解,用自己的方式表达出来,在这里预祝各位成功拿下自己心仪的offer。需要完整面试题的朋友可以点击蓝色字体免费获取由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)面试题千万不要死记,一定要自己理解,用自己的方式表达出来,在这里预祝各位成功拿下自己心仪的offer。需要完整面试题的朋友可以点击蓝色字体免费获取。

2301_76232361的博客 4564

天龙八部TLBB系列 - 网单用数据库修改为其他门派

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等) --- 天龙八部修改门派

空名先生 9430

2024 热门前端 UI 组件库超全汇总!

Radix UI 是一个开源的UI组件库,专为快速开发、易于维护和可访问性优化而设计。它是一个无样式的组件库,允许开发者完全控制组件的样式,同时提供了一套全面的UI组件和工具,帮助开发者构建美观、易于访问且具有高性能的应用。在前端开发的过程中,UI 组件库扮演着至关重要的角色。它们不仅助力开发者迅速构建页面原型,还能确保页面风格的统一性,从而显著提升开发效率。本文就来盘点那些前端领域广泛认可且常用的 UI 组件库,为开发者提供参考。图片。

leyang0910的博客 1万+

46、聚类算法在智能交通数据分析中的应用

本文探讨了聚类算法在智能交通数据分析中的应用,介绍了K-均值算法、K-中心点算法和基于模型的聚类算法的基本原理及特点,并结合实际交通数据讨论了其应用场景与挑战。通过聚类分析,能够从海量交通数据中发现隐藏模式,为交通管理和规划提供科学依据。文章还展示了具体的案例分析和实现流程,为未来智能交通系统的发展提供了参考。

zz67890的博客 134

ESP32-S3驱动OV3660摄像头原理图设计,已量产

本文重点拆四条主线:多来源输入电源如何收敛到 3V3,摄像头三路供电如何拆分,ESP32-S3 如何接住 DVP 数据流与外部存储,以及音频/补光/传感外围怎样挂到主控边上。至于最终图像帧率、算法策略和软件时序,当前原理图未体现。

不脱发的程序猿 984

2022浅谈前端八大UI库

这里之所以选出这个八个,是因为咱们的一个篇幅关系,不可能把所有的好的前端UI库都拿出来说一遍,所以我就挑出来了我个人感觉八个比较有代表性的 UI 库。那么下面我们一个一个来看。

Googlezc的博客 5316

180.在 Vue3 中使用 OpenLayers 实现多个多边形的绘制、编辑、删除与清空

【摘要】本文介绍如何在Vue3+TypeScript环境下使用OpenLayers实现多边形地图交互功能。通过Composition API封装核心逻辑,实现了多边形绘制、编辑、删除及清空等操作。关键技术包括:使用VectorLayer管理图形数据,Draw/Modify/Select交互控制,以及通过ref()管理交互状态。文中提供了完整代码示例,并解决了交互对象叠加问题,为开发GIS应用提供了基础模块。该方案支持扩展为数据库存储、后端交互等高级功能。

小彭的博客 770

npm(五):构建组件发布npm包全流程 (使用rollup打包工具)

网上很少有自制npm包的教程,而且很多难点,因此我做了这期博客这样大家就不用去二次爬坑了。 自制前端插件并发布到npm一般都需要打包工具,因为npm本身是运行在node里的,而node不支持es6的import语法,而前端包一般都使用import语法来模块化,所以我们需要用打包工具+babel。...

知之为知之,不知为不知 8000

R语言中5种正态性检验的方法

统计学中的t检验和方差分析等方法的应用条件是样本都来自正态总体或近似正态总体,只有符合这个条件,才能用这些方法来检验各样本所属的总体参数的差异显著性。文本向大家介绍在R语言中检验正态性的几种方法: 1、Kolmogorov-Smirnov检验 K-S检验检验单一样本是否来自某一特定分布。比如检验一组数据是否为正态分布。它的检验方法是以样本数据的累积频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。K-S检验的原假设和备择假设为: H0:样本所来自的总体分布服从

Mrrunsen的博客 2万+

12S BMS 核心设计:基于 STM32H743+BQ34Z100 的 SOC/SOH 实现与全链路技术解析(上)

本文详细介绍了基于STM32H743和BQ34Z100的12串锂电池管理系统(BMS)设计。该系统采用主控制器+专用电量监测计架构,可实现高精度SOC(±1%)和SOH(±2%)估算,支持36V-50.4V电压范围。硬件设计包括电压/电流采样、温度测量、保护电路等模块,软件实现基于HAL库开发,采用DMA方式提高I2C通信效率。系统通过TI专利的ImpedanceTrack™算法实现三维融合估算,并具备完善的保护功能。该设计适用于电动工具、轻型电动车等中功率设备,具有精度高、响应快。

bother3000的博客 1394

【封装UI组件库】手把手教你仿一下Element-ui的Button组件(发布至npm)

所谓UI组件库,就是封装了平常项目开发中经常会使用的页面组件,发布至npm库中作为插件供项目组成员及其他开发者使用(不发布也行),目的就是为了避免多次重复劳动。 以插件的形式使用可以做到即插即用,非常方便。 市面上热门的UI组件库有Element-ui(与Vue框架配合使用)、Ant Design(与React框架配合使用)等等… 本文主要通过讲解Element-ui封装一个组件的思路,来带领大家自己上手实践一下如何封装自定义组件。最后也会讲述如何把成品发布至npm云端库来呈现我们的测试插件。 先上一张效果

double_sweet1的博客 2758

第28节:cesium 加载高程数据(含源码+视频)

cesium 加载高程(地形)数据

qq_29384639的博客 1742

从零开始封装React UI 组件库并发布到NPM

从零开始封装React UI 组件库并发布到NPM

sinat_33370468的博客 1420

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Vue2自己封装的基础组件库或基于Element-ui再次封装的基础组件库,如何发布到npm并使用(支持全局或按需引入使用),超详细

Vue2自己封装的基础组件库或基于Element-ui再次封装的基础组件库,如何发布到npm并使用(支持全局或按需引入使用),超详细

wocwin的博客 6014

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

组件封装并发布自己的npm包

使用vue框架开发,封装自己私有的组件库上传到npm

2302_76361520的博客 960

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

vue封装组件

使用Vue框架进行开发,组件封装是一个很常规的操作。一个封装好的组件可以在项目的任意地方使用,甚至我们可以直接从npm仓库下载别人封装好的组件来进行使用,比如iview、element-ui这一类的组件库。但是每个公司的业务场景可能不同,开发人员还是得必须封装自己得组件,如果换了一个项目,那么我们就只能复制组件代码到新的项目里面去了,这样稍显麻烦,其实我们可以将组建上传到npm仓库,要用的时候可以直接从npm安装使用。方面使用,任何项目无缝衔接。可作为开源项目,积累经验。

2401_89097888的博客 2298

Vue3+element-plus+vite 组件的二次封装-- 组件库发布到npm

Vue3+element-plus+vite 组件的二次封装-- 组件库发布到npm。1. Vue3+element-plus+vite 组件的二次封装,封装了头部的搜索条件栏,tabel栏,分页栏,form表单,都设置成了通过json可配置项,方便复用; 2. 封装好了就开始打包,并且进行本地测试; 3. 组件库发布到npm; 4. 添加vitest单元测试框架; 5. 添加vuepress文档。

Penk的博客 4203

从零发布一个 Vue 3 Button 组件到 npm(基于 Vite)

步骤操作1️⃣创建项目并初始化2️⃣编写Button.vue组件3️⃣配置构建工具4️⃣编辑构建脚本和发布信息5️⃣登录并发布到 npm6️⃣测试在其他项目中安装使用7️⃣更新版本并发布👏 到这里,你就完成了从 0 到发布 Vue 组件到 npm 的完整流程!是不是很简单?如果你还想继续发布更多组件,甚至封装成一个组件库,也可以按照这个流程反复使用!📮有问题欢迎评论提问,我会尽量解答!

Jinxiansen0211的博客 1168

vue项目封装组件发布到npm笔记

一、创建项目 新建一个文件夹,在该文件夹目录下的控制台执行vue init webpack-simple,创建vue新项目,然后在执行npm install安装依赖,创建好vue项目后,在src下新建一个放组件源码的文件夹,我下面是两个组件,最好是所有组件放在一个文件夹。 二、创建组件 自己随便写一个小的ui组件,自己测试一下没问题即可。 <template> &lt...

花落微凉梦清幽的博客 1163

Vue封装插件并发布到npm仓库

为什么要将插件发布到npm上?1、支持开源,优秀插件发布到npm上,更多人使用,集思广益,使代码的性能有更好的提升。2、重复代码免于多次重写,复用性高将插件发布到npm仓库与将插件发布私服比较类似,步骤简单,如下。...

weixin_46045382的博客 853

npm市场发布包步骤(npm发布vue组件)

输入登录指令之后会出现一些的提示,需要输入npm的用户名,密码(输入密码的时候终端输入行是不会显示的),邮箱,邮箱收到的验证码。如果有报错,根据报错提示去百度一下,如我这里一开始发布报错是因为项目有个属性是私有的,所以没能发布成功,改成false即可。发布的时候需要注意的是,插件必须要有package.json文件,没有就执行npm init命令初始化。6.如果没有报错或者显示了自己的账号证明就是登录成功了,也可以通过指令查看当前登录的账号。如果出现淘宝的镜像源则需要切换成官方的镜像源。

weixin_52941842的博客 842

Vue二次封装组件并发布到npm仓库

Vue二次封装组件并发布到npm仓库,快速上手npm。

sunwanfulove的博客 1985
上一篇: JavaScript路由配置常见陷阱与解决方案(90%开发者都忽略的细节)
下一篇: 前端高手都在用的技巧:JavaScript动态注入Less变量提升开发效率
CodeWhim
博客等级 码龄1年 153粉丝 2003原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值