我一直习惯使用的编译文件,但自从我开始我的第一个项目的NodeJS我开始使用 browserify。使用browerify和其他类似的库,您的代码就是您的构建文件。我利用了可以在两者上运行的客户端和服务器库的优势,但它也可以与纯客户端代码一起工作。综上所述,browserify为您提供了在节点中编写代码的所有好处(没有用于避免全局变量,npm,简单要求的匿名函数),它使您可以使用一条命令将该代码打包在客户端上运行,并且仅加载一个文件。
借助browserify,您可以执行以下操作(名为app.js):
var MyLib = require('../myLib');
if(typeof window !== 'undefined') {
window.MyLib = MyLib;
window._ = require('underscore');
window.$ = require('$');
window.MyLib.myCan = require('./3rdParty/can/can');
}
browserify app.js> client.js
会产生类似:
[function(require,module,exports){
window.MyLib = //MyLib code
},
function(require,module,exports){
window._ = //_ code
},
function(require,module,exports){
window.$ = //$ code
},
function(require,module,exports){
window.MyLib.myCan = //can code
}
您将定义的文件可能包含所有第3方库,并且不会与使用该文件的任何开发人员冲突。
-编辑以回应评论(以及对该问题的完整遗漏)
我猜这将取决于您的依赖关系以及您要花费多少时间来确保它们在所有版本和库中都能正常工作。如果您的依赖关系很普遍,并且版本之间使用相同的api,则可以采用主干路线,只要求用户使用$和_。我建议将更晦涩的libs作为捆绑文件的一部分。选件也不必切割和干燥。您可以提供预构建的或构建您自己的软件包。