Dlaczego Magento 2 używa Knockout zamiast Angular lub React

15

Moje pytanie jest tak proste, jak mówi tytuł. Dlaczego Magento miałby wybierać nokaut zamiast innych ram, takich jak kątowe lub reagować?

Czy jest jakiś konkretny powód?

Czy to także odpowiednia platforma do zadawania tego pytania?

Gagan
źródło
@ Ben-Crook Z niecierpliwością czekamy na Twoje uwagi dotyczące najnowszych wydań i aktualizacji Magento 2 do daty. Czy zespół wydał coś konkretnego?
meDeepakJain

Odpowiedzi:

6

Wydaje mi się, że to ten sam powód, dla którego wybrali LESS zamiast Sass - React nie miał za sobą dużej stabilnej społeczności, kiedy Magento 2 był uruchamiany po raz pierwszy, nie jestem pewien, czy Angular, ale tak czy inaczej słyszałem, że Angular jest dość złożony i moim zdaniem wydawałoby się przesadne dla Magento.

Knockout jest lekki, nie przesadza i spełnia wymagania Magento w tym czasie.

Istnieje wersja Magento oparta na React progresywnej aplikacji internetowej (PWA), którą powinniśmy być w stanie sprawdzić w pewnym momencie tego roku, ale nie ma daty premiery, ponieważ z tego, co widzę, jest na wczesnym etapie koncepcji. Więcej informacji na ten temat można znaleźć tutaj .

Ben Crook
źródło
1
Tak, już ich śledzę. Miałem okazję spotkać Bena na spotkaniu Magento, gdzie on również mówił o PWA. Tak, to jest coś, o czym Magento myśli poważnie.
Gagan
8

Jeśli Magento 2 został zbudowany przy użyciu reakcji, twoje pytanie brzmiałoby: „Dlaczego nie używa Angulara ani KnockoutJs?”.
Jeśli został zbudowany przy użyciu Angulara ... wiesz, dokąd to zmierza.

Nie jestem autorytetem w tym zakresie, ale spekuluję, że była to broń z wyboru, ponieważ zespół był bardziej komfortowy z KOjs i odpowiadał ich potrzebom na podstawie ich mapy drogowej.

Odbyła się podobna debata na temat tego, dlaczego wybrać mniej niż sass (czytaj więcej na ten temat tutaj: https://alankent.me/2016/05/21/magento-2-community-project-moving-from-less-to-sass/ )

Słyszałem także dyskusje o tym, dlaczego ZF, a nie Symfony. To samo ... to kwestia wyboru odpowiednich narzędzi odpowiednich do pracy, narzędzi, z którymi czujesz się komfortowo.

W każdym razie ... nie jesteś zbytnio ograniczony tym wyborem. Możesz wybrać stos technologii, specjalnie dla frontendu, który najbardziej Ci odpowiada.
Może być konieczne włożenie dodatkowego wysiłku, ale zrobisz to tylko raz i będziesz mógł ponownie wykorzystać wyniki w przyszłych projektach.
Na Magento są już projekty, na przykład z reakcją.
Oto niesamowity film z Riccardo Tempesta: https://www.youtube.com/watch?v=ElZ5UtTXpzQ
Również tutaj możesz znaleźć proxy między reagować a magento: https://github.com/McFizh/magento2-react
You można znaleźć jeszcze więcej za pomocą prostego wyszukiwania online.

Marius
źródło
Właściwie dlaczego o to zapytałem, ponieważ interfejs kroku instalacji używa Angulara, więc to był główny powód, dla którego tutaj o to zapytałem. Jeśli używają Angulara na etapie instalacji, mogliby go użyć zamiast wymaganego. Czy to jedyny powód, dla którego nokaut korzysta z Jquery Ajax do wiązania danych, dlaczego wybrali. Mam nadzieję, że rozumiesz co mam na myśli. Nie chodzi tylko o to, by zadać pytanie, ale także o to, że Magento może zmienić różne pliki JS FW do instalacji i inne do pozostałej części obszaru.
Gagan
Instalator to osobna mała aplikacja. Może został zbudowany przez inny zespół.
Marius
7

Nie znam oficjalnego powodu, ale po jego użyciu Knockout wydaje się o wiele lżejszy, wczytuje minimum niezbędnego i odpowiedniego do integracji z szablonami frontonu Magento2 niż cięższy Angular lub React.

Prawdopodobnie ważny był także łatwy sposób, w jaki RequireJS i gulp automatycznie łączą się z nokautem, aby skrócić czas ładowania i rozmiary plików, ale pewna szybkość była bardzo ważna podczas planowania Magento2.

sałata
źródło
Tak, prędkość może być powodem. Infact Magento słynie z „SPEED” :) i jeśli nokaut jest tak szybki, że może zastąpić Angular, ma to sens. Ale jestem całkiem pewien, że Angular jest szybszy, jednak nie jestem w 100% pewien.
Gagan
3

Myślę, że lepszym pytaniem jest, dlaczego m2 jest tak mocno sprzężone z frontendem?

Wiele frameworków JS istniało już w momencie wydania M2.

M2 byłby o wiele bardziej popularny, gdyby ludzie:

  • miał wybór preprocesorów, programów pakujących, kompilatorów, less, sass i in
  • miał swobodę wyboru frameworka, który ma być użyty, jak kątowy 1-5-n, reagować, vue i in
  • miał swobodę korzystania z dowolnych frameworków css, bootstrap 1-4, Foundation, grid i in

Zasadniczo dużo ET ALS. Ale nie, zmuszają cię do korzystania z ich przeprojektowanej nakładki, potworności opartej na XML.

Dobrą rzeczą jest to, że mają interfejs API REST, dzięki czemu można bezgłowo budować progresywną aplikację internetową.

Miguel Felipe Guillen Calo
źródło
Znalazłem ostatnie spotkanie magento, które, jak sądzę, w Holandii koncentruje się na PWA i React, więc myślę, że właśnie tam wskazuje @ ben-crook
Gagan
1
@Gagandeep jest również ten github.com/DivanteLtd/vue-storefront . Osobiście lubię frameworki, które nie są zbytnio zaprojektowane, i dają ci więcej swobody w robieniu rzeczy. Przeważnie zapewniają usługi, modele i pomocników. TLDR; ramy agnostyczne. Mój osobisty wybór stosu to: Angular5 (n), bootstrap 4, wraz z sass, maszynopisem i webpack.
Miguel Felipe Guillen Calo
0

Proszę, nie martw się o to. Jak zapowiedział Anton Kril na MageConf2017 - od wersji 2.4 frontend Magento2 będzie miał React. A także, oczywiście, Redux i GraphQL. Ale ... Knockout.js pozostanie.

Stepan Furman
źródło
To jest niepoprawne. Magento 2.4 nie będzie korzystało z React, Magento 2 nadal będzie używać tego samego stosu (w tym Knockout). Mówisz o PWA Studio , na które Magento nie ogłosiło daty.
Ben Crook
Wciąż zmuszają cię do użycia określonego stosu. Co za porażka.
Miguel Felipe Guillen Calo
@MiguelFelipeGuillenCalo Nie, nie bardzo. Idea PWA Studio polega na tym, że podłącza się do nowego API GraphQL, który pozwoli ci korzystać z dowolnej technologii frontendowej, której chcesz użyć, i po prostu pobierzesz z serwera, czego potrzebujesz. Obecny interfejs API REST sprawia, że ​​jest to trudne (ponieważ wykorzystuje inny webapiobszar), nowy interfejs API jest do tego odpowiedni. PWA Studio to tylko sposób na zapewnienie bazy tym, którzy jej potrzebują.
Jisse Reitsma
@JisseReitsma community.magento.com/t5/Magento-DevBlog/... to wyraźnie określa, jakiego stosu użyje. Gdy rozwiną funkcje, prawdopodobnie pozostaną na tym stosie. Dlatego zmuszają cię do użycia określonego stosu.
Miguel Felipe Guillen Calo
@MiguelFelipeGuillenCalo Wiem. Ale to wcale NIE oznacza, że ​​jedynym stosem, który możesz sam stworzyć, jest ten, który Magento buduje. Tak, jeśli chcesz mieć zerową pracę i jeśli chcesz tylko korzystać z tego, co Magento dla Ciebie buduje, to ich stos jest tym, którego możesz użyć. Chodzi jednak o to, że „wciąż zmuszają cię do użycia określonego stosu”, co nie jest prawdą. Budują własny stos, ale nie zmuszają cię do korzystania z niego. Zamiast tego budują ten stos na interfejsie API GraphQL i umożliwiają budowanie własnego stosu na podstawie tego interfejsu API. Znacznie większa elastyczność, dzięki czemu masz elastyczność, którą chcesz.
Jisse Reitsma