有沒有辦法讓我在我的開發過程中在javascript/jquery代碼中輸出日誌信息,這樣我就可以在chrome/firefox中看到日誌消息,然後在生產中我在我的javascript上運行一些工具來縮小它,並刪除這些日誌記錄。是否可以在chrome中輸出日誌/跟蹤,並刪除生產?
目前有什麼可以做我想要的嗎?
我知道日誌記錄根據您使用的瀏覽器而不同,是否有某種記錄插件可用於Chrome和Firefox?
有沒有辦法讓我在我的開發過程中在javascript/jquery代碼中輸出日誌信息,這樣我就可以在chrome/firefox中看到日誌消息,然後在生產中我在我的javascript上運行一些工具來縮小它,並刪除這些日誌記錄。是否可以在chrome中輸出日誌/跟蹤,並刪除生產?
目前有什麼可以做我想要的嗎?
我知道日誌記錄根據您使用的瀏覽器而不同,是否有某種記錄插件可用於Chrome和Firefox?
那麼這取決於你的開發環境。我通常會聲明一個全局ENV變量,用於存儲應用程序狀態。 您可以創建一個新模塊登錄,您將檢查ENV是否正在開發。如果是這種情況,那麼你將調用console.log()或你喜歡什麼來滿足你的日誌需求。如果ENV var告訴瀏覽器該應用程序處於生產模式而不是您的Log模塊,則您什麼也不做。
事情是這樣的:
(function (window, env){
'use strict';
var logger = {
log: function(what) {
if (env !== 'production') {
console.log(what);
}
}
}
window.myLogger = logger;
}(window, ENV));
而當你將撥打:
myLogger.log('Hello, I am a logger');
消息將只在開發模式下記錄。
希望這有幫助,讓我知道。
乾杯!
一個簡單的建議,你可以覆蓋作爲生產的空功能的console.log()方法的方法。 This answer here更詳細地回顧它。
這就是我所做的。你必須定義一個變量,表明你在開發中,而不是在生產中。使用預處理器語言(PHP ..等)將其輸出到HTML中。一些舊的IE瀏覽器沒有控制檯對象。
您在計算如何定義__DEV__
時有選項如果您的生產域名不等於您的生產域名,或者您可以在服務器端輸出JavaScript代碼,您可以使用JavaScript檢查主機名並定義__DEV__
一些環境變量。
if(typeof window.console === 'undefined') {
window.console = {
log: function() {}
// etc, define all the methods for which you will call
// while developing.. warn, debug..
}
}
var CONSOLE = window.console.log; // get a reference to the function
window.console.log = function() {
if(typeof window.__DEV__ != 'undefined') {
return CONSOLE.apply(this, arguments);
}
}
這是更有效的,然後寫東西,刪除代碼的所有console.*
呼叫。你不想習慣新的調用結構,如logger.log
,因爲那隻會浪費時間。這樣,您仍然可以使用常規的日誌記錄約定,但它不會在您的生產環境中輸出。如果找不到__DEV__
,那麼它不會記錄。默認情況下它不會記錄。您需要在HTML文檔的頂部定義__DEV__
。
http://stackoverflow.com/questions/20092466/can-uglify-js-remove-the-console-log-statements – 2014-11-20 20:27:17
什麼操作系統? IBM System/360或Linux? – 2014-11-20 20:39:25
我正在使用osx,不知道爲什麼這很重要? – Blankman 2014-11-20 20:40:34