2014-07-18 55 views
0

可以說'我有一個樣本庫拆分爲2個文件:基礎庫和附加模塊。基本模塊駐留在module.js如何爲(子)模塊提供node.js和瀏覽器支持

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

附加模塊位於submodule.js

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文件:

Calculator.add(3,4) 
7 
Calculator.sub(3,4) 
-1 
Calculator.mul(3,4) 
12 
Calculator.div(3,4) 
0.75 

這是所有的庫做什麼:

<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中的定義包含了一個根參數,該參數在運行時計算得出:節點的module.exports(如果存在)或this==window(瀏覽器)。代碼如下所示:

(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] } } 

,但我能做些什麼來導入子模塊?

+1

你可能會發現[UMD有趣](https://github.com/umdjs/umd)。 – Andy

+0

@安迪感謝您的鏈接,情況就是如此。無論如何,我想我仍然需要一些關於如何使用它的建議。我想我需要的是'nodeAdapter.js'(最後我需要node.js和requireJS支持) – ducin

回答

0

socket.io也許是很好的例子。你可以從那裏看到結構。