可以在浏览器和node.js中使用的多文件JavaScript库的devise模式

我写了一个主要用于浏览器的库。 现在我也想用node.js这个库。

我的库包含多个文件,如:

loremIpsum.core.js:

loremIpsum = {}; loremIpsum.a = function(){ //Important code } loremIpsum.b = function(){ //Important code } 

然后还有其他文件依赖loremIpsum因为他们必须使用ab函数。 喜欢:

loremIpsum.dolor.js:

 loremIpsum.dolor = loremIpsum.a(); loremIpsum.dolor.x = function(){ //Important code } loremIpsum.dolor.y = function(){ //Important code } 

我不知道如何使用该代码与node.js。 当我需要这样的文件:(假装我已经分配exports loremIpsum

 var loremIpsum = require("loremIpsum.core.js"); require("loremIpsum.dolor.js"); 

问题是loremIpsum.dolor.js不会工作,因为loremIpsum没有定义。

我已经阅读了一些图书馆,并要求JS,但我不想使用这样的图书馆。 有什么好方法吗?

我find了一个解决scheme。 我不知道是否有什么缺点,但效果很好。

我在博客上写了关于解决scheme的文章: http : //www.zujab.at/2014/09/pattern-for-a-multiple-file-javascript-library-for-the-browser-and-node-js /

主要代码是:

核心文件包含这个方法:

 nowClean.load = function (lang){ if(typeof require === 'undefined'){ throw "nowClean.load may only be used with node.js"; } var path = require('path'); require(__dirname + path.sep + "nowClean." + lang + ".js")(this); }; 

一个“扩展名”文件:

 var nowCleanExt = function (nowClean){ nowClean.css = nowClean.create(function (code){ /* ... */ }); /* ... */ }; if(typeof nowClean !== 'undefined'){ nowCleanExt(nowClean); } if(typeof module !== 'undefined'){ module.exports = nowCleanExt; } 

然后在节点主脚本中:

 var nowClean = require("nowClean"); nowClean.load("css");