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

Handsontable 18.0.0

Handsontable 18.0.0

Handsontable 的核心代码已完全用 TypeScript 重写,提高了整个代码库的长期稳定性和可维护性。发布日期:2026年6月30日

18.0.0 版本更新

特征

一个用 TypeScript 重写的核心。

  • Handsontable 的整个核心代码已从 JavaScript 重写为 TypeScript。这是一项旨在提升稳定性和开发者体验的长期投资,几乎涉及代码库的每个部分。
  • 此次重写带来了严格模式兼容性、类型感知 lint 规则,以及对内置渲染器、编辑器和验证器的更强类型定义——传递给它们的单元格属性现在使用规范的 CellProperties 接口,而不是松散的记录类型。此外,它还将渲染引擎 Walkontable 集成到主类型检查程序中,并将其作为未知逃生舱的类型转换减少了约 85%。
  • 对于所有使用该软件包的用户,之前导致 ESM 和 CJS 配置出现问题的类型声明错误和歧义问题现已修复。提供的 .d.ts 文件现在兼容 TypeScript 5.1 及更高版本,因此编辑器自动补全和类型检查功能应该可以开箱即用。
  • 由于这从根本上改变了源代码的编写和类型定义方式,因此属于破坏性变更。大多数应用程序不需要修改代码,但更严格的类型定义可能会暴露出以前隐藏的问题。

更快的渲染速度和显著降低的内存占用

  • Walkontable 现在直接渲染到 DOM,Handsoncode 也完全移除了旧的差异渲染器。这使得网格的内存占用减少了约 50%,降低了滚动时的内存使用量,并解决了处理超大型数据集时可能出现的内存溢出错误。此外,它不再在加载时立即获取整个网格的单元格元数据,而是在实际使用单元格时才进行延迟计算。对于大型数据集,这种改进效果显著:在一个 100,000 x 100 的网格上,内存占用减少了约 90%,初始渲染速度提高了约 30 倍。
  • 使用 setCellMeta 命令(例如 readOnly)设置的单元格元数据不再会被 updateSettings 重置。
  • 在 cells 函数和自定义渲染器中更快地重复调用 getSourceData(),缓存叠加对齐计算,以及在搜索、筛选、排序、自动完成和复选框渲染中更快地进行本地化感知文本比较。

新的布局系统

  • Handsontable 18.0.0 引入了一个新的布局选项,允许您控制网格周围渲染的 UI 元素的顺序,例如分页和对话框。
  • 为了实现这一点,内置 UI 现在挂载到专用包装容器中,而不是临时注入,这改变了根 DOM 结构——如果您使用自定义 CSS 或脚本来定位 Handsontable 的标记,则需要注意此重大更改。
  • 许可证通知始终显示在底部区域的最后一位,并且不可排序,通知插件现在将其提示信息渲染在网格的覆盖层中,以实现更可靠的定位。

更小、无依赖项的捆绑包

  • 移除了四个运行时依赖项——numbro、moment.js、DOMPurify 和 handsontable/pikaday——转而使用更轻量级的内置实现。这精简了软件包,并减少了传递安全性和维护问题的可能性。对于任何通过 Handsontable 间接依赖这些依赖项的用户来说,移除这些依赖项都是一项重大变更。
  • 已停用部分长期弃用的API:
    • PersistentState 插件、其 persistentState 选项及其相关钩子已被移除。
    • 核心级别的撤销/重做方法(hot.undo()、hot.redo() 等)已被移除。请改用 hot.getPlugin('undoRedo')。

一个现代化的 Angular 封装器

  • Angular 封装器已进行现代化改造,以与当前的 Angular 版本保持一致。

新的配置选项

  • 此次版本更新增加了一些配置网格的新方法:
    • 密码单元格类型的 hashRevealDelay 会在输入每个字符时短暂显示该字符,然后再将其屏蔽。
    • visibleWhen 可设置嵌套标题(“折叠”、“展开”或“始终”),允许您选择可折叠组中的哪些列在每种状态下保持可见。
    • 公共类型(例如 CellMeta、CellProperties、ColumnSettings 和 GridSettings)现在已从 handsontable 和 handsontable/base 重新导出为命名的顶级导入,因此您不再需要深入内部路径来编写代码。

主题变更

  • 简化了与边框相关的主题变量。`--ht-wrapper-border-radius` 变量已重命名为 `--ht-border-radius`,而 `--ht-wrapper-border-width` 和 `--ht-wrapper-border-color` 变量已被移除。如果您在自定义主题中引用了这些变量,则在升级时需要更新它们。

交互改进

  • 一些改动让日常交互体验更接近桌面电子表格。现在,将选区拖动到视口边缘之外时,网格会滚动并将选区扩展到新显示的单元格;自动填充选区的方向现在与拖动方向一致,这与 Google Sheets 和 Excel 的行为方式相同。

文档:新增指南、配方和 Vue 部分

  • 此版本新增了主要变更的文档。布局插槽是新布局系统的对应部分,展示了如何在网格周围的包装插槽中放置自定义 UI,并控制每个插槽中元素的顺序。TypeScript 类型文档完整收录了 Handsontable 现在导出的类型和接口,并提供了设置、钩子回调、自定义渲染器和编辑器的使用示例。此外,新增的“从 17.1 迁移到 18.0”指南将逐步指导您如何移除 moment.js、Pikaday、numbro 和 DOMPurify 依赖项,并更新 TypeScript 导入。
  • Vue 3 现在与 React 和 Angular 并列,成为官方文档中的一流框架,拥有专属章节和全新示例。Vue 开发者可以获得专为 Vue 编写的官方指南,而无需再去修改原生 JavaScript 示例。
http://www.jsqmd.com/news/1140224/

相关文章:

  • 基于51单片机 stm32单片机汽车胎压监测轮胎压力气压无线传输报警31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • Hermes0.17与DeepSeek集成实战:AI智能体框架模型选型分析
  • Hermes Agent:具备自主学习能力的AI智能体框架解析与实践指南
  • Windows系统文件ChxHAPDS.dll丢失找不到问题解决
  • 如何快速上手Notepad--:国产跨平台文本编辑器的完整指南秘籍
  • 如何利用DAP-seq+RNA-seq+验证讲好植物转录因子的故事?
  • 西安邮电大学期末考试真题库终极指南:快速提升成绩的完整解决方案
  • 抖音动态监控推送解决方案:实时追踪博主动态与直播提醒实战指南
  • Nav2 Inflation Layer 膨胀层公式、内切半径与 RViz 颜色理解
  • Element-Plus-Admin:现代化企业级Vue3后台管理框架的终极解决方案
  • PTA编程38题(持续更新)
  • AI时代重新定义优质员工:把目标讲清楚,会成为最重要的能力。
  • 抚州别墅井道改造案例,双拼打通户型,90 度直角开门电梯定制落地
  • 技术重构跨境电商:履约数字化与合规智能化的 2026 年中观察
  • Java 转大模型开发:从问题拆解到交付验证
  • Mamba + Jupyter Notebook:macOS 深度学习环境高效搭建指南
  • 无公网IP也能远程办公+游戏联机,内网穿透与异地组网神器
  • 如何快速掌握开源CAD绘图:免费二维CAD软件终极入门指南
  • AI驱动的数据库参数自动调优:基于Bayesian Optimization的MySQL配置优化
  • 动态武器目标分配 (DWTA) 问题建模与求解:基于Python的3阶段马尔可夫决策过程仿真
  • 本地AI部署实战指南:从Ollama到Docker完整解决方案
  • 8000多只美股与ETF的高频逐笔和订单薄行情数据下载流程
  • 重明链迹丨每周区块链安全要闻(0629-0705)
  • ncmdump:3步解锁网易云音乐NCM文件的Java方案
  • 3步快速上手UltraStar Deluxe:免费开源专业卡拉OK唱歌游戏终极指南
  • C++23:更好的C++20
  • 从Web渗透到内核提权:Zico 2靶机实战与脏牛漏洞深度解析
  • 10分钟掌握HsMod:55项炉石传说功能增强插件完整配置指南
  • Java毕设选题推荐:基于 SpringBoot 的电子病历归档管理系统的设计与实现 基于前后端分离的医疗病历信息存储与查询系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • PGsql安装教程