javascript - 保持 jQuery 最新的实用方法?

标签 javascript jquery upgrade sdlc

我们正在开展的一些项目在 jQuery 1.4.2 或更早版本中有着深厚的根基,介于缺乏最新版本的性能优势(或语法糖)、使用现已弃用的方法的耻辱以及部署一个积极维护的库的 3 年以上旧版本,升级现在迫在眉睫。

社区中有哪些流行的做法,我们可以采用/重新访问以确保顺利推出(即专注于模糊的兼容性问题、解决全局回归、重构一些旧代码......)?它们如何最好地集成到 SDLC 中以供 future 升级? jQuery 之类的库的合理升级计划是什么(我不认为每次发布都会有显着的 yield 或合理的成本,但每 6-12 个月一次可能是合理的)?

最佳答案

要真正回答您的三个问题,以下是我做过或至少推荐的一些事情:

平滑升级推出的最佳实践

  • 进行测试。这些可以是您的 JS 和/或浏览器测试的单元测试。这些至少应涵盖项目中使用的最典型和最复杂的功能。如果您没有测试,请编写它们。如果您不想编写测试,请重新考虑。如果你真的不想写测试,至少有一个用例列表,有人可以手动执行。
  • 确保在升级前所有测试都通过。
  • 在您现在使用的版本和最新版本之间的每个 (主要)版本中阅读 的发行说明。另请参阅 API 文档中的 RemovedDeprecated 类别。如果您的任何代码使用 jQuery UI,还请查看这些发行说明和 upgrade guides 以了解插页式版本。执行此操作时,请记下您可能需要在代码库中更改的内容(可能会大量使用 grep )。
  • 如果您项目的当前 jQuery 版本 >= 1.6.4,还可以考虑使用 jQuery Migrate plugin 来进一步评估所需的工作。
  • 根据到达那里所需的工作,您的项目是否使用任何需要特定版本的 jQuery 的第三方库,以及其他只有您可以考虑的因素等,决定您想要作为升级目标的版本。
  • 与您的团队会面,查看要对代码库进行的更改列表,并相应地划分/分配工作。也许编写一些脚本或其他工具来提供帮助。如果您有,您团队的编码风格指南/最佳实践文档可能也需要更新。如果可能+可取,决定一次性(推荐)或滚动更新版本。提出合适的发布策略。 (我建议不要将升级作为对代码库的另一个不相关的大更改的一部分发布,因此如果需要,很容易回滚。)
  • 在整个升级过程中,不断运行您的测试。手动测试时,始终监视浏览器控制台是否有新错误。编写涵盖意外错误的新测试。
  • 当所有测试都通过后,决定你想如何推出——如果它是一个网站,一次所有用户或一次的百分比,等等。对于图书馆或其他项目,也许你会发布一个测试版/流血边缘版本,您可以让更有野心的用户在野外为您测试。
  • 记录您刚才所做的一切,以便下次更轻松。
  • [利润]

  • 如何将升级集成到正常工作流程中
  • 再次测试。确保你有它们。确保它们良好、维护良好并涵盖您的大部分代码库和用例。强烈建议使用持续集成设置来自动运行这些测试。
  • 考虑让您的团队创建并同意遵循编码风格指南或标准。这将使将来更容易搜索已弃用的函数调用或构造,因为每个人都将遵循类似的编码模式。诸如脚本、提交钩子(Hook)、静态分析实用程序等工具,用于强制执行好的或找出坏的编码风格可能很有用(取决于团队)。
  • 调查并可能决定使用像 NPMbower 这样的包管理器来管理 jQuery 版本和您可能使用的其他依赖于它的第三方库。 (你仍然需要维护你自己的 JS 代码并经历与上面几乎相同的过程。)
  • 同样,一旦您超过 1.6.4 版,请确保 Migrate 插件是您升级工作流程的一部分。
  • 评估初始大升级过程中哪些有效,哪些无效,并从中提取最适合您当前工作流程的一般流程。无论您是否计划在每次有新版本时升级,都会有持续的维护任务和习惯,您可能希望将这些任务和习惯保留为一般开发最佳实践。

  • 合理的升级时间表

    这本质上是一个 CBA/风险管理问题。你必须权衡一些事情:
  • 同一主要版本中不应有重大 API 更改,因此您通常应该能够以最少的努力升级到最新的次要版本,无需重构。这假设您拥有并维护了良好的测试,您可以在您决定一切都足以进行部署之前在您的项目上运行这些测试。
  • 主要版本升级需要更多研究、更多重构和更多测试。在研究步骤之后,您应该对升级进行成本效益分析。
  • 这可能无关紧要,但如果您的任何项目是一个拥有众多用户的网站,那么让所有用户在下次访问时必须下载您网站上所有更改的 JS 文件的成本是多少它(而不是坚持使用可能仍在浏览器中缓存的旧版本)?
  • 升级的决定应该始终是一个主观的决定。无论是次要还是主要,您仍然必须每次都证明是否值得进行任何升级。始终阅读发行说明。它是否修复了 security vulnerability 或与您或您的用户当前遇到的问题相关的错误?它会显着提高你的项目的性能吗(一定要有基准来验证它)?它是否极大地简化了您一直在使用的编码模式,让您的代码编写得更干净、更轻松?是否有您要使用的依赖于此较新版本的第三方库?您是否已经使用了依赖于旧版本的第三方库? (如果是这样,这些库是否可能很快会升级以与新版本一起使用?)您对您的测试和 QA 过程是否有信心,升级将占用合理数量的开发资源并且不会导致重大回归?你有没有想过最终用别的东西换掉 jQuery?等

  • 当然,这只是我的建议。其中有一些反复出现的主题,我希望它们很清楚。无论如何,我希望有人觉得这有帮助!

    关于javascript - 保持 jQuery 最新的实用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15330448/

    相关文章:

    jquery - 在 visual studio 中创建网站

    django - pip install django --upgrade 安装旧版本

    javascript - 阻止嵌入式 iframe 重定向

    JavaScript 数组。先进的

    jQuery 下拉列表,更改时执行的操作

    jquery datepicker css 问题

    c# - 将大型 C# winforms 应用程序升级到 WPF 的最简单方法是什么

    visual-studio - 从 Visual Studio 2015 切换/升级到 Visual Studio 2017

    php - MYSQL之谜。传递给函数的值不正确

    javascript - 使用 jQuery 获取 php 输出结果值的问题