Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何同时提供node.js和;对(子)模块的浏览器支持_Javascript_Node.js_Module - Fatal编程技术网

Javascript 如何同时提供node.js和;对(子)模块的浏览器支持

Javascript 如何同时提供node.js和;对(子)模块的浏览器支持,javascript,node.js,module,Javascript,Node.js,Module,假设我将一个示例库拆分为两个文件:基本库和附加模块。基本模块位于module.js中: var Calculator = { add: function(a, b) { return a + b; }, sub: function(a, b) { return a - b; } }; if (typeof Calculator == "undefined") {

假设我将一个示例库拆分为两个文件:基本库和附加模块。基本模块位于
module.js
中:

var Calculator = {
    add: function(a, b) { return a + b; },
    sub: function(a, b) { return a - b; }
};
if (typeof Calculator == "undefined") {                                                                                                                                                                                                                                        
        var Calculator = {};                                                                                                                                                                                                                                                   
}                                                                                                                                                                                                                                                                              

Calculator.mul = function(a, b) { return a * b; };                                                                                                                                                                                                                             

Calculator.div = function(a, b) { return a / b; };
附加模块位于
子模块.js
中:

var Calculator = {
    add: function(a, b) { return a + b; },
    sub: function(a, b) { return a - b; }
};
if (typeof Calculator == "undefined") {                                                                                                                                                                                                                                        
        var Calculator = {};                                                                                                                                                                                                                                                   
}                                                                                                                                                                                                                                                                              

Calculator.mul = function(a, b) { return a * b; };                                                                                                                                                                                                                             

Calculator.div = function(a, b) { return a / b; };
这就是构建了多少js库(主模块+子模块),尽管它们的配置可能要好得多。我准备了一个基本的
index.html
文件:

<html>
<head>
        <script type="text/javascript" src="module.js"></script>
        <script type="text/javascript" src="submodule.js"></script>
</head>
<body>
</body>
</html>
这就是图书馆所做的一切。现在我想提供对node.js的支持(而不是破坏对浏览器的支持)。我用根参数将定义封装在立即调用的fun expr中,根参数是在运行时计算的:节点的
模块。如果存在,则导出
,否则导出
此==窗口
(浏览器)。代码如下所示:

(function(root) {

        root.Calculator = {
                add: function(a, b) { return a + b; },
                sub: function(a, b) { return a - b; }
        };

}(typeof module == 'undefined' ? this : module.exports));
运行节点时,我可以导入模块:

> var c = require('./module.js')
undefined
> c
{ Calculator: { add: [Function], sub: [Function] } }

但如何导入子模块?

可能是一个很好的例子。你可以从那里看到结构。

你可能会发现。@Andy谢谢你的链接,就是这样。无论如何,我想我仍然需要一些关于如何使用它的建议。我想我需要的是
nodeAdapter.js
(最后我需要node.js和requireJS支持)