在一个文件中创建节点模块和 <script>

Create node module and <script> in one file

如何编写我的源文件,以便它可以 "required" 和 <script src=""> 来自同一个代码库?

我遇到了一个罕见的功能,该功能对应用程序的双方都有意义,并且只想维护一个版本。

假设脚本不使用任何平台特定功能,是否可以使脚本在双方都可用?

您也可以在客户端使用 requirejs,因此可以通过 <script> 中的 requirejs() 在您的页面上包含该模块,

脚本本身:

var myFunc = function(){
};

if (typeof module !== 'undefined' && typeof module.exports !== 'undefined')
  module.exports = myFunc;

现在您可以 require() 这个模块,或者使用 <script type="text/javascript" src="..."></script>

将它包含到您的网页中

检查模块是否存在,如果不存在,则使用 window。

(function (factory) {
    if (typeof module === "object" && typeof module.exports === "object") {
        module.exports = factory();
    } else {
        window.myObj = factory();
    }
}(function (){
    // your code here, return what should be exported.
    var myObj = {foo:"Bar"};
    return myObj;
}));

此外,如果您需要额外的依赖项,您可以将上面的内容更改为:

(function (factory) {
    if (typeof module === "object" && typeof module.exports === "object") {
        module.exports = factory(require('somemodule'));
    } else {
        window.myObj = factory(window.somemodule);
    }
}(function (somemodule){
    // your code here, return what should be exported.
    var myObj = {foo:somemodule("Bar")};
    return myObj;
}));