直播回顾|6个实例带你解读TinyVue 组件库跨框架技术

TinyVue:一款轻量级且功能强大的Vue UI组件库 TinyVue是一款基于Vue的UI组件库,它同时支持Vue 2.0和Vue 3.0,为开发者提供了丰富的组件选择,旨在提升开发效率和项目质量。TinyVue由OpenTiny团队打造,秉承了Vue的核心设计理念,如组件化、虚拟DOM和响应式数据绑定等,但在代码量上进行了大幅优化,以实现更小的体积和更高的性能。TinyVue作为一款轻量级且功能强大的Vue UI组件库,以其跨版本支持、跨端支持、组件丰富、国际化与主题定制等特性赢得了众多开发者的青睐。 阅读详情

在本期《手把手教你实现mini版TinyVue组件库》的主题直播中,华为云前端开发DTSE技术布道师阿健老师给开发者们展开了组件库跨框架的讨论,同时针对TinyVue组件库的关键技术进行了剖析,并通过项目实战演示了一份源码编译出2个不同Vue 框架的组件。最后针对框架间的差异,也给出了相应的技术方案,帮助开发者们实战完成组件库跨框架。

直播链接:https://bbs.huaweicloud.com/live/DTT_live/202404171630.html

一、手把手带你实现mini 版 TinyVue

当前实现组件库的跨框架技术,是提升Web页面开发效率与应用灵活性的重要手段。本次直播的实战环节,用300行代码模拟了 TinyVue 组件库的跨框架实现,开发者可以在mini 版组件库中,复现跨框架及多端适配两大功能。同时通过本期的实操环节,也给开发者呈现一个明确且详尽的实现流程,协助大家更好的理解并掌握跨框架技术并运用到实际工作中。

具体源码可参考: https://github.com/opentiny/mini-tiny-vue

在这里插入图片描述

二、为什么要实现组件库跨框架呢?

目前,Vue拥有Vue2和Vue3两大主要分支,它们在开发上并不兼容。Vue2还可以进一步细分为2.6及之前的版本和Vue2.7这两个小分支,其中Vue2.7作为2.6与Vue3之间的过渡版本,在开发上起着桥梁作用。

对于现有项目来讲,如果迁移到Vue3,难免存在API及组件功能不同步的情况,因此迁移过程将存在一定的成本及风险。而在当前的Vue生态中,诸如Antdesign和Element等知名组件库都推出了支持Vue2和Vue3的组件。然而这些官网文档和API却并不通用,这意味着实际上是提供了两个独立的组件库来实现跨框架支持的。

在这里插入图片描述

作为致力于实现跨框架的TinyVue组件库,旨在实现跨不同版本的Vue框架兼容性,其独特之处在于采用单份源代码策略,通过智能编译技术,能够同时生成适用于Vue 2.6、2.7版本以及Vue3版本的组件包。这意味着开发者只需维护同一个官方网站,并提供一套标准化的API接口,即可满足多版本Vue用户的需求。这种设计有效地减少了TinyVue组件库的维护成本和未来技术迁移的风险。

三、关键技术剖析

首先以一个button组件为例,组件的左上部分是模板,作为组件的入口,它集成了适配层、renderless逻辑以及theme样式(此处暂不涉及theme部分)。值得注意的是,组件内部并未包含任何逻辑代码,所有逻辑均被抽离至renderless中,这里可以按照下图所示观察其调用关系。

在这里插入图片描述

  • 从vue文件(即组件的入口文件)开始,引入了适配层中的setup函数和无状态的renderless函数。setup函数的调用过程中,将包含状态的props和context,以及无状态的纯函数renderless一并传入。

  • 然后进入setup函数内部,适配层中的tools函数会构造一个对象,用于抹平框架之间的差异,并将该对象传递给renderless函数。这样,在renderless函数中,可以放心地引用该对象,而无需担心组件是在vue2还是vue3环境下运行。

  • 接下来调用纯函数renderless。它为每个组件构造一个与当前组件相关联的state和api,这些都是有状态的值。随后,这些状态值被返回给适配层。

  • 最后适配层将这些状态值传递给模板进行绑定。具体而言,state被绑定到模板的数据值上,而api则被绑定到模板的事件上。

整体来看,调用过程就像一个管道,数据从模板开始流动,经过逻辑处理,再流回到模板上。在这个过程中,它流经的适配层巧妙地抹平了框架之间的差异,正是TinyVue跨框架的精妙所在。

四、如何解决框架差异统一,实现跨框架?

1、框架间的差异是什么?

Vue3是一次全新的框架升级,所以它的语法以及内部实现,都发生了很大的变化,这些是在开发跨框架组件库时必须考虑的问题。而在长期的跨框架组件库的开发中,可能会遇到众多的框架差异,具体可以将这些差异归结为2大类:

(1)框架对外差异,直接影响到模板的开发以及某些语法。例如:

  • 模板语法差异
  • 生命周期名称变化
  • 移除了事件修饰符、过滤器、消息订阅
  • v-model 语法糖差异
  • 指令,动画组件的差异

(2)框架内部差异,主要是Vue runtime层面的实现差异。在开发跨框架组件过程中,需要访问组件内部某些变量时可能会遇到,例如:

  • 组件实例的差异
  • Vnode结构的差异
  • 移除了$children, $scopedSlots等

2、 框架差异及应对方案

(1)响应式函数引入包差异:

在Vue 2.6 中引入响应函数

import { reactive, ref, watch, ... } from '@vue/composition-api'

在Vue 3 中引入响应函数

import { reactive, ref, watch, ... } from 'vue'

解决方案:通过在适配层暴露一个hooks变量,统一响应式函数的访问,代码如下

// adapter/vue2/index.js
import * as hooks from '@vue/composition-api'
// adapter/vue3/index.js
import * as hooks from 'vue'
// adapter/index.jsexport { hooks }

(2)VNode和 h 函数的差异:在Vue 2.6中,渲染函数的 VNode 参数结构

{  
  staticClass: 'button',
  class: { 'is-outlined': isOutlined },  
  staticStyle: { color: '#34495E' },  
  style: { backgroundColor: buttonColor },  
  attrs: { id: 'submit' },  
  domProps: { innerHTML: '' },  
  on: { click: submitForm },  
  key: 'submit-button'
}

在Vue 3 中,渲染函数的 VNode 参数结构是扁平的

{  
  class: ['button', { 'is-outlined': isOutlined }],
  style: [{ color: '#34495E' }, 
  { backgroundColor: buttonColor }],  
  id: 'submit',  innerHTML: '',  
  onClick: submitForm,  
  key: 'submit-button'
}

解决方案:通过在适配层暴露一个h函数,让Vue3框架也能支持Vue2的参数格式。这样就能统一h 函数的用法,同时让在Vue2时期开发的组件在Vue3框架下兼容运行。

// adapter/vue2/index.js
const h = hooks.h

// adapter/vue3/index.js 
const h = (component, propsData, childData) => {  
  // 代码有省略......   
  let props = {}  let children = childData
  
  if (propsData && typeof propsData === 'object' && !Array.isArray(propsData)) {    
  props = parseProps(propsData)    
  propsData.scopedSlots && (children = propsData.scopedSlots)  
  } else if (typeof propsData === 'string' || Array.isArray(propsData)) {    
  childData = propsData  
  }
  
  return hooks.h(component, props, children)
  } 
  
// adapter/index.js
export { h }

(3)v-model的差异:在Vue 2.6中,在组件上使用 v-model 相当于绑定 value 属性和 input 事件

  <ChildComponent v-model="pageTitle" /> 
  <!-- 会编译为:--> 
  <ChildComponent :value="pageTitle" @input="pageTitle = $event" />

在Vue 3 中,v-model 相当于绑定了 modelValue 属性和 update:modelValue 事件

  <ChildComponent v-model="pageTitle" />  
  <!-- 会编译为:-->
  <ChildComponent :modelValue="pageTitle" @update:modelValue="pageTitle = $event" />

解决方案:通过Vue2中声明 model的option 选项,来自定义Vue2框架下v-model 的默认绑定 prop 和 event 。

defineComponent({ 
  model: {   
    prop: 'modelValue', // 默认值为 value   
    event: 'update:modelValue' // 默认值为 input  
  },  
  props: {    
    modelValue: String 
  } // ...
})

(4)slots的差异: 在Vue 2.6中,有普通插槽 slots 和 作用域插槽 scopedSlots

// 普通插槽为对象,可以直接使用
this.$slots.mySlot

// 作用域插槽为函数,要按函数来调用
this.$scopedSlots.header()

在Vue 3 中,统一为 slots 函数的形式

// 将所有 scopedSlots 替换为 slots
this.$slots.header() 

// 将原有 slots 改为函数调用方式
this.$slots.mySlot()

解决方案:通过构建一个vm.$slots属性, 来统一2个框架中,访问slots的访问。

// adapter/vue2/index.js  
  Object.defineProperties(vm, {     
    // ......    
    $slots: { get: () => instance.proxy.$scopedSlots },    
    $scopedSlots: { get: () => instance.proxy.$scopedSlots },  
  })
  
   // adapter/vue3/index.js   
   Object.defineProperties(vm, {    
     // ......    
     $slots: { get: () => instance.slots },    
     $scopedSlots: { get: () => instance.slots },  
   })

我们在vm下,还暴露了许多框架runtime层面上的组件属性,用于抹平跨Vue框架的差异。在开发跨框架组件时,要使用vm来访问组件,避免直接访问组件的instance。

// 创建一个Vue2 运行时的兼容 vm 对象
const createVm = (vm, _instance) => {  
  const instance = _instance.proxy   
  
  Object.defineProperties(vm, {    
    $attrs: { get: () => instance.$attrs },    
    $listeners: { get: () => instance.$listeners },    
    $el: { get: () => instance.$el },    
    $parent: { get: () => instance.$parent },    
    $children: { get: () => instance.$children },    
    $nextTick: { get: () => hooks.nextTick },   
    $on: { get: () => instance.$on.bind(instance) },    
    $once: { get: () => instance.$once.bind(instance) },    
    $off: { get: () => instance.$off.bind(instance) },    
    $refs: { get: () => instance.$refs },    
    $slots: { get: () => instance.$scopedSlots },    
    $scopedSlots: { get: () => instance.$scopedSlots },    
    $set: { get: () => instance.$set }  
  })
  
  return vm}
  // 创建一个Vue3 运行时的兼容 vm 对象
  const createVm = (vm, instance) => {      
  
    Object.defineProperties(vm, {    
      $attrs: { get: () => $attrs },    
      $listeners: { get: () => $listeners },    
      $el: { get: () => instance.vnode.el },    
      $parent: { get: () => instance.parent },    
      $children:{get:()=>genChild(instance.subTree)},    
      $nextTick: { get: () => hooks.nextTick },    
      $on: { get: () => $emitter.on },    
      $once: { get: () => $emitter.once },    
      $off: { get: () => $emitter.off },    
      $refs: { get: () => instance.refs },    
      $slots: { get: () => instance.slots },    
      $scopedSlots: { get: () => instance.slots },    
      $set: { get: () => $set }  
    })
      
    return vm
}

(5)指令的差异:Vue3的指令生命周期的名称变化了, 但指令的参数基本不变
在这里插入图片描述

解决方案:在开发指令对象时,通过补齐指令周期,让指令对象同时支持Vue2 和 Vue3
在这里插入图片描述

(6)动画类型的差异:
在这里插入图片描述

解决方案:在全局的动画类名文件中,同时补齐2个框架下的类名,让动画类同时支持Vue2 和 Vue3的Transition组件

// 此处同时写了 -enter \  -enter-from 的类名,所以它同时支持vue2,vue3的 Transition 组件。
.fade-in-linear-enter,
.fade-in-linear-enter-from,
.fade-in-linear-leave-to {  
  opacity: 0;
}

在构建TinyVue跨框架组件库的过程中,团队集中攻克了多个Vue框架间的关键差异点,其中六项尤为突出且具有代表性。

开发TinyVue跨框架组件库时,面对Vue2与Vue3的重要区别,我们确立了两个核心原则:一是“求同去异”,即在编写组件时选用两框架都支持的通用语法,如因Vue2不支持多根节点组件而统一采用单根节点设计;二是“兼容并包”,通过构建适配层隐藏框架间的差异,提供统一接口,无需开发者手动判断框架版本,这样他们可以更专注于逻辑开发。在指令对象和动画类名等细节方面,同样贯彻这一简化差异、广泛兼容的理念。

关于 OpenTiny

在这里插入图片描述

OpenTiny 是一套企业级 Web 前端开发解决方案,提供跨端、跨框架、跨版本的 TinyVue 组件库,包含基于 Angular+TypeScript 的 TinyNG 组件库,拥有灵活扩展的低代码引擎 TinyEngine,具备主题配置系统TinyTheme / 中后台模板 TinyPro/ TinyCLI 命令行等丰富的效率提升工具,可帮助开发者高效开发 Web 应用。


欢迎加入 OpenTiny 开源社区。添加微信小助手:opentiny-official 一起参与交流前端技术~更多视频内容也可关注B站、抖音、小红书、视频号
OpenTiny 也在持续招募贡献者,欢迎一起共建

OpenTiny 官网:https://opentiny.design/
OpenTiny 代码仓库:https://github.com/opentiny/
TinyVue 源码:https://github.com/opentiny/tiny-vue
TinyEngine 源码: https://github.com/opentiny/tiny-engine

欢迎进入代码仓库 Star🌟TinyEngine、TinyVue、TinyNG、TinyCLI~
如果你也想要共建,可以进入代码仓库,找到 good first issue标签,一起参与开源贡献~

vue实现本地使用tinymce富文本编辑器 效果图: 第一步:去官网下载本地包https://www.tiny.cloud/get-tiny/self-hosted/ (1)下载社区版就可以 上面版本比较卡下载不下来的话,就下载下面版本的 (2)下载下来解压后是这样的 然后进入js文件夹找到tinymce文件夹 (3)将这个文件夹的所有内容,复制出来,粘贴到vue项目中的static文件夹下 第二步:引入 (1)在index.html中引入tinymce.js文件 <scrip... 阅读详情

相关推荐

tinyvue一个非常精简的vuejs的实现

这里有非常详细的教程,教你怎么写一个自己的tiny-vue 8 小时实现自己的迷你版vuejs

TinyVue - 华为云 OpenTiny 出品的企业级前端 UI 组件库,免费开源,同时支持 Vue2 / Vue3,自带 TinyPro 中后台管理系统

华为最新发布的前端 UI 组件库,支持 PC 和移动端,自带了 admin 后台系统,完成度很高,web 项目开发又多一个选择。

那些免费的砖 3618

闲鱼x-sign、x-mini-wua、x-umt三字段协同验证机制解析

在移动客户端风控体系中,设备标识与行为签名是保障接口安全的核心技术。x-sign并非传统时间戳+密钥的静态签名,而是融合设备特征、运行时状态与服务端动态因子的多阶段位运算结果;x-mini-wua作为小程序轻量水印,依赖主App注入的短时效sessionKey与截断时间戳;x-umt则通过设备硬件与网络环境联合编码实现强绑定。三者构成‘设备—环境—行为’三位一体的交叉验证链路,广泛应用于电商API防护、二手平台数据采集及自动化运营等场景。本文基于Android/iOS真机逆向与Frida动态分析,揭示其生成

weixin_30457551的博客 422

华为开源项目OpenTiny的TinyVue组件库适用于哪些地方?

组件库目前是有80+的组件,1500+组件API接口,同时其中Table、Tree、Select等高频组件均内置虚拟滚动,在10万大数据场景下保持丝滑体验。所以其实相对于其他组件库的话,性能还是非常高的。第三个就是可以支持大屏系统,提供多种页面模式,轻松点击即可生成页面结构,同时不断添加新的图表组件,包含A-Charts等,只需要简单拖拽,少量设置即可完成页面搭建。第四个就是可以支持工业制造系统,可支持多种页面布局,通过可视化图表集成控制工作台各个场景业务,让使用者直观了解业务数据情况,进行智能分析。

ihhhh1的博客 1517

光电振荡器(OEO):从原理到应用,解锁高频微波信号新纪元

本文深入解析了光电振荡器(OEO)的核心原理与前沿应用。OEO通过巧妙的光-电-光转换机制,利用光学谐振腔产生高频、高纯度、低相位噪声的微波信号,有效突破了传统电子电路的频率瓶颈。文章详细拆解了其工作流程,并探讨了在雷达系统、高速光通信及精密测量等领域的硬核应用价值。

weixin_29231027的博客 366

避坑指南:STM32CubeMX配置SDIO4bit模式时为什么卡在HAL_SD_ConfigWideBusOperation?

本文深入分析了使用STM32CubeMX配置SDIO 4位模式时,程序在HAL_SD_ConfigWideBusOperation函数处卡死的常见问题。文章从硬件连接、CubeMX配置、初始化序列及HAL库底层实现等多个维度剖析根源,并提供了从初始化流程优化到增强代码鲁棒性等实战解决方案,帮助开发者彻底解决这一棘手难题。

pca5navigator的博客 825

报名倒计时两周|2024 OpenTiny 开源之夏项目直播解读回顾

目前TinyVue的Grid表格组件并没有将组件逻辑拆分成renderless函数,后续无法扩展到其他前端框架中,因此需要对Grid组件进行重构,将组件逻辑抽离成renderless。完成重构之后,还需要基于目前的虚拟滚动进行优化,优化大数据场景下树表、单元格编辑、行列拖拽等场景的功能和性能,实现动态高度的虚拟滚动、树表懒加载等特性。

OpenTiny的博客 1354

STM32F103xx / STM32F429VET6最小系统原理图

心血来潮想试一下STM32F4系列和F1系列在编程上有什么差别,手头没有开发板,本着能勤俭节约的原则自己先做一块看看能不能成,看了一下STM32F429VET6的芯片在F429xx中最便宜,对照着数据手册绘制了原理图画了PCB,目前打板中,焊接完如果跑不通回来修改文章。这里我们可以看到,VDD是标准工作电压,VDDA是模拟工作电压,且VDDA必须与VDD等电位,VBAT是备份工作电压,一般接纽扣电池电源,如果存在VREF+引脚,则要求VDDA-VREF+ < 1.2V。截图下来比较糊,不知道为什么。

m0_51294753的博客 1万+

探索TinyVue:跨端跨框架的企业级UI组件库

上面板</div><div class="demo-split-pane">下面板</div></div><div class="demo-split-pane">右面板</div>

qq_52752298的博客 1423

Halcon形状模板匹配实战:inspect_shape_model参数优化指南

本文深入解析Halcon形状模板匹配中inspect_shape_model参数的优化技巧,涵盖NumLevels和Contrast参数的实战应用。通过具体案例展示如何平衡匹配速度与精度,帮助开发者高效调试形状模型,提升工业视觉检测的准确性和效率。

weixin_30342209的博客 618

蚂蚁区块链第20课 可信存证司法链从入门到实施

1. 摘要 杭州互联网法院和司法区块链平台的技术建设方都是蚂蚁金服区块链。那么,如何借助蚂蚁的技术能力和服务能力,快速对接上司法链,便于后续打通存证/维权的闭环流程。本文介绍蚂蚁区块链可信存证的业务及特点,费用及接入方法等,具有实战指导意义。 2. 蚂蚁区块链可信存证的介绍 蚂蚁区块链可信存证具备全链路可信,司法权威节点见证,安全隐私保护,一站式接入能力,全国首家法律认可的区块链存证平台。 2...

辉哥的技术投资路 6087

新手适合用什么Vue组件库?TinyVue组件库好用吗?

最近 TinyVue组件库的热度也是持续上升,怀揣着这个疑问,作为新手的我便尝试了一下使用这个组件库。Ant Design 的 Vue 实现,组件的风格与 Ant Design 保持同步,风格俏皮简约,更适合用过 ant design 的 react 框架组件库的童鞋。整体感受下来还是很流畅的,在官网给出的多个组件示例中,API 的设计看起来也都友好合理。常规支持:多语言、自定义主题、按需引入、内置过渡动画 ,文档详细,组件齐全。开箱即用的多语言组件库,支持单独配置和升级,Vue2 和 Vue3 都适配。

LLI025的博客 862

RHCA II之路---EX442-10

这题比较耗时,可以多开2个窗口让他跑起来后先做后面的题目。

Q先生 587

从自研走向开源的 TinyVue 组件库

本文介绍了TinyVue开源征程的三个阶段

OpenTiny的博客 728

Open3D (C++) 使用点云创建数字高程模型DEM

Open3D (C++) 使用点云创建数字高程模型DEM

点云侠的博客 1392

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

优化永不止步:TinyVue v3.20.0 正式发布,更美观的官网UI,更友好的文档搜索,更强大的主题配置能力~

ThemeData是自定义主题数据格式,用户可以通过data属性,传入覆盖的全局CSS 变量, 通过css属性,传入有效的 CSS 规则块。/** 主题的ID */ id?: string /** 主题的名称 */ name?: string /** 主题的中文名称 */ cnName?* 需要追加的全局css变量的对象* 比如:{ 'tv-base-color-brand' : '#1476ff' } 会追加到 :root { --tv-base....... }* */ data?

OpenTiny的博客 1450

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

给大家讲讲TinyVue组件库项目介绍

TinyVue 是一套跨端、跨框架的企业级 UI 组件库,支持 Vue 2 和 Vue 3,支持 PC 端和移动端。📦 包含 80 多个简洁、易用、功能强大的组件🖖 一套代码同时支持 Vue 2 和 Vue 3🖥️ 一套代码同时支持 PC 端和移动端🌍 支持国际化🎨 支持主题定制📊 组件内部支持配置式开发,可支持低代码平台可视化组件配置💡 采用模板、样式、逻辑分离的跨端、跨框架架构,保障灵活性和可移植性。

happyleyouyou的专栏 1040

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

原来 TinyVue 组件库跨框架(Vue2、Vue3、React、Solid)是这样实现的?

前端组件库跨框架是指在不同的前端框架(如 React、Vue、Solid 等)之间共享和复用组件的能力。这种能力可以让开发者在不同的项目中使用同一套组件库,从而提高开发效率和代码复用性。

OpenTiny的博客 1134

使用 TinyVue 组件库搭建前端项目的实操体验

在这个示例中,我们创建了一个包含用户名和密码输入框的表单,并添加了表单验证功能。总的来说,TinyVue 组件库为前端开发提供了强大的支持和便利。通过这次活动,我不仅提升了自己的开发技能,还对 OpenTiny 的产品有了更深入的了解。在这个示例中,我们引入了 TinyButton 组件,并在按钮点击时触发一个成功消息。TinyVue 组件库提供了丰富的 UI 组件,可以满足各种业务需求。在项目中,我使用了 TinyVue 提供的多个组件来构建页面。首先,我按照官方文档的指引,完成了开发环境的准备工作。

Echo_Wish 1334

推荐一款适用于Vue项目的UI组件库——TinyVue

今天给大家推荐了TinyVue这款组件库,教了一下TinyVue怎么使用,总的来说,它的文档全面,组件丰富,容易上手,非常适合用来开发一些管理系统的中后台页面,如果你有幸看到这篇文章不妨去尝试尝试吧。

qq_34147402的博客 884

【亲测免费】 探索 Tiny Vue:轻量级的前端框架新星

探索 Tiny Vue:轻量级的前端框架新星 【免费下载链接】tiny-vue TinyVue is an enterprise-class UI component library of OpenTiny community, support both Vue.js 2 and Vue.js 3, as well as...

gitblog_00082的博客 974

TinyVue:与 Vue 交往八年的组件库

Vue 是开源的,与 Vue 交往的 TinyVue 也应该是开源的。但从自研走向开源的过程并不是一帆风顺,从最初的想法到最终落地,前后花了五年多。2023 年初,TinyVue 终于借助我们的开源网站(https://opentiny.design/) 正式与大家见面。回想这八年对 Vue 的坚持,也是自己对前端框架的坚持。

OpenTiny的博客 1987

快速入门 TinyVue 组件库一键换肤!get“多主题适配”技能

本实操内容通过实现 TinyVue 中 Button 组件和 Alert 的类 element 主题适配,让开发者感受到 TinyVue 跨设计规范的亮点特性

OpenTiny的博客 1632

【亲测免费】 TinyVue 使用指南

TinyVue 是 OpenTiny 社区推出的一个企业级 UI 组件库,支持 Vue.js 2 和 Vue.js 3,同时适用于桌面和移动端应用。它提供了 104 个干净、易用且强大的组件,支持国际化、主题定制,并且可以配置开发以支持低代码平台。TinyVue 采用跨端和跨框架的架构,使得它灵活且可移植。 ## 2. 项目快速启动 ### 安装 根据您的 Vue.js 版本,使用以下命令安...

gitblog_01095的博客 611

开发者的福音:TinyVue 组件库文档大优化!类型更详细,描述更清晰!

从今年2月份开源以来,有不少朋友给我们 TinyVue 组件库提了文档优化的建议,这些建议都非常中肯,我们也在持续对文档进行优化,并且从中总结出了大家对于文档优化的一些共性问题,形成了一份文档

OpenTiny的博客 1086

推荐一下华为的Vue组件库——TinyVue

本文简单介绍了一下TinyVue这个组件库,对于有中后台业务开发需求的小伙伴,正好是Vue技术栈的可以考虑考虑。

qq_34147402的博客 1046
上一篇: OpenTiny 亮相 W3C 2024春季顾问委员会会议,共话行业新趋势。
下一篇: 重回铁王座!时隔5年,Quill 2.0 终于发布啦!
OpenTiny社区
博客等级 码龄4年 1540粉丝 266原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值