【问题标题】:AngularJS 1.4 --> Angular 9 migration vs bigbang rewrite [duplicate]AngularJS 1.4 --> Angular 9 迁移与 bigbang 重写 [重复]
【发布时间】:2020-06-08 11:52:37
【问题描述】:

我决定完全重写我正在开发的大型应用程序,因为它在 AngularJS 1.4 中。我转移了大部分 HTML 和 CSS 文件,现在准备创建 TypeScript 文件。

我需要为 1.4 版本中的每个 JavaScript 文件创建一个 TypeScript 文件,还是会减少 TypeScript 文件?起初,我假设我需要与 JavaScript 相同数量的 TypeScript 文件。但是在研究它之后,我发现很多地方都说“让你的应用程序的每一页都成为一个组件”。所以这让我觉得如果我的应用程序总共有 5 个页面,那么我总共只需要 5 个 TypeScript 文件。原始文件包含约 80 个 JavaScript 文件。

【问题讨论】:

  • 重写你的高级项目有什么好处?对我来说,这听起来像是很多不必要的痛苦。我的建议是完成项目,然后从头开始学习 Angular 9。但这只是一个人的看法。
  • 该项目目前完全使用 AngularJS 1.4 编写。对于我的高级项目,我的任务是将其迁移到 Angular 9。整个应用程序已制作完成,我只需要在 Angular 9 中重写它。抱歉造成混乱。
  • 啊,我没有意识到这是任务的一部分。像这样的开放式问题在这里不会引起太大的关注。可能有大约 100 个名为“我从 AngularJS 迁移到 Angular x 中学到的东西”的博客。他们将是一个很好的起点。我希望你使用版本控制...

标签: javascript angularjs angular typescript ng-upgrade


【解决方案1】:

让每个页面都成为组件的目标是让路由器的使用变得容易。

这真的取决于你的应用程序,如果你有一个部分在同一个页面中被多次使用,你可以制作一个包含输入和输出的组件,然后你可以使你的代码相互化。

因此,在创建新组件之前,您必须问自己两个问题

  1. 我会在其他页面中重用这个组件吗?

  2. 此组件是否需要位于特定 URL 中?

【讨论】:

    【解决方案2】:

    你的计划叫做“大爆炸重写”,很常见,而且是个坏主意。

    在大多数情况下,大爆炸方法赢得了争论。

    但是,通过将其作为 Big Bang 版本,您最大限度地提高了在完成时落后于计划的可能性,因此您也最大限度地提高了您没有花足够时间准备的可能性。这会给您和您的客户带来不便。

    不幸的是,也许是由于人性的某些内在因素,这种情况对于 Big Rewrite 项目来说是陈词滥调。

    ——Chad Fowler: The Big Bang

    成功升级的关键之一是渐进式地进行,在同一个应用程序中并排运行两个框架,并将 AngularJS 组件一个一个移植到 Angular。这使得在不中断其他业务的情况下甚至可以升级大型和复杂的应用程序,因为工作可以协作完成并分散在一段时间内。 Angular 中的 upgrade 模块旨在实现无缝增量升级。

    有关详细信息,请参阅

    【讨论】:

    • 截至目前,该应用程序尚未发布,因此在迁移过程中,我们不担心停机。我听说如果你使用混合方法,那么应用程序的一部分仍然会卡在 AngularJS 框架中。你的建议是什么?迁移到 1.5,然后一直使用 ng upgrade 直到升级?
    猜你喜欢
    • 1970-01-01
    • 2020-05-29
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    相关资源
    最近更新 更多