DevExtreme Angular UI控件更新:引入全新严格类型配置组件

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac,到ASP.NET Core或Vue,DevExtreme包含高性能和响应式UI小部件集合,可在传统Web和下一代移动应用程序中使用。 该套件附带功能齐全的数据网格、交互式图表小部件、数据编辑器等。

获取DevExtreme v25.1正式版下载

如果您之前使用过 DevExtreme 的 Angular 组件,可能会接触过带有 dxo- 和 dxi- 前缀的配置组件。这些辅助组件简化了控件配置过程,符合 Angular 架构原则,并提升可读性。它们在处理嵌套选项时尤其有用,例如在 dx-data-grid 中使用 dxo-pager 来配置分页选项。

TypeScript 复制代码
<dx-data-grid [dataSource]="dataSource">
<dxo-pager
[visible]="true"
[showPageSizeSelector]="true" >
</dxo-pager>
</ dx-data-grid>

它们也适用于配置集合项,比如在 dx-toolbar 中使用 dxi-item 声明工具栏项:

XML 复制代码
<dx-toolbar>
<dxi-item location="before" widget="dxButton" >
</dxi-item>
</dx-toolbar>

下面以 dxi-item 为例,详细讲述旧有配置组件的工作方式。这是一个"通用"组件,不仅仅用于 dx-toolbar,还广泛出现在 Form 和 List 等多个 DevExtreme 组件中。

虽然这提供了统一性(即同一组件可复用),但缺点也很明显:根据父组件的不同,Dxi-item需要完全不同的选项集,这使得精确的输入变得复杂。

下面的屏幕截图说明了IDE如何在两个不同的上下文中为dxi-item显示相同的通用属性列表。例如,form组项的预期属性与甘特图上下文菜单项中使用的属性有很大不同。

我们的核心目标之一是提供完整、健壮的 TypeScript 支持,确保所有DevExtreme组件都严格类型化,并遵循现代 TypeScript 规范。这能改善 IDE 自动补全、早期捕捉错误,并增强重构过程中的信心。

不过,要在现有 dxo- 和 dxi- 组件上强制实施严格类型是一项复杂的挑战。这可能影响大量项目,并在升级到DevExtreme的新版本后引发重大更改。而且,原有配置架构的通用性不利于类型精确化。

全新配置组件:有何变化,为什么重要

在 DevExtreme v24.2 中,官方引入了一套全新的配置组件------它们具备严格类型、可无缝集成到 Angular 应用中,显著提升开发体验。

每个 UI 组件现在都有其专属配置组件集,这标志着在可预测性和类型安全方面向前迈出了重要一步。以下是主要变化及其优势:

更清晰、更能感知上下文的配置组件

配置组件名现在包含了它们的父组件名,这提高了代码的可读性,避免命名冲突,让模板结构更易理解。

例如,以前的 dxi-item 现已改为:

  • dxi-toolbar-item(用于 dx-toolbar)
  • dxi-form-item(用于 dx-form)
  • dxi-context-menu-item(用于 dx-context-menu)

这种命名约定有助于IDE识别组件上下文,并为开发人员提供更清晰的结构视图,使复杂的配置更容易导航和维护。

严格类型与更佳开发体验

新的配置组件现在只包含与其特定父组件相关的属性,这消除了IDE建议一长串不相关选项的情况。例如,dxi-data-grid-column只显示适用于DataGrid列的属性。因此,IDE建议现在更加准确和有用:

大多数新的配置属性都是严格类型化的,未来也会继续完善,这意味着任何对组件API的误用都将在编译期间被捕获(早在它可能导致运行时问题之前)。

后续计划:全面采用新版配置组件

新版配置组件相较旧架构更稳健现代、抗错率更高,并更契合 TypeScript 类型系统。我们将分阶段将整个 DevExtreme Angular 生态切换至此新模型。为了确保用户的平稳和可预测的迁移,请考虑以下时间表/关键里程碑:

DevExtreme v25.1:

  • 所有示例和帮助文档将开始使用新模型;
  • 官方建议所有新的 Angular 应用从一开始就采用新版配置组件;
  • v25.1 引入的所有功能均需使用新的配置组件。

DevExtreme v25.2:

  • 使用旧配置组件将触发弃用警告;
  • 旧系统不再接收新功能,在25.2和以后的版本中引入的任何新功能都需要使用新的配置组件;
  • 官方会提供文档、迁移指南和辅助工具,帮助平滑过渡。

DevExtreme v26.1:

官方将继续支持这些用户迁移到我们的新配置组件,目标是确保用户都拥有顺利完成过渡所需的资源和指导。

DevExtreme v26.2:

所有旧配置组件将从代码库中移除。

官方目标是让过渡过程清晰、可控、安全,严格的类型支持不仅是趋势,更是可扩展、可预测、安全开发的核心。


更多DevExpress线上公开课、中文教程资讯请上中文网获取

相关推荐
原则猫7 小时前
UDP 到底怎么实现可靠的
前端
Java后端的Ai之路7 小时前
14、ReactJS - 路由(Router)
前端·react.js·状态模式
裕晟资质规划8 小时前
三类涉密资质延续时限差异分析:军工60日与集成印制3个月的边界
java·服务器·前端·网络·安全
ShineWinsu9 小时前
对于JavaScript:JavaScript基础语法的解析
开发语言·前端·javascript·面试·web·基础语法·循环
月夏9 小时前
Vue3 转 React:18 项对照表 + 5 个必踩的坑(附 7 天上手路线)
前端
广州华水科技9 小时前
单北斗GNSS位移监测系统的应用与维护解析
前端
梦曦i9 小时前
uni-storage 0.1.0 发布:TTL过期管理+多实例隔离
前端·storage·uni-app x
猫头_10 小时前
AI 流式传输工程指南:模型吐出半截 JSON,前端如何边收边渲染?
前端·javascript·llm
console.log('npc')11 小时前
第 1 章 项目概述与环境搭建
前端·人工智能·大模型
定栓11 小时前
Webpack迁到Vite第七节(二):全家桶移除 — Babel 全家桶深度分析
前端·webpack·node.js