Pourquoi Magento 2 utilise Knockout au lieu d'Angular ou React


14

Ma question est aussi simple qu'elle l'indique dans le titre. C'est pourquoi Magento choisirait-il KO au lieu d'autres cadres comme angulaire ou réagir?

Y a-t-il une raison précise?

Est-ce aussi la bonne plateforme pour poser cette question?

Réponses:


6

Je pense que c'est la même raison pour laquelle ils ont choisi MOINS plutôt que Sass - React n'avait pas de grande communauté stable derrière Magento 2, je ne sais pas si Angular l'a fait, mais de toute façon j'ai entendu Angular est assez complexe et semblerait exagéré pour Magento à mon avis.

Knockout est léger, n'est pas exagéré et répond aux exigences de Magento à l'époque.

Il existe une version de l'application Web progressive (PWA) basée sur React de Magento que nous devrions être en mesure de vérifier à un moment donné cette année, mais il n'y a pas de date de sortie car elle en est à un stade conceptuel précoce de ce que je peux voir. Pour plus d'informations à ce sujet, voir ici .


1
Oui les suit déjà. J'ai eu la chance de rencontrer Ben lors de la rencontre de Magento où il parlait également de PWA. Donc, oui, c'est quelque chose que Magento est sérieux.
Gagan

8

Si Magento 2 a été construit en utilisant React, votre question serait "Pourquoi n'utilise-t-il pas Angular ou KnockoutJs?".
Si elle a été construite en utilisant Angular .... vous savez où cela va.

Je ne suis pas une autorité en la matière, mais je pense que c'était l'arme de choix car l'équipe était plus à l'aise avec les KOjs et cela convenait à leurs besoins en fonction de leur feuille de route.

Il y a eu un débat similaire pour savoir pourquoi choisir moins que sass (en savoir plus ici: https://alankent.me/2016/05/21/magento-2-community-project-moving-from-less-to-sass/ )

J'ai également entendu des discussions sur la raison pour laquelle ZF et non Symfony. Même chose ... il s'agit de choisir les bons outils adaptés à la tâche, les outils avec lesquels vous êtes à l'aise.

Quoi qu'il en soit ... vous n'êtes pas trop limité sur ce choix. Vous pouvez choisir la pile technologique, spécialement pour l'interface, qui vous convient le mieux.
Vous devrez peut-être faire un effort supplémentaire, mais vous ne le ferez qu'une seule fois et pourrez réutiliser les résultats dans de futurs projets.
Il existe déjà des projets sur magento avec react par exemple.
Voici une vidéo impressionnante de Riccardo Tempesta: https://www.youtube.com/watch?v=ElZ5UtTXpzQ
Vous pouvez également trouver ici un proxy entre react et magento: https://github.com/McFizh/magento2-react
You peut trouver encore plus avec une simple recherche en ligne.


En fait, pourquoi j'ai posé cette question parce que l'interface de l'étape d'installation utilise Angular, c'est donc la raison principale pour laquelle je le pose ici. S'ils utilisent Angular à l'étape d'installation, ils auraient pu l'utiliser à la place du besoin. Est-ce la seule raison pour laquelle knockout utilise Jquery Ajax pour la liaison de données, c'est pourquoi ils ont choisi. J'espère que tu comprends ce que je veux dire. Ce n'est pas seulement la nécessité de poser la question, mais la nécessité pour magento de changer différents js fw pour l'installation et différents pour le reste de la zone.
Gagan

Le programme d'installation est une petite application distincte. Peut-être qu'il a été construit par une autre équipe.
Marius

7

Je ne connais pas la raison officielle, mais l'ayant utilisé, Knockout semble beaucoup plus léger, charge le minimum nécessaire et convient pour l'intégration avec les modèles frontaux de Magento2 que le plus lourd Angular ou React.

De plus, la manière simple dont RequireJS et gulp se mélangent automatiquement avec knockout pour réduire le temps de chargement et la taille des fichiers était probablement importante, je suppose, mais la vitesse frontale assez certaine était une considération majeure lors de la planification de Magento2.


Oui, la vitesse peut être une raison. Infact Magento est célèbre pour sa "VITESSE" :) et si le knockout est si rapide qu'il peut remplacer Angular, cela a du sens. Mais je suis assez confiant que Angular est plus rapide, cependant, je ne suis pas 100% confiant.
Gagan

3

Je pense qu'une meilleure question est, pourquoi le m2 est-il si fortement couplé avec le frontend?

De nombreux frameworks JS existaient déjà lors de la sortie de M2.

M2 aurait été beaucoup plus populaire si les gens:

  • avait le choix de préprocesseurs, bundlers, compilateurs, less, sass, et al
  • avait la liberté de choisir le cadre à utiliser comme angular1-5-n, react, vue, et al
  • avait la liberté d'utiliser les frameworks css, bootstrap 1-4, fondation, grille, etc.

Fondamentalement, beaucoup de ET ALS. Mais non, ils vous obligent à utiliser leur front-end trop conçu, monstruosité pilotée par xml.

La bonne chose est qu'ils ont une API REST, donc vous pouvez aller sans tête et créer une application web progressive.


J'ai trouvé que la dernière rencontre magento à NL, je pense, est axée sur PWA et React, donc je pense que c'est là que pointe @ ben-crook
Gagan

1
@Gagandeep il y a aussi ce github.com/DivanteLtd/vue-storefront . Personnellement, j'aime les cadres qui ne sont pas trop conçus et vous donnent plus de liberté sur la façon de faire les choses. Généralement, il suffit de fournir des services, des modèles et des aides. TLDR; cadres agnostiques. Mon choix personnel de pile serait: Angular5 (n), bootstrap 4, avec sass, dactylographié et webpack.
Miguel Felipe Guillen Calo

0

S'il vous plaît, ne vous en faites pas. Comme Anton Kril l'a annoncé au MageConf2017 - depuis la version 2.4, le frontend Magento2 aura React. Et aussi, Redux bien sûr, et GraphQL. Mais ... Knockout.js restera.


Ceci est une erreur. Magento 2.4 n'utilisera pas React, Magento 2 utilisera toujours la même pile (y compris Knockout). Vous faites référence à PWA Studio , pour lequel Magento n'a pas annoncé de date.
Ben Crook

Ils vous obligent toujours à utiliser une pile spécifique. Quelle déception.
Miguel Felipe Guillen Calo

@MiguelFelipeGuillenCalo Non, pas vraiment. L'idée de PWA Studio est qu'il se connecte à une nouvelle API GraphQL, qui vous permettra d'utiliser la technologie frontale que vous souhaitez utiliser et de récupérer simplement sur le serveur ce dont vous avez besoin. L'API REST actuelle rend cela difficile (car elle utilise une webapizone différente ), la nouvelle API est adaptée à cela. PWA Studio est juste leur façon de fournir une base à ceux qui en ont besoin.
Jisse Reitsma

@JisseReitsma community.magento.com/t5/Magento-DevBlog/… cela indique clairement quelle pile il utilisera. Lorsqu'ils étendent les fonctionnalités, ils resteront probablement dans cette pile. Par conséquent, ils vous obligent à utiliser une pile spécifique.
Miguel Felipe Guillen Calo

@MiguelFelipeGuillenCalo Je sais. Mais cela ne signifie PAS que la seule pile que vous pouvez créer vous-même est celle que Magento construit. Oui, si vous voulez avoir zéro travail et si vous voulez seulement utiliser ce que Magento construit pour vous, alors leur pile est celle à utiliser. Cependant, votre point est que "ils vous obligent toujours à utiliser une pile spécifique" et ce n'est pas vrai. Ils construisent leur propre pile, mais ne vous forcent pas à l'utiliser. Au lieu de cela, ils construisent cette pile au-dessus d'une API GraphQL et vous permettent de créer votre propre pile au-dessus de cette API. Beaucoup plus de flexibilité, vous avez donc la flexibilité que vous souhaitez.
Jisse Reitsma
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.