菜单

版本历史

相关源文件

本文档提供了 Ionic Framework 版本历史的概述,包括主要发布、重大更改、版本模式和生命周期。它作为需要了解 Ionic 版本如何演变以及如何在项目中管理更新的开发人员的参考。

有关框架架构的详细信息,请参阅 架构。有关包结构的信息,请参阅 包结构

版本控制系统

Ionic Framework 遵循语义化版本控制 (SemVer),版本号格式为 MAJOR.MINOR.PATCH

  • MAJOR:当存在不兼容的 API 更改和重大更改时增加
  • MINOR:当以向后兼容的方式添加新功能时增加
  • PATCH:当进行向后兼容的错误修复时增加

来源:BREAKING.md1-12 core/CHANGELOG.md1-14

版本管理系统

Ionic 使用 Lerna 管理的 monorepo 结构来维护所有包的同步版本控制。版本信息从核心传播到所有框架特定的包。

来源:core/CHANGELOG.md1-5 packages/vue/CHANGELOG.md1-5 packages/react/CHANGELOG.md1-5 packages/react-router/CHANGELOG.md1-5 packages/angular-server/CHANGELOG.md1-5 packages/vue-router/CHANGELOG.md1-5

主要版本时间线

Ionic Framework 经历了几个主要版本,每个版本都带来了重大的架构更改和改进。

来源:BREAKING.md3-12

最新主要版本 (8.x) 更改

8.x 版本于 2024 年 4 月发布,带来了几项重大更改和改进。

浏览器和平台支持

Ionic 8 引入了更新的浏览器、JavaScript 框架和移动平台的最低要求。

类别平台最低版本
浏览器Chrome89+
Safari15+
Firefox75+
Edge89+
框架Angular16+
React17+
Vue3.0.6+
移动端iOS15+
Android5.1+(Chromium 89+)

一项重大更改是移除了对 CSS Animations 的支持,转而使用 Web Animations API。

来源:BREAKING.md40-65

暗黑模式改进

暗黑模式系统通过使用 CSS 文件的新分发方法得到了增强。

/* Previous approach */
@media (prefers-color-scheme: dark) {
  body {
    /* global app variables */
  }
}

/* New approach in v8 */
@import "@ionic/angular/css/palettes/dark.system.css";

/* Which defines variables like this */
@media (prefers-color-scheme: dark) {
  :root {
    /* global app variables */
  }
}

关键更改是暗色调变量现在应用于 :root 选择器,而不是 body 选择器。

来源:BREAKING.md67-118

表单控件更改

版本 8 移除了表单控件的“旧”方法,其中复选框、单选按钮和切换按钮等控件位于 ion-item 内,并带有 ion-label。现在表单控件使用现代语法,标签是控件组件本身的一部分。

来源:BREAKING.md152-280

其他重大更改

  • 触觉反馈:移除了对 Cordova Haptics 插件的支持,需要迁移到 Capacitor。
  • 全局样式:文本颜色现在设置在 body 元素上,并且默认启用了动态字体缩放。
  • 组件重命名ion-picker 重命名为 ion-picker-legacy 以容纳新的内联选择器。
  • API 更改:移除了 ion-inputsize 属性以及 ion-item 的多个属性。

来源:BREAKING.md146-294

版本发布流程

Ionic 遵循结构化的发布流程,平衡了定期更新和稳定性。

来源:core/CHANGELOG.md6-136

变更日志管理

Ionic 为存储库中的所有包维护详细的更改日志。每次更改都分为

  • 功能:新功能
  • 错误修复:现有功能的更正
  • 性能改进:优化
  • 代码重构:不修复错误也不添加功能的更改
  • 重大更改:需要迁移的更改

每次更改都包括

  • 问题编号(链接到 GitHub)
  • 提交哈希
  • 更改说明

来源:core/CHANGELOG.md1-20 packages/vue/CHANGELOG.md1-20 packages/react/CHANGELOG.md1-20

日志级别配置

从 8.5.0 版本开始,Ionic 引入了一个 logLevel 配置选项,用于控制框架警告和错误的详细程度。这有助于减少控制台的噪音,同时仍能让开发人员了解关键问题。

该配置在核心日志实用程序中实现,并通过 IonicConfig 接口公开。

来源:core/CHANGELOG.md95-98 core/src/utils/logging/index.ts1-45 core/src/utils/logging/test/logging.spec.ts1-114

框架特定集成

每个支持的框架(Angular、React、Vue)都有自己的集成包,用于包装核心 Web Components。这些包维护自己的版本控制,这些版本与核心保持同步。

每个框架集成都有自己的生命周期钩子和配置选项,但所有这些都依赖于相同的核心组件。

来源: packages/react/src/components/index.ts1-152 packages/vue/src/index.ts1-129 core/src/index.ts1-34 packages/vue/src/hooks/lifecycle.ts1-56 packages/vue/src/hooks/back-button.ts1-20 packages/vue/src/hooks/router.ts1-62 packages/vue/src/hooks/keyboard.ts1-41 packages/vue/src/utils.ts1-74

版本迁移

在主版本之间迁移时,开发者应遵循以下步骤:

  1. 查看重大更改文档 (BREAKING.md)
  2. 更新框架的最低版本要求
  3. 将所有 Ionic 包更新到同一版本
  4. 处理已弃用的 API 和重大更改
  5. 在所有支持的平台上进行彻底测试

重大更改文档提供了每个组件在版本之间更改的详细迁移说明。

来源: BREAKING.md14-294

及时了解变化

要了解 Ionic Framework 的版本信息,请

  1. 关注官方 GitHub 仓库
  2. 订阅 Ionic 博客
  3. 升级前查看更新日志
  4. 在 package.json 中使用语义化版本范围来控制更新
  5. 在开发环境中彻底测试升级

来源: core/CHANGELOG.md1-10 packages/react/CHANGELOG.md1-10 packages/vue/CHANGELOG.md1-10

即将推出的功能和实验性功能

Ionic 偶尔会引入实验性功能,这些功能可能尚未完全支持,但可以预览未来的功能。这些功能通常在文档或代码中带有“experimental”前缀。

例如,在 8.1.0 版本中,添加了一个实验性的过渡焦点管理器,在 8.4.0 版本中,引入了新的 ion-segment-view 组件。

这些实验性功能在被视为稳定版之前,可能会在未来的版本中发生变化或得到改进。

来源: core/CHANGELOG.md386-392 core/CHANGELOG.md177-189