使Rails javascript代码干燥

使Rails javascript代码干燥,javascript,ruby-on-rails,dry,gon,Javascript,Ruby On Rails,Dry,Gon,我有两个文件使用一些常见的javascript代码和rails 因此,对于文件1:file1.js如下所示 $(function () { function a() { .... } $('id').on('click', function() { c = gon.obj1 c.doSomething .... }) function otherMethods(){ } }) 对于文件2:fil

我有两个文件使用一些常见的javascript代码和rails

因此,对于文件1:
file1.js
如下所示

$(function () {

   function a() {
    ....
   }

   $('id').on('click', function() {
     c = gon.obj1
     c.doSomething
     ....          
   })

   function otherMethods(){
   }
})
对于文件2:
file2.js.erb

var c = abc
function a() {
  ....
}

$('id').on('click', function() {
  c.doSomething
  ....          
})

//other code
现在我正在考虑通过提取
file3.js
中的公共代码来干燥代码:

function a() {
  ....
}

$('id').on('click', function() {
  c.doSomething
  ....          
})
由于我不熟悉javascript,我不确定如何填充c,使
file1.js
file2.js.erb
都能正常工作

  • 如何将var c作为参数从file1和file2传递到公共文件,再传递到公共代码(我们称之为
    file3.js
  • 我是否只需在
    file2
    中执行类似于
    的操作,以及在
    file1
    中执行类似操作即可访问公共代码
  • 最后,我想让
    file1.js
    看起来像:

    $(function () {
    
       function otherMethods(){
       }
    })
    
    file2.js.erb
    看起来像

    //other code
    

    Rails使用链轮从主
    application.js
    文件加载javascript文件。如果您查看该文件,您会注意到所有javascript文件是如何使用
    require\u树加载的。
    。您可以像这样在
    文件3.js中复制此技术

    file3.js

    //=require file1
    //=require file2
    
    // your code here...
    
    window.a = a;
    
    在第一个示例中,如果不将函数
    a()
    添加到
    窗口
    ,该函数将无法全局使用

    file1.js

    //=require file1
    //=require file2
    
    // your code here...
    
    window.a = a;
    

    但是我如何从file1和file2向file3发送不同的c值呢?同时检查我更新的问题,以便我能更清楚