0

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

所以对于文件 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工作。

  1. 如何将 var c 作为参数从 file1 和 file2 传递给公共文件,传递给公共代码(我们称之为file3.js
  2. 我是否只是执行类似<%= javascript_include_tag "file3.js" %>infile2和类似 in 的file1操作来访问公共代码?

最终我希望file1.js看起来像:

$(function () {

   function otherMethods(){
   }
})

看起来file2.js.erb

//other code
4

1 回答 1

2

Rails 使用 sprockets 从主文件加载 javascriptapplication.js文件。如果您查看该文件,您会注意到所有 javascript 文件是如何加载的require_tree .。您可以file3.js像这样复制此技术。

文件 3.js

//=require file1
//=require file2

// your code here...

在您的第一个示例中,a()如果不将其添加到window.

文件1.js

window.a = a;
于 2016-01-04T15:13:58.363 回答