如何修改min.js或者压缩后的js,以便提高代码的可读性。

这篇具有很好参考价值的文章主要介绍了如何修改min.js或者压缩后的js,以便提高代码的可读性。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前端的js上线的时候一般会使用打包工具处理(webpack,gulp,ugly.js 等)。这样做有几点作用。

  1. 可以压缩空间,提高页面响应速度
  2. 一定程度上可以保护自己的代码安全,防止别人清晰看懂逻辑或者拷贝代码。
  3. 提高别人阅读自己代码的门槛

可前端开发工作中多多少少,会需要看别人的js代码。可随之而来的就是各种噩梦。eval,jsfuck,obfuscator等各种混淆方案就出来了。当然这种也在一定程度上保护了自己的代码。可是对于阅读者来说,简直是天书。关于混淆,以及反混淆等空了再写博客讲解。不过最常见的还是简化,简化后的代码,往往第一步处理起来是进行格式化,然后边看边修改。其中非常大的工作量是调整代码结构。理清文件的结构逻辑。比如下面的代码。

1 function _createClass(t, e, a) {
2   return e && _defineProperties(t.prototype, e), a && _defineProperties(t, a), t
3 }

其实阅读这个代码有些复杂的,里面既有逻辑运算,也有序列表达式,也有返回值。这个是否非常想处理为下面的结构:

1 function _createClass(t, e, a) {
2     if (e) {
3         _defineProperties(t.prototype, e);
4     }
5     if (a) {
6         _defineProperties(t, a);
7     }
8     return t;
9 }

这种代码结构就清晰多了。可是如何自动化处理那?手动修改一是慢,二是非常容易出错,在着无法完成功能复用。遇到其他的代码任然需要重新修改。比如这个时候又来了这样一段代码。

1 function m(t) {
2   var e = this.data.get("items"),
3     a = this.data.get("loop"),
4     n = e.length;
5   t < 0 ? a ? this.data.set("activeIndex", n - 1) : this.data.set("activeIndex", 0) : t >= n ? a ? this.data.set("activeIndex", 0) : this.data.set("activeIndex", n - 1) : this.data.set("activeIndex", t)
6 }

首先一行定义了多个变量,变量的名称真想重新命名一下,把e重命名为items,a重命名为loop, 不过最后的嵌套多层的三元运算,直接让人崩溃。忽然就想到多年前同事说过的一句话,程序员何必为难程序员。玩笑归玩笑,不过还是要积极的心态面对技术挑战不是。

首先是变量声明表达式,一次声明了三个变量。这种写法其实程序员是比较排斥的,非常想一行写一个。

 1 function m(offset) {
 2     var items = this.data.get("items");
 3     var loop = this.data.get("loop");
 4     var length = items.length;
 5     if (offset < 0) {
 6         if (loop) {
 7             this.data.set("activeIndex", length - 1);
 8         } else {
 9             this.data.set("activeIndex", 0);
10         }
11     } else {
12         if (offset >= length) {
13             if (loop) {
14                 this.data.set("activeIndex", 0);
15             } else {
16                 this.data.set("activeIndex", length - 1);
17             }
18         } else {
19             this.data.set("activeIndex", offset);
20         }
21     };
22 }

上面的代码就好看多了,基本的逻辑也可以看懂了。当时就想有没有工具可以做这个,或者如何利用现在的gpt工具去美化一下那。后检索了大量的资料,使用过市面的各种工具,发现还是自己写比较合适。gpt美化后,会有明显的代码逻辑错误。更重要的是有输入限制。

 文章来源地址https://www.toymoban.com/news/detail-675790.html

写一个js代码美化工具,多么具有挑战性。起码要懂编译原理,程序的语义和语法。于是买了很多关于编译原理的书。看几本后就上手了。结果写的80%以上了后,因为各种事情一直耽搁着。最近终于完成了大部分。感兴趣的朋友可以看下。

https://www.dejs.vip/javascript/beautify   (目前仍有部分bug并且无法100%还原代码的)

function justAFunction(){console.info("test");}

上面的代码简化后可能变成:

1 function a(){console.info("test");}

如果仅从代码中是无法推断出原来函数的名字的。不过可以根据文中语义去判定。但是大多时候,你是无法判定的。代码逻辑分析中加入人工智能或者使用代码库比对,有可能可以做到。不过这种复杂的程度过高了。

 

这个工具也许是前端,逆向或者爬虫工作者的一个福音。也或许会给代码持有者带来不安或者担忧。如何判定工具,留给使用者自行判定吧。

 

到了这里,关于如何修改min.js或者压缩后的js,以便提高代码的可读性。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ElasticSearch创建后的索引如何修改数据类型

    一、前言 在 Elasticsearch 中,一旦创建索引,就不能更改现有字段的数据类型。如果您需要更改数据类型,则需要重新创建索引并使用新的数据类型。以下针对各种业务场景总结几种修改方法。 二、【方法一】删除重建 这种方式的使用场景为当前索引库数据量不大,而且可

    2024年02月13日
    浏览(51)
  • 如何爆破js加密后的密码?

    如何爆破js加密后的密码? 1、首先burp中安装插件: https://github.com/whwlsfb/BurpCrypto   安装插件完毕后,分析进行js加密的算法。 2、分析加密过程: 找到相关的加密算法的代码,分析代码逻辑。可以从登录界面的网站源代码里搜encrypt或者crypt字段。 根据这段代码,最终passWor

    2024年02月14日
    浏览(45)
  • 【PyTorch 实战2:UNet 分割模型】10min揭秘 UNet 分割网络如何工作以及pytorch代码实现(详细代码实现)

      U-Net,自2015年诞生以来,便以其卓越的性能在生物医学图像分割领域崭露头角。作为FCN的一种变体,U-Net凭借其Encoder-Decoder的精巧结构,不仅在医学图像分析中大放异彩,更在卫星图像分割、工业瑕疵检测等多个领域展现出强大的应用能力。UNet是一种常用于图像分割的卷

    2024年04月28日
    浏览(40)
  • 【Selenium+Webmagic】基于JAVA语言实现爬取js渲染后的页面,附有代码

    事先声明 笔者最近需要查看一些数据,自己挨个找太麻烦了,于是简单的学了一下爬虫。笔者在这里声明, 爬的数据只为学术用 ,没有其他用途,希望来这篇文章学习的同学能抱有同样的目的。 枪本身不坏,坏的是使用枪的人 效果 查看自己的Chrome版本,过高需要卸载再下

    2024年02月04日
    浏览(54)
  • 记csdn打不开或打开缓慢后的修复--如何查找dns并修改hosts文件

    问题: CSDN文章打开的十分缓慢,经常出现无法打开页面的错误提示 (以前用的好好的,现在不知道公司局域网改了什么东西,导致我的电脑打开CSDN经常缓慢好久,很多次直接打不开) 解决: 修改dns服务器地址为如下图即可 修改hosts文件 windows下的hosts路径是 修改hosts权限,

    2024年02月03日
    浏览(52)
  • 自己开发或者修改的组件包如何发布到npm官方市场

    1、注册账号 打开npm官方网站: www.npmjs.com; 进行注册 注册需要用户名,密码和邮箱, 当注册完成后需打开邮箱进行验证(邮箱不验证无法上传) 二、  在需要打包发布的文件夹package.json所在目录下 执行命令:npm init  按照提示修改后一路回车就行; package name 就是安装命令

    2024年02月08日
    浏览(37)
  • 如何使用js对图像进行压缩

    JavaScript 可以使用类似于 canvas 和 web workers 来实现图像压缩。 使用 canvas,可以将图像绘制到 canvas 上,然后使用 canvas 提供的 toBlob() 或 toDataURL() 方法将其转换为不同格式的图像。在这些方法中指定图像质量参数即可实现压缩。 使用 web workers,可以在后台执行图像压缩,以避

    2024年02月11日
    浏览(40)
  • Vivado生成压缩后的FPGA bit文件方法详解

    Vivado生成压缩后的FPGA bit文件方法详解 当我们使用Xilinx公司的FPGA开发环境Vivado进行开发时,通常会需要将设计好的程序烧录到目标板上进行测试和验证。而这个过程中,需要将设计好的FPGA bit文件通过一些方式传输到目标板上。 但是,FPGA bit文件通常都比较大,如果直接传输

    2024年02月06日
    浏览(41)
  • 程序员如何提高代码能力

    C++ 是一种功能强大的编程语言,广泛应用于操作系统、数据库、游戏开发等领域。而要成为一名优秀的 C++ 程序员,不仅需要掌握 C++ 的基本语法和特性,还需要不断提高自己的代码能力。 以下是一些具体的方法和建议,帮助你提高 C++ 代码能力: 阅读优秀的代码 阅读优秀代

    2023年04月25日
    浏览(51)
  • 程序员如何提高代码能力?

    作为一名程序员,自己的本质工作就是做程序开发,那么程序开发的时候最直接的体现就是代码,检验一个程序员技术水平的一个核心环节就是开发时候的代码能力。众所周知,程序开发的水平提升是一个循序渐进的过程,每一位程序员都是从“菜鸟”变成“大神”的,所以

    2024年02月01日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包