我有两个文件使用一些常见的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
中的公共代码来编写代码DRY:
function a() {
....
}
$('id').on('click', function() {
c.doSomething
....
})
由于我不熟悉javascript,因此我不确定如何填充c以使file1.js
和file2.js.erb
正常工作。
file3.js
)<%= javascript_include_tag "file3.js" %>
中执行类似file2
的操作,在file1
中类似地访问公共代码吗?最终我希望file1.js
看起来像:
$(function () {
function otherMethods(){
}
})
和file2.js.erb
看起来像
//other code
答案 0 :(得分:2)
Rails使用sprockets从主application.js
文件加载javascript文件。如果您查看该文件,您会注意到所有javascript文件是如何加载require_tree .
的。您可以像file3.js
一样复制此技术。
<强> file3.js 强>
//=require file1
//=require file2
// your code here...
在您的第一个示例中,功能a()
无法在全球范围内使用,而无需将其添加到window
。
<强> file1.js 强>
window.a = a;