Ответы:
Я полагаю, что это та же самая причина, по которой они выбрали LESS вместо Sass - у React не было большого стабильного сообщества, когда Magento 2 был впервые запущен, я не уверен, что Angular сделал, но в любом случае я слышал, что Angular довольно сложный и Казалось бы излишним для Magento на мой взгляд.
Нокаут легкий, не излишний и соответствует требованиям, которые были у Magento в то время.
Существует версия Magento для прогрессивного веб-приложения на основе React (PWA), которую мы сможем оформить в какой-то момент в этом году, но дата выпуска пока не определена, поскольку, как я вижу, она находится на ранней стадии разработки. Информацию об этом смотрите здесь .
Если бы Magento 2 был собран с использованием реакции, ваш вопрос был бы «Почему он не использует Angular или KnockoutJs?».
Если он был построен с использованием Angular .... вы знаете, куда это идет.
Я не авторитет в этом, но я полагаю, что это было предпочтительное оружие, потому что команде было более комфортно с KOjs, и она отвечала их потребностям, основываясь на их дорожной карте.
Были споры, подобные тому, почему стоит выбирать меньше, чем sass (подробнее об этом здесь: https://alankent.me/2016/05/21/magento-2-community-project-moving-from-less-to-sass/ )
Я также слышал дискуссии о том, почему ZF, а не Symfony. То же самое ... это вопрос выбора правильных инструментов, подходящих для работы, инструментов, с которыми вам удобно.
Во всяком случае ... вы не ограничены этим выбором. Вы можете выбрать технический стек, специально для внешнего интерфейса, который подходит вам лучше всего.
Возможно, вам придется приложить дополнительные усилия, но вы сделаете это только один раз и сможете повторно использовать результаты в будущих проектах.
Уже есть проекты на Magento, например, «Реагируй».
Вот отличное видео от Риккардо Темпеста: https://www.youtube.com/watch?v=ElZ5UtTXpzQ
Также вы можете найти здесь прокси между реакцией и magento: https://github.com/McFizh/magento2-react
You можно найти еще больше с помощью простого поиска в Интернете.
Не знаю официальной причины, но, используя его, Knockout кажется намного более легким, загружает минимально необходимое и подходящее для интеграции с шаблонами внешнего интерфейса Magento2, чем более тяжелый Angular или React.
Также, наверное, был важен простой способ, которым RequireJS и gulp автоматически смешивались с нокаутом, чтобы сократить время загрузки и размеры файлов, но я предполагаю, что при планировании Magento2 основное внимание было уделено определенной скорости внешнего интерфейса.
Я думаю, что лучший вопрос, почему m2 так сильно связан с внешним интерфейсом?
Многие JS-фреймворки уже появились, когда вышел M2.
M2 был бы намного популярнее, если бы люди:
В основном много ET ALS. Но нет, они заставляют вас использовать их сверхпроектированный интерфейс, управляемый XML-уродством.
Хорошо, что у них есть REST API, так что вы можете без головы создавать прогрессивное веб-приложение.
Пожалуйста, не беспокойся об этом. Как объявил Антон Криль на MageConf2017, начиная с версии 2.4, фронтенд Magento2 будет иметь React. А также, конечно, Redux и GraphQL. Но ... Knockout.js останется.
webapi
область), новый API приспособлен для этого. PWA Studio - это просто способ предоставить базу тем, кто в ней нуждается.