云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

_pb数据库_好用

小七 141 0

先决条件:要全面理解本文,您应该具备Javascript和框架的工作知识 在这篇博文的前文中,我们研究了Ember弃用的基本知识,以及它对我们如何将代码库迁移到新的Ember版本的影响。接下来,我们将讨论抽象语法树(AST)、codemods,以及如何使用codemods将Ember应用程序迁移到新的Ember版本Codemod是一种能够轻松有效地对代码进行全面更改的机制,有助于代码库的大规模迁移。Codemod实现可以通过jscodeshift等自动化工具来执行。在研究jscodeshift这样的工具如何工作之前,我们必须了解重构、为什么需要大规模重构以及ast。重构重构这个术语最早是由ThoughtWorks的martinfowler提出的;他还写了一本关于这个主题的开创性书籍。福勒说重构是一种规范的技术,用于重构现有的代码体,在不改变外部行为的情况下改变其内部结构。大规模重构涉及一系列保持行为的小转换。每个转换(称为重构)几乎没有什么作用,但是一系列转换会产生重大的重组。每次重构都很小;因此,出错的可能性较小。在每次重构之后,系统都保持完整的功能,从而减少了在最终重构过程中系统被严重破坏的可能性。代码重构背后的真正动机是识别代码中的气味或隐藏在黑暗中很长时间的隐藏问题,这些问题最终会在应用程序执行重要任务的关键时刻出现。这种情况可能证明代价高昂;它可能会带来一次又一次的维护噩梦。因此,理解引起问题的代码的复杂模式,然后应用适当的重构机制来完全消除问题是有意义的。代码气味:代码中的臭味是指代码中的某些结构,这些结构暗示(有时强烈要求)重构的可能性。判断什么是代码味道和不是代码味道是主观的,并且因语言、开发人员和开发方法而异。在重构方面,martinfowler和kentbeck发现了大约20种不同类型的代码气味。他们还对各种重构方法进行了分类,这些重构方法可用于从源代码中去除这些代码气味。抽象语法树AST是用任何编程语言编写的源代码的抽象语法结构的树表示。树的每个节点表示源代码中出现的一个构造。了解源代码的AST表示形式可以让您在做许多伟大的事情时发挥巨大的作用:您可以编写自己的ESLint规则来执行代码约定您可以编写自己的JS传输代码你可以编写强大的codemods来重构你的代码库codemods的工作原理Codemod对源代码做了一个非常简单的处理–它将代码转换为AST表示,处理AST中的节点,并将AST转换回源代码。jscodeshift工具下图显示了jscodeshift工具如何将源代码转换为AST,并将操纵的AST转换回代码。jscodeshift是一个工具包,用于在多个Javascript或Typescript文件上运行codemods。要使用jscodeshift实现转换通过npm安装jscodeshift包$npm i-g jscodeshift美元使用工具箱并对源文件运行一系列转换。$jscodeshift-t myTransforms fileA fileB–foo=bar该工具箱提供了一个运行器和一个围绕重铸工具的包装器(提供一个不同的API)。如图中所示,recast是一个AST-to-AST转换工具,它也尽量保留原始代码的样式。运行程序对传递给它的每个文件运行所提供的转换。它还输出有多少文件已经(没有)被转换的摘要。重铸recast是一个JavaScript语法树转换器,一个非破坏性的漂亮打印机,以及自动源映射生成器。Recast公开了两个基本接口,一个用于解析Javascript代码,另一个用于重新打印修改后的语法树。有关如何使用.parse和.print的示例:现在,您可以操纵AST,然后使用重铸.打印具体如下:,无功输出=重铸.打印(ast).code;//打印修改后的语法树框架中的Codemods许多JS框架严重依赖codemods来无缝地进行相关的代码迁移,因此使用框架的开发人员在转到新api或框架本身的新版本时不必重写大量代码。React、Vue、Angular等框架已经发布了大量的codemods(和codemod工具),以帮助开发人员对框架中编写的应用程序进行大规模的代码迁移。余烬编码余烬,流行的MVC模型JS框架依赖codemods从一个版本迁移到下一个版本。每当框架中引入了不赞成或破坏性的更改时,核心团队确保它们具有适当的向后兼容性,并使用codemods明确定义了迁移路径。Ember社区的一些示例代码是,ember模块codemod:codemode将ember应用程序升级到JavaScript(ES6)模块从旧的moduleFor*语法转换项目余烬团@2更新的语法ember test helpers codemod:codemod将您的ember测试转换为使用@ember/test helpersember cli更新在Freshworks,对于前端迁移,我们通常使用ember cli更新工具来升级我们的框架库和其他支持插件。它提供了一种简单有效的方法来无缝升级我们的单页应用程序,因为该工具会自动解析依赖关系运行该工具后,安装依赖项的新版本;该工具还帮助您识别要升级到的ember版本的可用codemod。ember cli update是更新ember cli的命令行工具余烬应用程序和加载项(和微光.js应用程序)。可以将其作为所有项目可用的全局可执行文件运行,也可以在单个项目上运行Ember CLI命令。它从ember cli update codemods manifest获取可用codemod的列表和相应的指令。要安装该工具,请使用命令$npm install-g ember cli update。要更新到Ember CLI的最新版本,请使用命令Ember CLI update。要更新特定的CLI版本,请使用Ember>命令更新相关的CLI版本号。在更新Ember CLI并解决了可能出现的任何问题之后,要运行codemods,请使用命令Ember CLI update–run codemods。 工具书类视频christophwa系统渐进演化用Codemods进行大规模重构编写codemods一次更改所有代码2018年余烬节:变形金刚-乔纳森杰克逊的伪装代码前端大师:介绍Codemods和AST由Kent C.Dodds掌握AST的艺术并控制你的JS文章有效的Javascript代码Codemod生存Codemods入门编写代码重写代码太棒了工具https://github.com/facebook/jscodeshifthttps://github.com/benjamn/recasthttps://github.com/benjamn/ast-typeshttps://astexplorer.net相关岗位在迁移到Ember的新版本之前需要知道什么Freshwave–Freshworks的工作方式