Rails 3.2:如何将大型javascript文件拆分为多个;partials";?

Rails 3.2:如何将大型javascript文件拆分为多个;partials";?,javascript,ruby-on-rails,erb,pipeline,partials,Javascript,Ruby On Rails,Erb,Pipeline,Partials,使用Rails资产管道,我想知道如何将一个大型javascript文件拆分为许多不同的部分 例如: YUI().use('app', function(Y) { //*=require sub/file_a.js //*=require sub/file_b.js //*=require sub/file_c.js //*=require sub/file_d.js }); // this obviously is not the answer & doe

使用Rails资产管道,我想知道如何将一个大型javascript文件拆分为许多不同的部分

例如:

YUI().use('app', function(Y) {
    //*=require sub/file_a.js
    //*=require sub/file_b.js
    //*=require sub/file_c.js
    //*=require sub/file_d.js
});
// this obviously is not the answer & does not work.
这只会让开发者受益,因为他们有一个更干净的JS文件,而不是一个充满YUI视图和模型的巨大应用程序

我已经尝试使用ERB来包含一个文件,但没有成功。渲染在资产管道中不可用,因此这也是一个半身像

有什么想法吗


最终结果仍将由rake compile:assets:all编译——因此这将仅用于开发环境。

根据分区的内容,您可以将它们包含的对象包装在变量中,这样您就可以执行以下操作:

//*=require sub/file_a.js
//*=require sub/file_b.js
//*=require sub/file_c.js
//*=require sub/file_d.js

YUI().use('app', function(Y) {file_a + file_b ...})

不确定是否适合您的情况,不知道部分内容和YUI()的参数类型。use takes…

charlysisto的想法是正确的

答案是使用链轮和YUI模块作为视图/模型

//*=require_self
//*=require view/file_a.js
//*=require model/file_a.js
//*=require view/file_b.js
//*=require model/file_b.js
YUI().use('app','app-view-file-a','app-view-file-b','app-model-file-a','app-model-file-b', function(Y) {
    Y.FileApp = Y.Base.create('fileApp', Y.App, [], {
        views: {
            fileA: {type: 'FileAView'},
            fileB: {type: 'FileBView'}
        }
    }, {
        ATTRS: {
            root: {value: '/'}
        }
    });

    var app = new Y.FileApp({
        contentSelector: '#pjax-content',
        serverRouting: true,
        transitions: true,
        container: '#file-app',
        viewContainer: '#file-app-views'
    }).render().showContent('#pjax-content', {view: 'FileAView'});
});
在视图和模型文件中,您只需像创建普通YUI3模块一样创建它们:

YUI.add('app-view-file-a', function(Y) {
  Y.namespace('FileAView');
  FileAView = Y.Base.create('fileAView', Y.View, [], {
      template: Y.Handlebars.compile(Y.one('#file-a-template').getHTML())
  });
  Y.FileAView = FileAView;
},'0.1.0',{requires:['node','handlebars'], skinnable:false});
一开始,我实际上让File.read在JS中工作。但是这种方法看起来非常混乱,在开发领域中效果不太好。Rails从来不知道重新编译“父”js文件,因为时间戳没有改变。如果您没有使用YUI,File.read解决方案可能适合您,但我会寻找不同的解决方案。每次我对子模块进行更改时,都必须输入新行并删除,这非常烦人