我正在研究一种使用允许需要 Javascript 模块的 CommonJS 结构由 BackboneJS 应用程序编写的方法。然后这个应用程序可以在客户端或服务器端使用 node.js 工作。

我已经研究过 requirejs 和其他类似的选项,但你必须以一种特定的方式编写应用程序,在我看来这看起来真的很糟糕。

我还查看了 browserifywebmake,它们接收您的代码和任何所需的模块,并将它们组合成一个带有缺失(需要)方法的 js 文件。这是一个聪明的主意,但让客户端的代码有点困惑。

有没有这样的东西可以通过以commonJS格式编写的代码,编译所有与浏览器兼容的必需模块并吐出一个可以在浏览器中使用的Javascript文件(或几个)而不必担心关于缺少 require 方法?更好的是为 Backbone 应用程序量身定制的解决方案。

最佳答案

在浏览器中使用 CommonJS 结构化模块有多种选择:

  • RequireJS 2.0.2 支持配置选项 cjsTranslate 。在您的 r.js 优化器配置中将其设置为 cjsTranslate: true 将使用 define 样板包装所有看起来是 CommonJS 格式的包含模块。查看详细信息 here
  • Cajon 是一个新的模块加载器,构建在 RequireJS 之上,支持 CommonJS 格式的模块(也由 RequireJS 作者 @jrburke 编写)。
  • Volo 依赖管理工具(同样由 @jrburke 提供)能够包含 cjs 模块并将其转换为 amd 模块。这对您来说可能不是一个很好的选择,但为了完整性值得包括在内。
  • 您可以编写一个服务器组件,自动将您的代码包装在 AMD define 样板中。我相信这是他们在 SoundCloud 采取的方法 - 请参阅 this blog post

  • 2014 年 8 月 29 日编辑: 目前的最佳实践可以说是 Browserify 与生成的源映射,以便于客户端调试。

    关于javascript - Backbone.js 应用程序使用 CommonJS 结构来处理 node.js 和客户端,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11725834/

    10-10 08:58