最近在學習釘釘(乙個協作應用)桌面應用的前端原始碼時候,發現其js原始碼是用browserify做模組開發。於是想還原其原始碼的原本的目錄結構,學習它的目錄分類以及業務劃分。
前言
用過browserify構建工具的應該清楚,在壓縮合併後的**的最前面,有處理模組依賴關係的**:
function目錄結構解析我寫了乙個處理的方法,在browserify處理依賴關係地方呼叫。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}
分析方法:
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]) {
由於篇幅關係,沒有顯示所有目錄結構。
可以看出第一層的目錄結構是:
directiveps:乙個典型的angularjs的目錄結構。filter
libmodule
service
unpopmodal
_process.js
es6-promise.js
path.js
總結
學習別人前端原始碼,我覺目錄結構已經夠用了,畢竟專案的骨架搭好了,其他的也就是添磚加瓦而已。
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...