2014-10-06 5 views
2

Я понимаю, что это еще не реализовано и так гипотетично.Как управлять модулями Harmony ECMAScript 6 в тегах HTML-скриптов?

Когда модули ES6 Harmony в конечном итоге реализованы в современных браузерах, как синтаксис и реализация обрабатывают встроенный JavaScript? Для сравнения я могу представить концептуальное различие в том, что каждый файл считается модулем , который дает идею о том, что в HTML-документе будет использоваться тег <script src="..."> для каждого отдельного модуля.

Однако это кажется странным в браузере, так как это означает, что если у вас есть 50 модулей, у вас есть 50 клиентских/серверных соединений. Другая проблема возникнет, если вы объедините файлы или, возможно, встроенные несколько модулей в тег <script>...</script>.

В конечном счете это будет приравнивать к глобальному/имени Разнос проблемы:

<script> 
    var Foo = {}; 
    var Baz = 1; // Local or Global? 
    export default Foo; 

    import Foo in 'foo'; 
    var Bar = {}; 
    var Baz = 2; // Local or Global? 
    export default Bar; 
</script> 

В CommonJS -> транс ворса или AMD все завернуты в затворе. Ведущее меня верить, что когда ES6 выходит мы все равно придется обернуть наш код:

<script> 
    (function() { 
    var Foo = {}; 
    var Baz = 1; // Definitely Local now! 
    export default Foo; 
    })(); 

    (function() { 
    import Foo in 'foo'; 
    var Bar = {}; 
    var Baz = 2; // Definitely Local now! 
    export default Bar; 
    })(); 
</script> 

Как будущие реализации модулей Harmony ES6 обрабатывать модель плоского зависимостей браузера сцепленных источников?

+0

Afair, это только о том, чтобы обсудить среди разработчиков HTML5. – Bergi

ответ

3

Модули can be concatenated together без проблем с синтаксисом module SomeName { /* module contents here */ } .

EDIT: Синтаксис блока модулей был исключен из спецификации. Выводы комитета, похоже, таковы, что concatenation is a hack to work around a limitation of HTTP 1. Конечным решением является наличие сервера и клиента с поддержкой HTTP 2, чтобы клиент мог мультиплексировать свои запросы, и сервер может перенаправить дополнительные ресурсы клиенту (спасибо Andreas!)

Что касается работы с семантикой модуля в браузере, a separate <module> tag был введен для создания отдельных модулей на странице. (Поскольку модули могут быть решены асинхронно, они не соответствуют семантике inline script элементов, следовательно, потребность в новом теге).

Смотрите также:

+0

Спасибо. Я не понял ключевое слово 'module'. Cheers – Sukima

+0

Это уже невозможно, объявления модулей уже давно удалены из предложения модулей. –

+0

(Кроме того, ссылка ES6, на которую вы ссылаетесь, пока еще не окончательна.) –

 Смежные вопросы

  • Нет связанных вопросов^_^