Warum Magento 2 Knockout anstelle von Angular oder React verwendet

14

Meine Frage ist so einfach wie es im Titel steht. Warum sollte Magento Knockout anstelle von anderen Frameworks wie Angular oder Reagieren wählen?

Gibt es einen bestimmten Grund?

Ist dies auch die richtige Plattform, um diese Frage zu stellen?

Gagan
quelle

Antworten:

6

Ich glaube, es ist der gleiche Grund, warum sie sich für LESS entschieden haben, anstatt für Sass - React. Als Magento 2 zum ersten Mal gestartet wurde, gab es keine große stabile Community dahinter scheint für Magento meiner Meinung nach übertrieben.

Knockout ist leicht, nicht übertrieben und erfüllt die Anforderungen, die Magento zu der Zeit hatte.

Es gibt eine React-basierte Progressive Web App (PWA) -Version von Magento, die wir in diesem Jahr irgendwann auschecken können sollten, aber es gibt keinen Veröffentlichungstermin, da sie sich nach meinem Kenntnisstand in einer frühen Konzeptphase befindet. Informationen dazu finden Sie hier .

Ben Crook
quelle
1
Ja, ich folge ihnen schon. Ich hatte die Gelegenheit, Ben beim Magento-Treffen zu treffen, wo er auch über PWA sprach. Ja, das ist etwas, was Magento ernst meint.
Gagan
8

Wenn Magento 2 mit react erstellt wurde, lautet Ihre Frage "Warum werden Angular- oder KnockoutJs nicht verwendet?".
Wenn es mit Angular erstellt wurde ... wissen Sie, wohin das führt.

Ich bin keine Autorität in diesem Bereich, aber ich spekuliere, dass es die Waffe der Wahl war, da das Team sich mit KOjs wohler fühlte und es ihren Bedürfnissen basierend auf ihrer Roadmap entsprach.

Es gab eine ähnliche Debatte, warum wählen weniger über Sass (lesen Sie mehr darüber hier: https://alankent.me/2016/05/21/magento-2-community-project-moving-from-less-to-sass/ )

Ich hörte auch Diskussionen darüber, warum ZF und nicht Symfony. Das Gleiche gilt für die Auswahl der richtigen Werkzeuge, die für den jeweiligen Job geeignet sind und mit denen Sie vertraut sind.

Wie auch immer ... Sie sind bei dieser Wahl nicht zu sehr eingeschränkt. Sie können den Tech-Stack speziell für das Frontend auswählen, der am besten zu Ihnen passt.
Möglicherweise müssen Sie zusätzliche Anstrengungen unternehmen, aber Sie werden dies nur einmal tun und können die Ergebnisse in zukünftigen Projekten wiederverwenden.
Es gibt bereits Projekte auf Magento, die zum Beispiel reagieren.
Hier ist ein großartiges Video von Riccardo Tempesta: https://www.youtube.com/watch?v=ElZ5UtTXpzQ
Auch hier finden Sie einen Proxy zwischen React und Magento: https://github.com/McFizh/magento2-react
You Mit einer einfachen Online-Suche können Sie noch mehr finden.

Marius
quelle
Eigentlich habe ich darum gebeten, weil die Schnittstelle für den Installationsschritt Angular verwendet. Das war der Hauptgrund, warum ich hier danach gefragt habe. Wenn sie Angular bei der Installation verwenden, können sie es anstelle von require verwenden. Ist es der einzige Grund, warum Knockout Jquery Ajax für die Datenbindung verwendet, warum sie gewählt haben. Ich hoffe du verstehst was ich meine. Es ist nicht nur die Notwendigkeit, die Frage zu stellen, sondern die Notwendigkeit, dass Magento verschiedene js fw für die Installation und andere für den Rest des Bereichs ändert.
Gagan
Installer ist eine separate kleine Anwendung. Vielleicht wurde es von einem anderen Team gebaut.
Marius
7

Ich kenne den offiziellen Grund nicht, aber nachdem Knockout verwendet wurde, scheint es viel leichter zu sein, es lädt das Minimum, das für die Integration in Magento2-Frontend-Vorlagen erforderlich und geeignet ist, als das schwerere Angular oder React.

Auch die einfache Möglichkeit, RequireJS und gulp automatisch mit Knockout zu mischen, um Ladezeit und Dateigröße zu reduzieren, war wahrscheinlich wichtig, aber ziemlich sicher, dass die Geschwindigkeit des Frontends eine wichtige Rolle bei der Planung von Magento2 spielt.

der Salat
quelle
Ja, Geschwindigkeit kann ein Grund sein. Infact Magento ist berühmt für seine "SPEED" :) und wenn das Knockout so schnell ist, dass es Angular ersetzen kann, ist es sinnvoll. Aber ich bin ziemlich zuversichtlich, dass Angular schneller ist, aber ich bin nicht zu 100% zuversichtlich.
Gagan
3

Ich denke, eine bessere Frage ist, warum m2 so stark mit dem Frontend gekoppelt ist.

Viele JS-Frameworks gab es bereits, als M2 veröffentlicht wurde.

M2 wäre viel beliebter gewesen, wenn die Leute:

  • hatten die Wahl zwischen Präprozessoren, Bündlern, Compilern, Less, Sass, et al
  • hatten die Freiheit zu wählen, welches Framework wie angle1-5-n verwendet werden soll, zu reagieren, vue et al
  • hatte die Freiheit, die CSS-Frameworks, Bootstrap 1-4, Foundation, Grid, et al

Grundsätzlich viel ET ALS. Aber nein, sie zwingen dich, ihre überentwickelte, von XML getriebene Monstrosität zu verwenden.

Das Gute daran ist, dass sie eine REST-API haben, mit der Sie ohne Kopf eine fortschrittliche Web-App erstellen können.

Miguel Felipe Guillen Calo
quelle
Ich habe das neueste Magento-Treffen gefunden, von dem ich glaube, dass es in NL auf PWA und React fokussiert ist. Ich denke, dass hier @ ben-crook hinweist
Gagan,
1
@ Gagandeep gibt es auch diese github.com/DivanteLtd/vue-storefront . Ich persönlich mag Frameworks, die nicht überarbeitet wurden, und gebe Ihnen mehr Freiheit bei der Arbeitsweise. Meist nur Dienste, Modelle und Helfer anbieten. TLDR; agnostische Rahmenbedingungen. Meine persönliche Wahl des Stacks wäre: Angular5 (n), Bootstrap 4, zusammen mit Sass, Typoscript und Webpack.
Miguel Felipe Guillen Calo
0

Bitte, mach dir keine Sorgen. Wie Anton Kril auf der MageConf2017 mitteilte, wird Magento2-Frontend ab Version 2.4 React haben. Und natürlich Redux und GraphQL. Aber ... Knockout.js wird bleiben.

Stepan Furman
quelle
Das ist falsch. Magento 2.4 verwendet React nicht, Magento 2 verwendet weiterhin denselben Stack (einschließlich Knockout). Was Sie meinen, ist das PWA Studio , für das Magento keinen Termin angekündigt hat.
Ben Crook
Sie zwingen Sie immer noch, einen bestimmten Stapel zu verwenden. Ach wie schade.
Miguel Felipe Guillen Calo
@ MiguelFelipeGuillenCalo Nein, nicht wirklich. Die Idee von PWA Studio ist, dass es sich in eine neue GraphQL-API einfügt, mit der Sie jede gewünschte Frontend-Technologie verwenden und einfach das, was Sie benötigen, vom Server abrufen können. Die aktuelle REST-API erschwert dies (da sie einen anderen webapiBereich verwendet). Die neue API ist dafür geeignet. PWA Studio ist nur ihre Art, denjenigen, die es brauchen, eine Basis zu bieten.
Jisse Reitsma
@ JisseReitsma community.magento.com/t5/Magento-DevBlog/… Hier wird eindeutig angegeben, welchen Stapel er verwenden wird. Wenn sie Funktionen erweitern, verbleibt sie wahrscheinlich in diesem Stapel. Daher werden Sie gezwungen, einen bestimmten Stapel zu verwenden.
Miguel Felipe Guillen Calo
@ MiguelFelipeGuillenCalo Ich weiß. Es bedeutet jedoch NICHT, dass der einzige Stapel, den Sie selbst erstellen können, der ist, den Magento erstellt. Ja, wenn Sie keine Arbeit haben möchten und nur das verwenden möchten, was Magento für Sie erstellt, müssen Sie den Stapel verwenden. Ihr Punkt ist jedoch, dass "Sie immer noch gezwungen werden, einen bestimmten Stapel zu verwenden", und das ist nicht wahr. Sie bauen ihren eigenen Stapel, zwingen Sie jedoch nicht, ihn zu verwenden. Stattdessen bauen sie diesen Stack auf einer GraphQL-API auf und ermöglichen es Ihnen, Ihren eigenen Stack auf dieser API aufzubauen. Viel mehr Flexibilität, damit Sie die Flexibilität haben, die Sie möchten.
Jisse Reitsma