Я создаю веб-приложение, и я узнаю и люблю Browserify. Меня все-таки раздражало.
Я использую некоторые функции ES6, которые необходимо подстраивать/полифорировать в старых браузерах, таких как es6-promise
и назначение object-assign
(пакеты на npm).
В настоящее время я просто загружаю их в каждый модуль, который им нужен:
var assign = require('object-assign');
var Promise = require('es6-promise');
Я знаю, что это определенно не путь. Трудно поддерживать, и я бы хотел использовать функции ES6 прозрачно, вместо того, чтобы "зависеть" от них по требованию.
Какой окончательный способ загрузки таких прокладок? Я видел несколько примеров в Интернете, но они все разные. Я мог бы:
-
загружать их извне:
var bundle = browserify(); bundle.require('s6-promise'); // or should I use it bundle.add to make sure the code is runned???
Проблема, которую я имею здесь, заключается в том, что я не знаю, в каком порядке будут загружены модули в браузере. Таким образом, полифорирование, возможно, еще не произошло на сайтах-узлах, которым нужна полизаполненная функциональность.
У этого есть дополнительный недостаток, который код бэкэнд не может извлечь выгоду из этих полинаполнений (если только я чего-то не хватает).
-
используйте
browserify-shim
или что-то подобное. Я действительно не вижу, как это будет работать для функций ES6. -
вручную настроить полизаполнение:
Object.assign = require('object-assign');