日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/10/31 编程问答 87 如意码农
生活随笔 收集整理的這篇文章主要介紹了 如何修改min.js或者压缩后的js,以便提高代码的可读性。 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前端的js上線的時候一般會使用打包工具處理(webpack,gulp,ugly.js 等)。這樣做有幾點作用。

  1. 可以壓縮空間,提高頁面響應(yīng)速度
  2. 一定程度上可以保護(hù)自己的代碼安全,防止別人清晰看懂邏輯或者拷貝代碼。
  3. 提高別人閱讀自己代碼的門檻

可前端開發(fā)工作中多多少少,會需要看別人的js代碼。可隨之而來的就是各種噩夢。eval,jsfuck,obfuscator等各種混淆方案就出來了。當(dāng)然這種也在一定程度上保護(hù)了自己的代碼??墒菍τ陂喿x者來說,簡直是天書。關(guān)于混淆,以及反混淆等空了再寫博客講解。不過最常見的還是簡化,簡化后的代碼,往往第一步處理起來是進(jìn)行格式化,然后邊看邊修改。其中非常大的工作量是調(diào)整代碼結(jié)構(gòu)。理清文件的結(jié)構(gòu)邏輯。比如下面的代碼。

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

其實閱讀這個代碼有些復(fù)雜的,里面既有邏輯運(yùn)算,也有序列表達(dá)式,也有返回值。這個是否非常想處理為下面的結(jié)構(gòu):

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 }

這種代碼結(jié)構(gòu)就清晰多了??墒侨绾巫詣踊幚砟??手動修改一是慢,二是非常容易出錯,在著無法完成功能復(fù)用。遇到其他的代碼任然需要重新修改。比如這個時候又來了這樣一段代碼。

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, 不過最后的嵌套多層的三元運(yùn)算,直接讓人崩潰。忽然就想到多年前同事說過的一句話,程序員何必為難程序員。玩笑歸玩笑,不過還是要積極的心態(tài)面對技術(shù)挑戰(zhàn)不是。

首先是變量聲明表達(dá)式,一次聲明了三個變量。這種寫法其實程序員是比較排斥的,非常想一行寫一個。

 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 }

上面的代碼就好看多了,基本的邏輯也可以看懂了。當(dāng)時就想有沒有工具可以做這個,或者如何利用現(xiàn)在的gpt工具去美化一下那。后檢索了大量的資料,使用過市面的各種工具,發(fā)現(xiàn)還是自己寫比較合適。gpt美化后,會有明顯的代碼邏輯錯誤。更重要的是有輸入限制。

寫一個js代碼美化工具,多么具有挑戰(zhàn)性。起碼要懂編譯原理,程序的語義和語法。于是買了很多關(guān)于編譯原理的書??磶妆竞缶蜕鲜至?。結(jié)果寫的80%以上了后,因為各種事情一直耽擱著。最近終于完成了大部分。感興趣的朋友可以看下。

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

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

上面的代碼簡化后可能變成:

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

如果僅從代碼中是無法推斷出原來函數(shù)的名字的。不過可以根據(jù)文中語義去判定。但是大多時候,你是無法判定的。代碼邏輯分析中加入人工智能或者使用代碼庫比對,有可能可以做到。不過這種復(fù)雜的程度過高了。

這個工具也許是前端,逆向或者爬蟲工作者的一個福音。也或許會給代碼持有者帶來不安或者擔(dān)憂。如何判定工具,留給使用者自行判定吧。

總結(jié)

以上是生活随笔為你收集整理的如何修改min.js或者压缩后的js,以便提高代码的可读性。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美精品黄色片 | 亚洲精品国产成人无码 | 国产精品系列在线播放 | 亚洲免费视 | 日韩亚洲视频在线观看 | 国产精品国产一区二区 | 奇米成人 | 人妻少妇被猛烈进入中文字幕 | 久久久久亚洲av无码专区体验 | aaa级片| 免费在线观看黄色av | 李宗瑞91在线正在播放 | 91麻豆免费看 | 欧美视频www | 91av在线视频播放 | 国产免费网址 | 成人片免费视频 | 99国产精品久久久久久久成人 | 欧美视频1区 | 中文字字幕在线中文 | 美国伊人网 | 偷拍视频一区 | 中文字幕亚洲在线观看 | 河北彩花69xx精品一区 | 日韩精品在线免费看 | 97精品人妻一区二区三区蜜桃 | 一级片自拍 | 成人免费视频网站在线看 | 亚洲啊v在线 | 国产午夜在线一区二区三区 | 啪啪综合 | a级片一区二区 | 亚洲av综合色区无码一二三区 | 欧美另类综合 | 少妇性l交大片免潘金莲 | av电影在线网站 | 伊人亚洲综合 | 日韩美一级片 | 能在线观看的av网站 | 6080一级片| 浪浪视频在线观看 | 三上悠亚中文字幕在线播放 | 亚洲女优在线 | 日本不卡免费在线 | 久久久久久久极品内射 | 免费久久精品视频 | 久草毛片 | 欧美午夜精品理论片a级按摩 | 香港黄色网 | 一区二区片 | 国产aaaaaa | 国产影视一区二区 | 国产精品亚洲一区二区三区在线观看 | 影音先锋亚洲一区 | 久久国产99| a天堂中文在线观看 | 国产草草影院 | 欧美性欧美zzzzzzzzz | 欧美区一区二区 | 欧美性猛交久久久乱大交小说 | av在线在线 | 欧美激情综合色综合啪啪五月 | 国产成人精品视频一区二区 | 欧美日韩成人精品 | 女同vk | 综合久久av | 性欧美大战久久久久久久久 | 国产精品久久久久影院色老大 | 福利片网址 | 日本成人一区 | 欧美三日本三级少妇三级99观看视频 | 欧美成年人视频 | av丝袜在线观看 | 97国产一区 | 久久中文娱乐网 | 精品99视频 | 欧美特黄 | 色5月婷婷 | 蜜桃一区二区三区 | 激情一级片 | 在线观看免费av网站 | 久久久视 | 强伦人妻一区二区三区视频18 | 欧美一级特黄aaaaaa大片在线观看 | 手机看片国产日韩 | 欧美xxxxbbb| 国产成人综合欧美精品久久 | 欧美浪妇xxxx高跟鞋交 | 黄色网页在线免费观看 | 欧美日韩国产中文 | 亚色91| 国产黄色视 | 肉色超薄丝袜脚交69xx | 神马午夜51 | 欧美在线视频免费播放 | 日本道中文字幕 | 天天操精品 | 久久全国免费视频 | 美女热逼|