Создание JavaScript-кода Rails СУХОЙ

У меня есть два файла, которые используют некоторый общий код 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 в качестве аргумента в общий файл из file 1 и file2, в общий код (давайте назовем его file3.js)
  2. Я просто делаю что-то вроде <%= javascript_include_tag "file3.js" %> в file2и аналогично в file1 получить доступ к общему коду?

В конце концов я хочу иметь file1.js выглядеть как:

$(function () {

   function otherMethods(){
   }
})

а также file2.js.erb выглядеть как

//other code

1 ответ

Rails использует звездочки для загрузки файлов JavaScript с основного application.js файл. Если вы посмотрите на этот файл, вы увидите, как все файлы javascript загружаются require_tree ., Вы можете скопировать эту технику в свой file3.js вот так.

file3.js

//=require file1
//=require file2

// your code here...

В вашем первом примере функция a() не будет доступен во всем мире без добавления его в window,

file1.js

window.a = a;
Другие вопросы по тегам