Rails: доступ к методам модуля JS из файлов, обслуживаемых веб-упаковщиком - PullRequest
0 голосов
/ 18 мая 2018

Контекст

Я пытаюсь переместить ресурсы в нашем приложении в веб-пакет, используя гем Webpacker.Приложение очень большое, поэтому мне нужно сделать это частично.

Что до сих пор ...

Мне удалось вызвать скрипт, используя javascript_pack_tag

Iэкспортировать супер простой модуль:

# javascript/src/javascript/test.js'
const Direction = {
  log_to_console: function(){
    console.log('test');
  }
};
export default Direction;

Затем импортировать его в точку входа приложения

# javascript/packs/application.js
import Test from '../src/javascript/test.js'
Test.log_to_console();

Наконец, отобразить его в макете:

# app/views/application.slim
= javascript_include_tag 'application'

Результатэто: «Тестовая» строка, видимая в консоли браузера.

Проблема

В настоящее время во всем приложении мы используем Модули в представлениях, подобных этому:

# app/views/assets/javascripts/test.coffee
log_to_console = ->
  console.log('test');
@Test = { log_to_console }

# app/views/some/template.slim
javascript:
  Test.log_to_console()

Но послеперемещение модуля в веб-пакет Я больше не могу получить доступ к модулю Test.

Поэтому мой вопрос:

Как настроить webpacker gem ИЛИ изменить код, указанный выше, чтобы сделать log_to_console() метод доступен в представлении / браузер инспектор?

В идеале было бы, если бы мы могли также обращаться к ним в старых файлах javascript, скомпилированных с помощью звездочек.

1 Ответ

0 голосов
/ 21 мая 2018

Я нашел это решение на данный момент.Может быть полезно всем, кто сталкивается с этой проблемой.

Если кто-то найдет лучшее решение, я был бы рад увидеть его здесь;).

На данный момент все наши модули / библиотеки, необходимые длябыть видимым в представлениях / других кофейных файлах, я просто установил глобально доступным через объект window.

import Foo from '../src/javascript/foo.js
window.Foo = Foo

Я знаю, что это уродливый анти-шаблон, но работает как временное решение, пока мы не обновим наши скриптыбольше похоже на независимые пакеты.

...