RequireJS - 与骨干相关的软件包,可在其他Rails / JS应用程序中重用

时间:2012-05-12 22:44:50

标签: javascript backbone.js coffeescript requirejs requirejs-rails

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

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

  • 将我的共享代码移到自己的包中,因此views/base_collection_view变为commons/views/base_collection_views,依此类推
  • 在我的rails应用程序中将软件包包含到我的requirejs-rails设置中,并提供一个已编译的my-commons.js文件,以便在非requirejs设置中使用(我想,一旦我弄清楚,后者将很容易使用杏仁完成如何布局包)

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

1 个答案:

答案 0 :(得分:0)

不确定requirejs-rails,但使用RequireJS非常容易。

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

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

使用RequireJS的任何人都可以根据文件的命名方式及其所在的文件夹,以这种方式要求您的模块。

例如,如果此文件在libs目录中名为“my-super-lib.js”,则另一个模块可以将libs/my-super-lib传递给其依赖关系数组,所有内容都将被设置

更新:记得你提到过coffeescript。同样的想法,但要明确:

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

如果你进入那个。 ;)