Как кто-то, кто пытался найти способ помочь разработчикам контента, развивает и поддерживает большие веб-сайты, создавая (HTML) компоненты в течение многих лет, я очень рад видеть, что веб-компоненты набирают силу в w3c, google и mozilla. Но мне кажется, что нет никаких мер против разрастания библиотеки JavaScript в спецификациях.
Скажем, что я разрабатываю компонент A
, который имеет зависимость для underscore.js
и хочет использовать компоненты B
и C
, которые имеют зависимости от lodash.js
версии 1. * и т.д.
Я не вижу возможности указывать зависимости и версии библиотек. Это может привести к огромному разрастанию библиотеки, когда мы говорим о веб-сайтах с несколькими командами и держателями акций.
Текущее решение - стандартизировать опционную клиентскую инфраструктуру для всего веб-сайта во всем мире. Это сложно, если вы вложили значительные ресурсы в разные серверные среды, такие как LifeRay
(java), EpiServer
(.net), Django
(python) и т.д., Каждый из которых имеет предпочтительные клиентские библиотеки.
Я вижу веб-компоненты как средние, чтобы отделить серверные структуры от клиентского кода, но упущение обработки зависимостей на стороне клиента вызывает беспокойство.
Является ли это спецификацией, и я пропустил ее, или существует стратегия для устранения этой проблемы, о которой я не знаю?
[ОТОБРАЖАЕМЫЕ БИБЛИОТЕКИ ПРОСТО ПРИМЕРЫ. ВОПРОС АГНОСТИЧЕСКИ В РАМКАХ, БИБЛИОТЕКЕ И СЕРВЕРНО-БОКОВОМ ЯЗЫКЕ]
UPDATE Спасибо всем за ответ. Я удивлен, что никто не упоминает X-Tag Mozilla или Google Polymer, который в последнее время был всего лишь шумихой. Я полностью покупаю идею теневого DOM, облачных стилей, пользовательских элементов и т.д., Но нигде я не вижу упоминаний о том, как обращаться с зависимостями JavaScript. Поскольку @Daniel-Baulig правильно пишет HTML Imports, не упоминает JavaScript вообще. Я признаю, что этот вопрос почти невозможно ответить. Тем не менее, я думаю, что @Daniel-Bailig подошел ближе, когда он упомянул модули ES6. Я лично считаю, что мы найдем устойчивое решение где-то между модулями ES6 и require.js.