3

我正在构建一个基于 Rails 和客户端 Backbone.js 的 Web 应用程序。为了构建我的 Coffeescript-Code,我使用了 RequireJS 和requirejs-rails。我的每个 Backbone 类都存在于它自己的 RequireJS 模块中。

我最近将很多代码重构为一些基类,并希望以某种方式将它们打包以便能够在其他项目中轻松重用它们(Rails 和/或 Javascript/Coffeescript,即使没有 RequireJS 也可能)并将其作为单独的项目在 GitHub 上共享来自我的 Rails 应用程序。我阅读了有关包的 RequireJS 文档,但没有详细介绍。所以这就是我想做的:

  • 将我的共享代码移动到它自己的包中views/base_collection_viewcommons/views/base_collection_views如此等等
  • 在我的 rails 应用程序中将包包含到我的 requirejs-rails 设置中,并提供一个编译my-commons.js文件以在非 requirejs 设置中使用(我想一旦我弄清楚如何布局包,后者将很容易使用 almond 完成)

在这一点上,一个可重用 RequireJS-package 的完整示例对我有很大帮助,以及如何将其转移到 requirejs-rails 的一些想法。

4

1 回答 1

0

不确定 requirejs-rails,但使用 RequireJS 非常简单。

define(['dep1', 'dep2'] , function ($, otherLibrary) {
    return function () {
        // your module code
    };
});

其中 'dep1' 和 'dep2' 是您的模块所依赖的其他 RequireJS 模块。您可以根据需要依赖尽可能少的或尽可能多的。您传递给实际函数的 var 名称(本例中为 $ 和 otherLibrary)是这些库将在您的模块中分配的名称。

任何使用 RequireJS 的人都可以通过这种方式请求您的模块,具体取决于文件的命名方式和文件所在的文件夹。

例如,如果这个文件在目录中被称为“my-super-lib.js” libs,另一个模块可以直接传递libs/my-super-lib给它的依赖数组,一切都会被设置。

更新:刚刚记得你提到过咖啡脚本。相同的想法,但要清楚:

define ['dep1', 'dep2'], ($, otherLibrary) ->
    () ->
        // your module code

如果你对此感兴趣。;)

于 2013-03-17T22:52:19.543 回答