如何在浏览器中要求CommonJS模块?

tra*_*boy 59 javascript commonjs node.js

在浏览器中加载CommonJS模块作为客户端javascript的最佳方法是什么?

CommonJS模块将其功能放在module.exports命名空间中,通常包含require(pathToModule)在服务器端脚本中.在客户端加载它们不能以相同的方式工作(需要更换,需要考虑异步等)

我找到了模块加载器和其他解决方案:Browserify,RequireJS,yabble等,或者简单地改变模块的方法.您认为最好的方式和原因是什么?

gil*_*ert 46

我过去曾广泛使用过requirejs(2010年在BBC iPlayer上实现),效果很好.它可以处理CommonJS模块,但它需要一个额外的包装器,我觉得很烦人.如果你想在node.js中使用那些模块,你也需要在服务器端使用requirejs,我不喜欢这样做,因为它不是惯用的node.js JavaScript.

我已经使用webmakebrowserify在过去一年中的几个项目.最初,编译步骤让我失望,但今年广泛使用它,我可以说这不是问题.

Browserify包含一个手表功能,非常有效.Webmake可以连接到观察者(例如观察者),或者,您可以使用webmake-middleware模块,它可以用作快速或连接应用程序的一部分.这样做的好处是,不是在每次保存时编译JavaScript,而是仅在实际请求时编译它. Connect使得创建服务器(也是静态的)变得微不足道,所以如果你想在没有后端的情况下开发前端,你可以创建一个小的静态node.js服务器来提供你的文件.

额外奖励:不需要构建脚本,因为您始终处理构建的代码.


Bru*_*ser 18

以下是您在GitHub上按各自受欢迎程度(观察人数)排序的当前选项的完整列表:

在浏览器中使用require()的选项(Wayback Machine archive)

  • 只允许链接答案,因为他们可能,呃......将来休息(真的??).请在答案*中填写相关信息*. (2认同)

Kev*_*gue 12

Browserify怎么样?它的描述是:"浏览器端require()为您的节点模块和npm包"听起来你需要的.