browserify壓縮合併原始碼反編譯

2022-02-21 10:20:30 字數 1807 閱讀 4319

最近在學習釘釘(乙個協作應用)桌面應用的前端原始碼時候,發現其js原始碼是用browserify做模組開發。於是想還原其原始碼的原本的目錄結構,學習它的目錄分類以及業務劃分。

前言

用過browserify構建工具的應該清楚,在壓縮合併後的**的最前面,有處理模組依賴關係的**:

function

e(t, n, r)

var l = n[o] =

};t[o][0].call(l.exports,

function

(e) ,

l, l.exports, e, t, n, r)

}return

n[o].exports

}var i = typeof require == "function" &&require;

for (var o = 0; o < r.length; o++) s(r[o]);

return

s}

目錄結構解析我寫了乙個處理的方法,在browserify處理依賴關係地方呼叫。

分析方法:

function

anlysepath(t, n, r);

//收集所有位址

for(var tk in

t); temp[tk][xx[x]] =x; }}

//解析依賴關係

var after ={};

var doing ={};

function

anlyse(num, prefix)

for(var n in

al) }}

anlyse(r[0],'');

var files ={};

for(var k in

after)

//合併目錄,得出樹形結果

var paths ={};

for(var k in

files);

var begin = paths[ps[0]];

for(var i=1;i);

}

begin =begin[ps[i]]; }}

console.log(paths);

}

呼叫地方:

(function

e(t, n, r) {

anlysepath(t, n, r);

//這裡呼叫,後面**就不重複了。

function

s(o, u) {

if (!n[o]) {

if (!t[o]) {

目錄解析效果:

由於篇幅關係,沒有顯示所有目錄結構。

可以看出第一層的目錄結構是:

directive

filter

libmodule

service

unpopmodal

_process.js

es6-promise.js

path.js

ps:乙個典型的angularjs的目錄結構。

總結

學習別人前端原始碼,我覺目錄結構已經夠用了,畢竟專案的骨架搭好了,其他的也就是添磚加瓦而已。

browserify壓縮合併原始碼反編譯

最近在學習釘釘 乙個協作應用 桌面應用的前端原始碼時候,發現其js原始碼是用browserify做模組開發。於是想還原其原始碼的原本的目錄結構,學習它的目錄分類以及業務劃分。前言 用過browserify構建工具的應該清楚,在壓縮合併後的 的最前面,有處理模組依賴關係的 function e t,n...

Qt中的非同步事件壓縮合併

曾經在mindray的uef框架中大量使用了訊息合併機制來解決訊息在佇列中堆積的問題,一直覺得qt中也應當存在事件合併機制。簡單幾行 能看出以下資訊 1.qt事件佇列支援多執行緒,在使用前加鎖 2.qt的事件佇列屬於執行緒,而物件與執行緒關聯 qevent timer qevent deffered...

前端js和css的壓縮合併之grunt

package.json放在根目錄 例如 c users 123 下,它包含了該項目的一些元資訊,如專案名稱 描述 版本號,外掛程式等。grunt contrib jshint js語法檢查 grunt contrib concat js合併 grunt contrib uglify 採用uglif...