繁体   English   中英

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

[英]RequireJS - Package backbone-related modules for re-use in other Rails/JS applications

我正在构建一个基于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包的完整示例在这一点上真的对我有很大帮助,还有一些想法如何将它转移到requirejs-rails。

不确定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

如果你进入那个。 ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM