2014-11-20 29 views
0

我已經爲log4javascript的自定義日誌「appender」進行了第一次嘗試。它可以工作,但它被卡在原始代碼中。我想把我的擴展保存在一個單獨的文件中,但我不瞭解其餘的代碼以便知道如何提取它。什麼是擴展在JavaScript通用模塊(UMD文件)中定義的類的正確方法

據我所知,log4javascript以某種方式尊重UMD模式,但是就我所知。

(儘管它不應該是...

(函數(根工廠){})(這一點,函數{})...

...相反的...

(功能(工廠,根){})(函數{})

... ???? *)

(function(factory, root) { 
    if (typeof define == "function" && define.amd) { 
     define(factory); 
    } 
    else if (typeof module != "undefined" && typeof exports == "object") { 
     module.exports = factory(); 
    } 
    else { 
     root.log4javascript = factory(); 
    } 
})(function() { 

     : 
    Here be dragons . . . 
     : 


    /* -- - this code works from here, but not if I - -- */ 
    /* -- - try to move it out to a file of its own - -- */  
    function MyAppender() {} 
    MyAppender.prototype = new Appender(); 
    MyAppender.prototype.layout = new SimpleLayout(); 
    MyAppender.prototype.append = function(loggingEvent) { 
     alert(this.getLayout().formatWithException(loggingEvent)); 
    }; 
    MyAppender.prototype.toString = function() { 
     return "MyAppender"; 
    }; 
    log4javascript.MyAppender = MyAppender; 
    /* -- -  - - - - - - - - -  - -- */  



     : 
. . . and sea monsters 
     : 


    return log4javascript; 
}, this); 

如何在一個單獨的文件中繼承Appender?

+0

AMD的支持,是最近此外,由於幾個人要求它,並添加兼容的價格與模塊加載器是附加複雜。一旦我確定了答案是什麼,我會盡快回答:)可能長期的答案是讓我把AMD和非AMD文件放回到未來的版本中。 – 2014-11-20 23:37:04

+0

OH!你是編寫log4javascript的Tim Down!我很榮幸!您可能有興趣知道我剛剛成功將log4javascript嵌入Google Apps腳本並記錄到Google Spreadsheet中。 ,如果你喜歡,你可以複製這個文件夾,它弄砸了:https://drive.google.com/drive/#folders/0B6GUFwft5liMTDhuZUtJSmszU28 當然,你需要搜索「VAR logSheet = SpreadsheetApp.openById 「並用您自己的副本密鑰替換電子表格密鑰。 讓我知道你是否有問題。 – 2014-11-21 01:14:43

回答

1

由於前張貼了幾個小時,我一直在閱讀更多關於UMD,AMD,requireJS等

的主要問題是名字空間純度,它似乎。

想通了,我所要做的就是解決名稱空間問題。事實證明,這非常簡單:它就在代碼中!咄! :

log4javascript.MyAppender = MyAppender;

而不是。 。 。

MyAppender.prototype = new Appender(); 
MyAppender.prototype.layout = new SimpleLayout(); 

...我只是不得不這樣做......

MyAppender.prototype = new log4javascript.Appender(); 
MyAppender.prototype.layout = new log4javascript.SimpleLayout(); 
相關問題