2014-11-20 43 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(); 
相关问题