我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何理解前端的自动化重构

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何理解前端的自动化重构

本篇内容主要讲解“如何理解前端的自动化重构”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解前端的自动化重构”吧!

过去,我一直想着抽时间写一个小的前端工具,以对代码进行自动化的重构。但是呢,经过我再三的考虑,我暂时取消了这个打算 ——  主要是没时间。(PS:人生长乐,写个 Charj) 但是呢,我打算写一篇文章记录一下相关的思路。

原因依据很多:

  1. 大部分国内的公司使用的都是 Vue,template、script、style 都耦合在一起;

  2. 大量的前端项目都是轻逻辑,不具有复杂的业务场景

  3. 前端系统被重写的频率太快了

  4. JavaSript 语法太灵活,而 TypeScript 还未普及

  5. ……

简单来说,在缺乏复杂场景的情况下,我不太想去写这样的工具。

如何构建前端自动化重构工具?

在我之前写的那篇『重构的自动化』中,介绍了如何去做这样的工具:

  1. 构建特定语言的语法解析器。

  2. 设定代码坏味道的内容及标准。

  3. 针对于每一项坏味道,编写识别代码。

  4. 编写代码坏味道的建议改进和实施代码。

  5. 实现坏味道的自动化重构。

以 Vue 为例,这个过程便是:

  1. 寻找适用于 Vue 的 AST 生成工具。如 eslint-vue-parser

  2. 寻找和编写适用于 Vue 编码的相关规范。

  3. 对应规范寻找代码中的问题。

  4. 针对该问题寻找改进点

  5. 实现自动化重构

让我们来看个简单的示例,如我们的代码规范中,针对于组件库强制规范了一定要写  scoped。而我们有大量的组件都没有相应的实践。这个时候,就可以通过这种方式来处理。分析中代码中不带 scoped 的 style,然后自动添加:

<style scoped> </style>

添加的模式其实也比较简单:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 解析后,AST 将带有标签等等的位置信息。

  3. 针对所有相关类型的文件进行识别,记录所需要重构的相关信息。file、 location、 changed、 length。

  4. 反向遍历所有的待修改处,读取对应的文件,对应的位置,进行修改。

  5. 保存文件。

  6. 再次运行。

嗯,就是这么简单。

配套工具

根据我先前的一些调研,我整理了一些相关的资料,欢迎大家去玩。

JavaScript

如果只是针对于简单的 JavaScript 重构来说,我们可以考虑使用 jscodeshift 这一类的工具。jscodeshift  是一个工具包,用于在多个 JavaScript 或TypeScript 文件上运行 codemods(自动代码修改)。

当然了,如果你不嫌麻烦的话,还可以使用类似的工具:

SourceEsprima 4.0.1UglifyJS2TraceurAcorn 8.0.4ShiftShift (no early errors)
jQuery.Mobile 1.4.2149.6 &plusmn;1.8%170.7 &plusmn;1.2%178.2 &plusmn;6.0%214.4 &plusmn;13.0%429.5 &plusmn;13.5%203.9 &plusmn;9.6%
Angular 1.2.5125.0 &plusmn;2.8%138.2 &plusmn;2.9%134.5 &plusmn;2.3%113.8 &plusmn;2.8%251.5 &plusmn;1.3%147.1 &plusmn;1.5%
React 0.13.3127.2 &plusmn;1.0%158.2 &plusmn;1.4%160.0 &plusmn;0.8%128.5 &plusmn;2.8%310.8 &plusmn;2.7%182.6 &plusmn;2.7%
Total401.8 ms467.0 ms472.7 ms456.7 ms991.9 ms533.5 ms

嗯,原理都是相似的。

TypeScript

官方提供了 AST 解析。

从我的之前写的前端架构守护工具:https://github.com/phodal/dilay,你就可以看到相似的代码。

CSS

针对于 CSS 重构来说,相似的工具有:https://github.com/csstree/csstree

不过,我们建议你们使用 Lemonj(使用 Antlr 进行语法树解析):https://github.com/twfe/lemonj

框架特定

针对于 Angular,官方提供了 Angular Schematics,除了自动代码修改,还可以做各种自动化升级工作。

针对于 Vue,官方也有类似的工具:https://github.com/vuejs/vue-codemod

针对于 React,官方也有工具:https://github.com/reactjs/react-codemod

结合 CLI 工具

当我们修改完代码之后,下一步要做的事情就是修改文件,这里推荐一下: schematics-utilities,虽然是 Angular  上下游的工具,但是它不限于框架。

有了这个工具,我们就可以快速修改代码,如:

recorder = tree.beginUpdate(path);  recorder .remove(start, length) .insertLeft(start, value);  tree.commitUpdate(recorder);

这些都大同小异,没有什么特别之处。

到此,相信大家对“如何理解前端的自动化重构”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何理解前端的自动化重构

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

nodejs前端自动化构建环境的搭建

为了UED前端团队更好的协作开发同时提高项目编码质量,我们需要将Web前端使用工程化方式构建; 目前需要一些简单的功能:1. 版本控制2. 检查JS3. 图片合并4. 压缩CSS5. 压缩JS6. 编译SASS这些都是每个Web项目在构建、
2022-06-04

工具分享:实现前端埋点的自动化管理

埋点一直是 H5 项目中的重要一环,埋点数据更是后期改善业务和技术优化的重要基础。在日常的工作中,经常会有产品或者业务的同学来问,“这个项目现在有哪些埋点?”,“这个埋点用在哪些地方?”像这样的问题基本上都是问一次查一次代码,效率很低。
2023-05-14

移动前端开发和web前端开发的区别该如何理解

这篇文章给大家介绍移动前端开发和web前端开发的区别该如何理解,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。既然都是前端开发,两者肯定有紧密的联系,但是楼主主要询问区别,我就先简单聊一下相同点,之后在着重分析不同点。 
2023-06-05

基于Docker、Nginx和Jenkins如何实现前端自动化部署

这篇文章给大家分享的是有关基于Docker、Nginx和Jenkins如何实现前端自动化部署的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前期准备基于CentOS 7系统云服务器一台。基于Vue-CLI的项目部署
2023-06-20

如何理解自动化运维工具ansible

这篇文章给大家介绍如何理解自动化运维工具ansible,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。ansible 简介ansible 是什么?  ansible是新出现的自动化运维工具,基于Python开发,集合了众
2023-06-06

Docker容器化Nginx的自动化构建与部署(如何实现Nginx在Docker中的自动化构建与部署?)

本文介绍了使用Docker自动化Nginx构建和部署的详细步骤。通过创建Dockerfile、使用DockerCompose定义服务、运行持续集成和部署(CI/CD)管道,可以实现Nginx在Docker容器中的自动化构建和部署。该方法提供了自动化、一致性、可移植性和可扩展性,从而简化应用程序开发和部署,提高效率和可靠性。
Docker容器化Nginx的自动化构建与部署(如何实现Nginx在Docker中的自动化构建与部署?)
2024-04-02

win11资源管理器自动重启如何解决

本文小编为大家详细介绍“win11资源管理器自动重启如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“win11资源管理器自动重启如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。方法一: 1、首先点击
2023-07-01

如何理解Web前端CSS的定位机制

本篇内容主要讲解“如何理解Web前端CSS的定位机制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Web前端CSS的定位机制”吧!定位(position)顾名思义,你想定哪就定哪;元素的
2023-06-03

编程热搜

目录