Как получить доступ к встроенному классу ES6 во встроенном <script>

1

Я использую Webpack для перевода моих классов ES6. Скажем, есть класс Service внутри пакета, который может быть импортирован другими связанными скриптами.

class Service {
    constructor() {
        //
    }

    someMethod(data) {
        //
    }
}

export default Service;

Теперь у меня есть крошечный встроенный скрипт в теле HTML (псевдо-код ниже), который должен вызвать метод в этом классе Service с данными, которые вставлены на сервер, используя механизм шаблонов, такой как Twig или Blade. Конечно, создание нового объекта Service не будет работать...

<body>
    ...
    <script>
        var data = {{ $json_server_data }}; 

        var service = new Service;

        Service.someMethod(data);
    </script>
</body>

Мне бы очень хотелось, чтобы данные сервера были доступны в виде строки, поскольку это предотвращает дополнительный асинхронный вызов. И загрязнение пространства имен Service классом Service похоже на отбрасывание преимуществ загрузчика классов...

Как бы вы справились с этим? Разумеется, также приветствуются предложения о выборе другого подхода.

Теги:
ecmascript-6

1 ответ

2
Лучший ответ

Класс Service не будет доступен за пределами встроенного javascript. Поэтому вы, вероятно, хотите сделать его глобальным, и вы можете сделать это, связав его с объектом окна.

// Service.js
class Service {
    constructor() {
        //
    }

    someMethod(data) {
        //
    }
}

window.Service = Service;

export default Service;


// usage
let myService = new Service();
  • 0
    Я обновил свой OP, чтобы включить код класса обслуживания. Обратите внимание, что я экспортирую класс в отличие от вашего фрагмента. При запросе встроенного объекта Service я получаю сообщение об ошибке «объект не определен».
  • 0
    @Propaganistas Смотрите мой обновленный ответ.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню