Почему Magento 2 использует Knockout вместо Angular или React


14

Мой вопрос так же прост, как и в названии. Почему Magento выбирает нокаут вместо других каркасов, таких как угловые или реагирующие?

Есть ли конкретная причина?

И это правильная платформа, чтобы задать этот вопрос?

Ответы:


6

Я полагаю, что это та же самая причина, по которой они выбрали LESS вместо Sass - у React не было большого стабильного сообщества, когда Magento 2 был впервые запущен, я не уверен, что Angular сделал, но в любом случае я слышал, что Angular довольно сложный и Казалось бы излишним для Magento на мой взгляд.

Нокаут легкий, не излишний и соответствует требованиям, которые были у Magento в то время.

Существует версия Magento для прогрессивного веб-приложения на основе React (PWA), которую мы сможем оформить в какой-то момент в этом году, но дата выпуска пока не определена, поскольку, как я вижу, она находится на ранней стадии разработки. Информацию об этом смотрите здесь .


1
Да, уже следуя за ними. У меня была возможность встретиться с Беном на Magento, где он также говорил о PWA. Да, это то, к чему серьезно относится Magento.
Гаган

8

Если бы 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 можно найти еще больше с помощью простого поиска в Интернете.


На самом деле, почему я спросил это, потому что интерфейс шага установки использует Angular, так что это было основной причиной, по которой я спросил об этом здесь. Если они используют Angular на этапе установки, они могли бы использовать его вместо require. Это единственная причина, по которой нокаут использует Jquery Ajax для привязки данных, почему они выбрали. Я надеюсь, вы понимаете, о чем я. Дело не только в необходимости задать вопрос, но и в необходимости magento менять разные js fw для установки и разные для остальной части области.
Гаган

Установщик - это отдельное небольшое приложение. Возможно это было построено другой командой.
Мариус

7

Не знаю официальной причины, но, используя его, Knockout кажется намного более легким, загружает минимально необходимое и подходящее для интеграции с шаблонами внешнего интерфейса Magento2, чем более тяжелый Angular или React.

Также, наверное, был важен простой способ, которым RequireJS и gulp автоматически смешивались с нокаутом, чтобы сократить время загрузки и размеры файлов, но я предполагаю, что при планировании Magento2 основное внимание было уделено определенной скорости внешнего интерфейса.


Да, скорость может быть причиной. Infact Magento известен своей «СКОРОСТЬЮ» :), и если нокаут настолько быстр, что он может заменить Angular, это имеет смысл. Но я уверен, что Angular быстрее, но я не уверен на 100%.
Гаган

3

Я думаю, что лучший вопрос, почему m2 так сильно связан с внешним интерфейсом?

Многие JS-фреймворки уже появились, когда вышел M2.

M2 был бы намного популярнее, если бы люди:

  • был выбор препроцессоров, компоновщиков, компиляторов, менее, sass и др.
  • имел свободу выбора, какую основу использовать, например angular1-5-n, реагировать, vue и др.
  • был свободен в использовании когда-либо фреймворков css, bootstrap 1-4, foundation, grid и др.

В основном много ET ALS. Но нет, они заставляют вас использовать их сверхпроектированный интерфейс, управляемый XML-уродством.

Хорошо, что у них есть REST API, так что вы можете без головы создавать прогрессивное веб-приложение.


Я обнаружил, что последнее знакомство с magento в NL сфокусировано на PWA и React, так что я думаю, что именно на это указывает @ ben-crook
Gagan

1
@Gagandeep также есть этот github.com/DivanteLtd/vue-storefront . Мне лично нравятся фреймворки, которые не слишком спроектированы и дают вам больше свободы в том, как что-то делать. В основном просто предоставляем услуги, модели и помощников. TLDR; агностические рамки. Мой личный выбор стека будет: Angular5 (n), bootstrap 4, вместе с sass, typcript и webpack.
Мигель Фелипе Гильен Кало

0

Пожалуйста, не беспокойся об этом. Как объявил Антон Криль на MageConf2017, начиная с версии 2.4, фронтенд Magento2 будет иметь React. А также, конечно, Redux и GraphQL. Но ... Knockout.js останется.


Это неверно Magento 2.4 не будет использовать React, Magento 2 будет по-прежнему использовать тот же стек (включая Knockout). То, что вы имеете в виду, - это PWA Studio , для которой Magento не объявила дату.
Бен Крук

Они по-прежнему заставляют вас использовать определенный стек. Что за облом
Мигель Фелипе Гильен Кало

@MiguelFelipeGuillenCalo Нет, не совсем. Идея PWA Studio заключается в том, что она подключается к новому API GraphQL, который позволит вам использовать любую технологию веб-интерфейса, которую вы захотите использовать, и просто получить с сервера то, что вам нужно. В настоящее время REST API делает это трудно (так как он использует другую webapiобласть), новый API приспособлен для этого. PWA Studio - это просто способ предоставить базу тем, кто в ней нуждается.
Джисс Рейтсма

@JisseReitsma community.magento.com/t5/Magento-DevBlog/… здесь четко указано, какой стек он будет использовать. Когда они расширяют возможности, он, вероятно, останется в этом стеке. Следовательно, они заставляют вас использовать определенный стек.
Мигель Фелипе Гильен Кало

@MiguelFelipeGuillenCalo Я знаю. Но это НЕ означает, что единственный стек, который вы можете создать самостоятельно, это тот, который создает Magento. Да, если вы хотите, чтобы у вас не было работы, и если вы хотите использовать только то, что Magento собирает для вас, то их стек - тот, который нужно использовать. Однако ваша точка зрения такова, что «они все еще заставляют вас использовать определенный стек», и это не так. Они строят свой собственный стек, но не заставляют вас его использовать. Вместо этого они строят этот стек поверх API GraphQL и позволяют вам создавать свой собственный стек поверх этого API. Гораздо больше гибкости, так что у вас есть гибкость, которую вы хотите.
Джисс Рейтсма
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.