TinyVue v3.19.0 正式发布!Tree 组件终于支持虚拟滚动啦!

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

本文由体验技术团队Kagol原创。
我们非常高兴地宣布,2024年10月28日,TinyVue 发布了 v3.19.0 🎉。

本次 3.19.0 版本主要有以下重大变更:

  • 所有组件全面升级到 OpenTiny Design 新设计规范,UI 更美观、更符合现代审美。
  • 增加 VirtualTree 虚拟树组件。
  • 增加 VirtualScrollBox 虚拟化容器组件。
  • 增加 Sticky 粘性布局组件。

详细的 Release Notes 请参考:https://github.com/opentiny/tiny-vue/releases/tag/v3.19.0

本次版本共有16位贡献者参与开发,其中 Nowitzki41 / Simon-He95 / BWrong 是新朋友👏

  • Nowitzki41 - 新增贡献者✨
  • Simon-He95 - 新增贡献者✨
  • BWrong - 新增贡献者✨
  • shenjunjian
  • kagol
  • zzcr
  • gimmyhehe
  • GaoNeng-wWw
  • wuyiping0628
  • gweesin
  • James-9696
  • chenxi-20
  • MomoPoppy
  • AcWrong02
  • Davont
  • Youyou-smiles

也感谢新老朋友们对 TinyVue 的辛苦付出!
你可以更新 @opentiny/vue@3.19.0 进行体验!

我们一起来看看都有哪些更新吧!

全面升级新 UI,更符合现代审美

自从 TinyVue 组件库去年开源以来,一直有小伙伴反馈我们的 UI 不够美观,风格陈旧,不太满足现阶段审美。

于是我们花了大量时间对组件 UI 进行优化,全面适配了 OpenTiny Design 新设计规范,并终于在 v3.19.0 正式发布!

整体效果如下:

在这里插入图片描述

如果你安装 v3.19.0 版本的 TinyVue 组件库,默认效果就是新设计规范。

# 安装依赖
npm i @opentiny/vue@3.19.0
<script setup lang="ts">
// 引入 TinyVue 的组件
import { TinyButton, TinyAlert } from '@opentiny/vue'
</script>

<template>
  <div>
    <tiny-button>取消</tiny-button>
    <tiny-button type="primary">确定</tiny-button>
  </div>
  <tiny-alert description="TinyVue 是一套跨端、跨框架的企业级 UI 组件库,支持 Vue 2 和 Vue 3,支持 PC 端和移动端。"></tiny-alert>
</template>

效果图:

在这里插入图片描述

新旧 UI 的效果对比,可以阅读以下文章:

  • 焕然一新!TinyVue 组件库 UI 大升级,更符合现代的审美!

增加 VirtualTree 虚拟树组件

说到 Tree 组件的虚拟滚动,还要回到2023年7月12日开发者 zouzhixiang 提交的一个 issue:✨ [Feature]: tree树形控件能增加虚拟滚动功能吗?#317。

现在 Tree 组件终于支持上虚拟滚动功能了!🎉🎉🎉

我们一起来体验下吧!

只需要配置下数据源和高度即可。

<script setup>
import { computed } from 'vue'
import { TinyVirtualTree } from '@opentiny/vue'

const treeOp = computed(() => ({
  nodeKey: 'label',
  data: data5.value
}))

<template>
  <tiny-virtual-tree
    height="600"
    :tree-op="treeOp"
  ></tiny-virtual-tree>
</template>

效果如下:

在这里插入图片描述

更多 VirtualTree 组件的功能,欢迎到 TinyVue 官网进行体验:https://opentiny.design/tiny-vue/zh-CN/smb-theme/components/virtual-tree

增加 VirtualScrollBox 虚拟化容器组件

我们不仅实现了 Tree 的虚拟滚动,还抽取了一个通用的虚拟滚动组件,可以将该组件用在任意列表类的场景,让大数据列表拥有虚拟滚动的能力,我们以表格组件为例,实现一个水平和垂直方向都能虚拟滚动的表格。

<template>
  <tiny-virtual-scroll-box v-bind="config">
    <template #default="{ params: { viewRows, viewCols, isScrollX, isScrollY, isTop, isBottom, isLeft, isRight } }">
      <div
        v-for="viewRow in viewRows"
        :key="viewRow.key"
        :style="viewRow.style"
        :class="rowClass({ viewRow, isScrollY, isTop, isBottom })"
      >
        <div
          v-for="viewCol in viewCols"
          :key="viewCol.key"
          :style="colStyle({ viewRow, viewCol })"
          :class="colClass({ viewCol, isScrollX, isLeft, isRight })"
        >
          <div class="vs-grid-cell">
            {{ viewRow.info.raw + ',' + viewCol.info.raw }}
          </div>
        </div>
      </div>
    </template>
  </tiny-virtual-scroll-box>
</template>

<script setup>
import { reactive } from 'vue'
import { TinyVirtualScrollBox } from '@opentiny/vue'

const genColumn = (total) => {
  const columns = []
  const columnSizes = []

  for (let i = 1; i <= total; i++) {
    columns.push(`c-${i}`)
    // 列宽在 120 到 180
    columnSizes.push(Math.round(120 + Math.random() * 60))
  }

  return { columns, columnSizes }
}

const genRow = (total) => {
  const rows = []
  const rowSizes = []

  for (let i = 1; i <= total; i++) {
    rows.push(`r-${i}`)
    // 行高在 24 到 36
    rowSizes.push(Math.round(24 + Math.random() * 12))
  }

  return { rows, rowSizes }
}

// 生成 10000 列
const { columns, columnSizes } = genColumn(10000)
// 生成 20000 行
const { rows, rowSizes } = genRow(20000)

const config = reactive({
  width: 900,
  height: 400,
  rowBuffer: 120,
  columnBuffer: 240,
  columns,
  columnSizes,
  rows,
  rowSizes,
  fixedColumns: [[0], [1]],
  fixedRows: [[0], [1]],
  spanConfig: [[3, 3, 2, 2]]
})

const rowClass = ({ viewRow, isScrollY, isTop, isBottom }) => {
  return {
    [viewRow.key]: true,
    'vs-row': true,
    'vs-fixed-top-last': viewRow.info.startLast && !isTop && isScrollY,
    'vs-fixed-bottom-first': viewRow.info.endFirst && !isBottom && isScrollY,
    'vs-is-last-row': viewRow.info.isLast
  }
}
const colClass = ({ viewCol, isScrollX, isLeft, isRight }) => {
  return {
    [viewCol.key]: true,
    'vs-cell': true,
    'vs-fixed-left-last': viewCol.info.startLast && !isLeft && isScrollX,
    'vs-fixed-right-first': viewCol.info.endFirst && !isRight && isScrollX,
    'vs-is-last-col': viewCol.info.isLast
  }
}
const colStyle = ({ viewRow, viewCol }) => {
  return { height: viewRow.style.height, ...viewCol.style }
}
</script>

<style scoped>
/* 样式部分省略 */
</style>

效果如下:

在这里插入图片描述

虚拟树也可以结合 VirtualScrollBox + Tree 组件进行实现,具体代码可以参考以下链接:

https://opentiny.design/tiny-vue/zh-CN/smb-theme/components/virtual-scroll-box#tree

更多 VirtualScrollBox 组件的功能,欢迎到 TinyVue 官网进行体验:https://opentiny.design/tiny-vue/zh-CN/smb-theme/components/virtual-scroll-box

增加 Sticky 粘性布局组件

Sticky 组件与 CSS 中 position: sticky 属性实现的效果一致,当组件在屏幕范围内时,会按照正常的布局排列,当组件滚出屏幕范围时,始终会固定在屏幕顶部。

“吸顶”效果在某些场景下能够有效提升网页的可用性和用户体验。
1、导航栏:Sticky 组件常用于固定页面顶部的导航栏。当用户滚动页面时,导航栏会保持在视口的顶部,方便用户随时访问其他页面链接。这种设计提升了用户体验,尤其是在内容较长的页面中。
2、文章标题:在长篇文章中,可以将章节标题设置为 Sticky。当用户滚动到该章节时,标题会固定在视口顶部,帮助用户更好地了解当前阅读的位置和内容结构。

使用起来也非常简单,只需要把需要“吸顶”的元素用 Sticky 组件包裹起来就行。

<tiny-sticky>
  <h2>🎉TinyVue v3.19.0 正式发布,全面升级到新设计规范,让 UI 更符合现代审美,并增加虚拟树、粘性布局等3个新组件~</h2>
</tiny-sticky>

默认是“吸顶”的,还可以配置“吸底”,设置偏移量、层级等。

  • offset:偏移距离,默认为 0px
  • position:吸附位置,可选值有 top(默认) / bottom
  • z-index:元素层级,默认为 100

效果如下:

在这里插入图片描述

更多 Sticky 组件的功能,欢迎到 TinyVue 官网进行体验:https://opentiny.design/tiny-vue/zh-CN/smb-theme/components/sticky

关于OpenTiny

OpenTiny官网:https://opentiny.design
TinyVue 源码:https://github.com/opentiny/tiny-vue (欢迎 Star ⭐)
TinyEngine 源码:https://github.com/opentiny/tiny-engine (欢迎 Star ⭐)
B站:https://space.bilibili.com/15284299
欢迎加入 OpenTiny 开源社区。添加微信小助手 opentiny-official 一起参与交流前端技术~

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

ROS专栏—基于STM32F103的INA219电源数据采集

文章主要记录了stm32f103对ina219的数据采集

热爱生活、奋斗前行 2354

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

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

ihhhh1的博客 1517

基于立创·庐山派K230的红色激光点识别和锁定追踪

本文介绍了一种基于立创・庐山派K230开发板的红色激光点识别与追踪系统。该系统通过摄像头采集图像,采用RGB565格式和Gamma校正进行预处理,利用颜色阈值筛选实现红色激光点检测。核心追踪算法采用状态机设计,包含未锁定和已锁定两种状态,通过计算欧氏距离判断目标连续性,并具有丢失计数机制确保稳定性。系统通过UART接口以自定义二进制协议输出坐标数据,同时提供可视化反馈。该方案在800×480分辨率下实现了实时、稳定的单目标追踪,具有检测精度高、响应速度快的特点,适用于工业定位和机器人导航等嵌入式视觉应用场景

m0_73738367的博客 1653

利用随机矩阵理论(random matrix theory)确定微生物网络构建阈值

利用随机矩阵理论(random matrix theory)确定微生物网络构建阈值

微生物生态学分析 7639

TinyVue v3.19.0 正式发布!Tree 组件终于支持虚拟滚动啦!UI 也升级啦,更更符合现代审美~

前端开源星球。我们非常高兴地宣布,2024年10月28日,发布了🎉。本次版本共有16位贡献者参与开发,其中是新朋友👏你可以更新进行体验!我们一起来看看都有哪些更新吧!

kagol的博客 1042

NVMe-MI 协议解析:带外管理框架与实现原理

本文深入解析了NVMe-MI协议,这是一种用于NVMe固态硬盘的标准化带外管理接口。文章详细阐述了其独立于操作系统的管理框架,通过MCTP协议栈实现,支持SMBus/I2C、PCIe VDM和I3C等物理层,从而在系统故障时仍能可靠地进行健康监控、固件升级等关键运维操作,是现代数据中心存储管理的核心基础设施。

lll78的博客 961

TinyVue v3.19.0 正式发布!Tree 组件终于支持虚拟滚动啦!UI 也升级啦,更更符合现代审美~...

你好,我是 Kagol,个人公众号:前端开源星球。 我们非常高兴地宣布,2024年10月28日,TinyVue 发布了 v3.19.0 ????。 本次 3.19.0 版本主要有以下重大变更: 所有组件全面升级到 OpenTiny Design 新设计规范,UI 更美观、更符合现代审美。 增加 VirtualTree 虚拟树组件。 增加 VirtualScrollBox 虚拟化容器组件。 增加 St...

weixin_33443333的博客 167

Unity 热更新技术 |(六)xLua框架学习最新系列完整教程

开始学习热更新方面系列知识,就从这一篇开始吧! 本系列教程 会从热更新基本概念出发,详细介绍热更新相关的全套知识点。 如热更新技术基本原理、热更新主流方案、AssetBundle系列教程、Lua语言编程、Lua与Unity交互教程、Xlua框架使用、热更新实战教程等方面。 热更新作为一个开发者必备技能,如果想学习的话,可以从现在开始了哦~ 接下来先从XLua学习使用 开始学习吧!

努力前行,总会成为自己心中的那道光 1万+

“快速掌握Vivado FPGA开发流程“——详解Vivado开发流程及实例

快速掌握Vivado FPGA开发流程”——详解Vivado开发流程及实例FPGA技术在现代电子领域中应用越来越广泛,而Vivado作为业界最流行的FPGA设计工具之一,也受到越来越多人的关注和使用。那么如何快速掌握Vivado FPGA开发流程呢?本文将详细介绍Vivado开发流程,并通过实例来加深您的理解。首先,我们需要了解Vivado开发流程的主要步骤:创建工程、设计电路、约束电路、生成比特流。接下来,让我们一步步了解这些步骤。

2301_78484069的博客 733

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

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

qq_52752298的博客 1424

2️⃣ Coze创建智能体教学(2025年全新版本)

扣子平台提供强大支持,可将智能体轻松集成至各类社交平台,使智能体得以服务更为庞大的用户群体。当下支持集成的平台如下:​1️⃣豆包:作为聚焦 AI 内容创作的平台,非常适合发布充满创意、娱乐性强的智能体。​2️⃣飞书:适合发布用于办公协作的智能体,助力团队提升工作效率。​3️⃣微信:借助公众号或小程序的形式,能够服务海量微信用户。​4️⃣抖音:适合发布与短视频相关的智能体,为用户提供创意与娱乐服务。​

李同学Lino的博客 4581

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

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

LLI025的博客 862

电机瞬态分析基础(2):理想电机的基本假设和正方向规定

电机瞬态分析基础之理想电机假设条件和正方向规定

weixin_45670943的博客 1146

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

vue 实现 tree 树形大量数据的多功能虚拟滚动-Virtual Tree

目录 源 卡顿假死 预研 开发 业务中使用 组件中引入 功能列表 使用 源 由于业务开发过程中有树形数据,因此需要用到tree树形组件,鉴于项目是基于vue的,前期的ui组件库选型就是element-ui,于是采用了el-tree组件。但在实际使用过程中出现了几个意外。 卡顿假死 server端返回全部数据时,渲染全量的tree组件时前端直接卡死,排查发现业务数据大部分子节点的量级在万以上。页面卡死这种事是要直接“掉脑袋”的,马上换成懒加载模式。 改成懒加载模式后,前两层节点的

Brad_chao的博客 2万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

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

OpenTiny的博客 729

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

优化永不止步: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

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

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

qq_34147402的博客 884

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

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

OpenTiny的博客 1134

【亲测免费】 探索 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

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

作为致力于实现跨框架的TinyVue组件库,旨在实现跨不同版本的Vue框架兼容性,其独特之处在于采用单份源代码策略,通过智能编译技术,能够同时生成适用于Vue 2.6、2.7版本以及Vue3版本的组件包。在本期《手把手教你实现mini版TinyVue组件库》的主题直播中,华为云前端开发DTSE技术布道师阿健老师给开发者们展开了组件库跨框架的讨论,同时针对TinyVue组件库的关键技术进行了剖析,并通过项目实战演示了一份源码编译出2个不同Vue 框架的组件。随后,这些状态值被返回给适配层。

OpenTiny的博客 1109

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

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

OpenTiny的博客 1633

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

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

Echo_Wish 1334
上一篇: 焕然一新!TinyVue 组件库 UI 大升级,更符合现代的审美!
下一篇: 重磅更新!Fluent Editor 开源富文本支持 LaTeX 可编辑公式啦~
OpenTiny社区
博客等级 码龄4年 1540粉丝 266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值