2015-02-24 24 views
2

還有一個與Javascript分析相關的問題。 是的,我知道有很多與JavaScript代碼分析相關的問題,相信我已經經歷了很多。但我並不是在討論任何分析工具。我只是想爲自己實施一個小型分析腳本,只是爲了幫助我瞭解。Javascript中的自動執行功能用於分析實現

我想爲javascript寫一個簡單的虛擬分析代碼,但無法弄清楚開始的方式。我真正想要的是類似的功能,例如PHP中的declare tick函數,它每次遇到任何在PHP中編寫分析代碼時非常有用的語句都會自動執行。

是否有任何類似於Javascript聲明的函數,以便我可以實現這些函數來使用這些函數來剖析我的代碼performance.now()performance.memory等。我不想用這種方法。

var a = performance.now(); 
// do your stuffs 
var b = performance.now(); 
console.log('It took ' + (b - a) + ' ms.'); 

我不認爲這是切實可行的方法。不想將分析代碼注入我的生產腳本中。

我想要的是在我的腳本上運行分析代碼,以便每次遇到生產腳本函數時都自動執行。或者你們能否啓發更好的開始?

P.S.我不是在談論使用不同的瀏覽器分析工具,而是討論如何編寫基本分析工具的小信息,該工具將在遇到javascript語句或函數時自動觸發。

+0

[控制檯功能](https://developer.mozilla.org/en-US/docs/Web/API/Console)將幫助您從...開始...它有許多工具來調試,配置文件,測試,計時......當然,這是一個開始,但如果你發現「它們是如何工作的」,我認爲你將朝着你的目標走向正確的方向。 – gmo 2015-02-24 08:40:38

回答

-2
+0

請仔細閱讀這個問題。我不是在談論使用分析工具。我正在談論根據我的知識構建基本分析工具的方式。 – 2015-02-24 08:23:41

3

也許AOP庫的JavaScript像meld會幫助你嗎?

例如:

var timeTook; 

var myObject = { 
    doSomething: function(a, b) { 
     return a + b; 
    } 
}; 

function beforeFunction() { 
    timeTook = performance.now(); 
} 

function afterFunction() { 
    console.log("It took " + (performance.now() - timeTook)); 
} 

meld.before(myObject, 'doSomething', beforeFunction); 
meld.after(myObject, 'doSomething', afterFunction); 

另請參見this question在SO。

1

AOP是一個很好的。但更多的是出於交叉問題而不是剖析。不同之處在於,即使在生產代碼中也存在AOP,其中分析代碼不必在生產代碼中。您應該將它集成到您​​的測試環境中。

與分析器集成將會更加方便。理想的分析器會測試你的代碼,所以你不必包裝每一個函數。 spy-js是一個很好的圖書館。