Ember.js 7.0

Hacker News Top 产品

摘要

Ember.js 7.0 已发布,移除了之前版本中弃用的功能,版本 6.12 成为 LTS 版本。此更新延续了 Ember 在次要版本中交付新功能以简化主要升级的策略。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/05/30 04:23

# Ember 7.0 发布 来源:https://blog.emberjs.com/ember-released-7-0/ Ember 项目很高兴地宣布发布 Ember v7.0。遵循 Ember 的主要版本策略(https://rfcs.emberjs.com/id/0830-evolving-embers-major-version-process),本次主要版本仅移除了在 7.0 之前已弃用的特性,并包含其他错误修复。此次 Ember.js 的发布意味着上一个版本 6.12 现已成为 LTS(长期支持)版本。 在引入新功能方面,Ember 通常倾向于在次要版本中发布新功能,在保持对现有代码向后兼容的同时,为开发者提供尝试新能力的机会。与发布包含大量新功能的重大破坏性版本相比,这种方法减少了团队在主要升级时面临的挑战。 ## 回顾 6.x 系列的改进 在 Ember 6.x 的次要版本中,我们引入了许多值得注意的功能: - 在 Ember 6.1(https://blog.emberjs.com/ember-released-6-1/)中,我们开始将 `ember-source` 作为 v2 插件发布,这使得 `Embroider` 可以直接使用 `ember-source`。 - 在 Ember 6.3(https://blog.emberjs.com/ember-released-6-3/)中,我们根据 RFC #1046(https://rfcs.emberjs.com/id/1046-template-tag-in-routes)增加了对路由模板中使用 template-tag 组件的支持。 - 在 Ember 6.8(https://blog.emberjs.com/ember-released-6-8/#toc_embroider-and-vite-by-default)中,我们发布了新的应用蓝图,默认使用基于 `Embroider` 和 `Vite` 的构建系统。 - 同样在 Ember 6.8(https://blog.emberjs.com/ember-released-6-8/#toc_component-and-route---strict-by-default)中,我们将 `strict-mode`(即 `template-tag`)组件编写格式设为默认。 - 同样在 Ember 6.8(https://blog.emberjs.com/ember-released-6-8/#toc_rendercomponent)中,我们添加了 `renderComponent` API(https://rfcs.emberjs.com/id/1099-rendercomponent/),允许在不包含完整项目的情况下渲染单个组件。 - 同样在 Ember 6.8(https://blog.emberjs.com/ember-released-6-8/#toc_emberreactivecollections)中,我们内置了 JavaScript 原生集合类型的响应式版本:`trackedArray`、`trackedObject`、`trackedMap`、`trackedSet`、`trackedWeakMap` 和 `trackedWeakSet`。 Ember v6.8 是近期记忆中 Ember 项目构建方式最大的变化。Ember 核心团队多年来一直在开发 Embroider+Vite 构建系统和 strict-mode-templates(即 template-tag),而这是第一个将这些设置为新生成 Ember 应用默认体验的版本。早期采用者已经选择使用这些功能相当长时间,但现在使用 Ember v6.8(或更高版本)生成应用,你将获得极其现代化的开发体验 🎉 除了这些功能之外,6.x 系列还包含了无数错误修复、为未来改进铺平道路的弃用、为新功能奠定基础的 RFC,社区还: - 将 `glimmer-vm` 单仓库合并到 `ember.js` 中,以加快渲染引擎及其与 `ember.js` 集成的迭代速度。 - 将 `router.js` 仓库合并到 `ember.js` 仓库中,为实验新的路由器架构和实现 Route Manager RFC(https://rfcs.emberjs.com/id/1169-route-manager-api/)做准备。 - 更新了我们的包,改为通过 `OIDC` 发布。 - 持续更新 `broccoli` 和其他依赖项,以减少安全漏洞数量。当前的漏洞警告仅在开发模式下才是问题,不应被利用,但会令人困扰。 - 努力减少新生成 Ember 应用中的弃用警告数量(https://github.com/ember-cli/ember-cli/issues/10943)。这是一项持续的任务。 - 发布了 v2 版本的 Glint(https://typed-ember.gitbook.io/glint/v2-upgrade)。这使得我们可以将 template-tag 组件编写格式设为默认。 - 创建了 template tag codemod(https://blog.emberjs.com/template-tag-codemod/)来帮助迁移到新的编写格式。 - 创建了 Vite codemod(https://github.com/mainmatter/ember-vite-codemod)来帮助迁移到新的构建系统。 - 创建了遗留的 Classic 蓝图(@ember-tooling/classic-build-app-blueprint)并在 ember-cli-update(https://github.com/ember-cli/ember-cli-update)中提供支持,以便项目在必要时无需迁移到新构建系统即可更新。 感谢所有帮助实现这个主要版本周期的贡献者! ## 如何升级到 Ember 7.0 升级到 7.0 最常见的方法是将你的应用升级到 Ember 6 的最后一个版本,即 6.12,解决所有弃用警告,然后再升级到 7.0。如果你的应用或插件在 6.12 的最新版本中没有弃用警告,你应该可以在不进行其他更改的情况下升级到 Ember 7。以下是逐步说明。 如果你的应用处于 6.x 系列的更早版本,我们建议逐步升级,跨越 LTS 版本:6.4(https://blog.emberjs.com/ember-released-6-4/)、6.8(https://blog.emberjs.com/ember-released-6-8)和 6.12(https://blog.emberjs.com/ember-released-6-12/)。请按以下步骤操作: 1. 考虑将应用中使用的插件升级到你能获得的最高版本。这将减少依赖项中已弃用 API 的使用。 2. 将你的项目升级到 Ember 6.12 最新的补丁版本。许多项目可以通过运行 `npx ember-cli-update --to 6.12` 完成。在跨越 6.8 边界升级时,由于构建系统的变化,你需要调整 ember-cli 的配置(https://github.com/ember-cli/ember-cli-update/blob/master/docs/upgrading-past-6-7-0.md)。 3. 确保你的应用构建成功。 4. 解决所有弃用警告。这些弃用的 API 已在 Ember 7.0 中移除。如果你的某些插件依赖项使用了弃用的 API,可能需要升级它们。有关特定弃用及其解决方法的更多详细信息,请参阅 Ember 弃用指南(https://deprecations.emberjs.com/)。 5. 确保你的应用构建成功且测试套件通过,没有任何弃用警告。 6. 将你的应用升级到 Ember 7.0。同样,许多开发者可以通过运行 `npx ember-cli-update --to 7.0` 完成。 7. 如果在过程中需要帮助或建议,请访问 Ember 的论坛或聊天群组(https://emberjs.com/community/)。 ## Ember.js 7.0 Ember.js 7.0 没有引入新的公共 API。相反,它包含了错误修复,并破坏了在 6.x 周期中已弃用的公共 API。 ### 弃用 Ember.js 7.0 没有引入新的弃用。它移除了所有在 6.10 之前引入并计划在 7.0 中移除的弃用。 Ember 7.0 移除了以下在 6.x 期间弃用的功能: - 移除了(https://rfcs.emberjs.com/id/1003-deprecation-import-ember-from-ember/)`import Ember from 'ember'`。有关替代 API 的指南,请参阅 RFC 或项目中的弃用说明。 - 移除了(https://deprecations.emberjs.com/v6.x#toc_using-amd-bundles)`ember-source` 发布的 AMD 包。在 7.0 之前,可以通过使用可选功能来选择此功能:有关更多详细信息,请参阅弃用指南(https://deprecations.emberjs.com/v6.x#toc_using-amd-bundles)。这还需要进行某些依赖项更新。 - 移除了(https://deprecations.emberjs.com/id/importing-inject-from-ember-service)从 `@ember/service` 导入 `inject`。现在应使用 `import { service } from '@ember/service'`。有关如何在应用中解决这些弃用的更多详细信息,请参阅弃用指南(https://deprecations.emberjs.com/v6.x)。 ### 错误修复 Ember.js 7.0 包含了许多错误修复,以下是一些较为显著的: - #21076(https://github.com/emberjs/ember.js/pull/21076):根据 RFC #1070(https://rfcs.emberjs.com/id/1070-default-globals-for-strict-mode/),支持 strict mode 下 *runtime* 模板编译器的默认全局变量。 - #21098(https://github.com/emberjs/ember.js/pull/21098):为 *runtime* 模板编译器的显式作用域添加对 `this` 的支持。 - #21107(https://github.com/emberjs/ember.js/pull/21107):修复内联 SVG 中的 `LinkTo` 导致应用重新加载的问题。 - #21109(https://github.com/emberjs/ember.js/pull/21109):修复绑定到空字符串的单选/复选框输入缺少 value 属性的问题。 - #21122(https://github.com/emberjs/ember.js/pull/21122):修复追踪集合 `delete()` 对不存在的条目返回 true 的问题。 - #21124(https://github.com/emberjs/ember.js/pull/21124):修复数组包含 null/undefined 项并带有 key 时 `{{#each}}` 运行时的崩溃问题。 - #21125(https://github.com/emberjs/ember.js/pull/21125):修复访问助手位置参数负索引时的崩溃问题。 - #21128(https://github.com/emberjs/ember.js/pull/21128):修复 `trackedMap` 和 `trackedWeakMap` 对已有键的响应性问题。 - #21139(https://github.com/emberjs/ember.js/pull/21139):为可销毁对象中数组作为父级的 bug 移植了 `BrandedArray` 修复。 - #21168(https://github.com/emberjs/ember.js/pull/21168):修复 `EmberArray.reduce` 以匹配原生行为。 - #21189(https://github.com/emberjs/ember.js/pull/21189):在销毁后清除过期的元数据引用以允许垃圾回收。 - #21202(https://github.com/emberjs/ember.js/pull/21202):修复 `` 的 `@current-when` 参数与包含动态段的路由嵌套的问题。 ## Ember CLI v7.0 Ember CLI 7.0 没有引入新的公共 API,没有添加新的弃用,也没有添加新的错误修复。此次发布仅自动破坏了在 6.x 周期中已弃用的公共 API。这些代码将在未来版本中被清理。你可以在弃用指南(https://deprecations.emberjs.com/ember-cli/v6.x)中阅读更多关于弃用的信息。 ## 感谢! 作为一个由社区驱动的开源项目,范围雄心勃勃,每次发布都提醒我们,没有你们的持续支持,Ember 项目是不可能实现的。我们对贡献者的努力表示万分感激。

相似文章

TypeScript 7

Hacker News Top

TypeScript 7 是一个重大版本,它将编译器用 Go 语言重写,实现了 8-12 倍的构建速度提升,同时保持完全兼容性,现已在 npm 上可用。

Linux 7.1

Hacker News Top

Linux kernel 7.1 已在内核邮件列表上宣布,标志着新主版本发布,预计将带来功能更新和改进。

WordPress 7.0

Lobsters Hottest

WordPress 7.0 是一个重大版本,包含重新设计的导航覆盖层、通过集中式 Connectors 中心实现的人工智能集成、可视化修订、将模式作为单个块处理、性能提升、改进的可访问性以及焕然一新的管理体验。

WordPress 7.0

Product Hunt

WordPress 7.0(代号 Armstrong)已发布,标志着这款热门内容管理系统的一次重大更新。