声明可在nodejs,浏览器,commonJS和AMD中工作的javascript独立库的正确方法是什么?

时间:2018-07-21 06:12:49

标签: javascript node.js cross-browser

所以在我的库文件中,我声明了这样的内容:

(function(mylib){

"use strict";

 mylib.funcA = function () {return "A"};
 mylib.funcB = function () {return "B"};

})(typeof mylib == "undefined" ? (this["mylib"]={}) : mylib);

//我一直在使用类似的东西,并且可以在我可以使用的浏览器中使用

 <script src="mylib.js"></script>
 <script>
      console.log(mylib.funcA()); // outputs "A"
      console.log(mylib.funcB()); // outputs "B"
 </script>

//并且可以在nodejs中使用

 mylib = require("mylib.js")["mylib"];
 console.log(mylib.funcA()); // outputs "A"
 console.log(mylib.funcB()); // outputs "B"

但是我只想拥有一个包装器方法,我可以让用户正确地声明该库并以所有常见的js风格工作。

我在堆栈溢出上看到了几种不同的答案,但是没有人给出一个简单的例子来说明这一点。帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

您想要一个UMD模块。

UMD标准存储库中有一个适合您的需求:https://github.com/umdjs/umd/blob/master/templates/returnExports.js

此处没有信息和更多模板:https://github.com/umdjs/umd