Perché Magento 2 usa Knockout invece di Angular o React


14

La mia domanda è semplice come dice nel titolo. È per questo che Magento dovrebbe scegliere knockout invece di altri framework come angolare o reagire?

C'è un motivo specifico?

Anche questa è la piattaforma giusta per porre questa domanda?

Risposte:


6

Credo che sia la stessa ragione per cui hanno scelto MENO su Sass - React non aveva una grande comunità stabile alle spalle quando è stato avviato Magento 2, non sono sicuro che Angular lo abbia fatto, ma in entrambi i casi ho sentito Angular è piuttosto complesso e a mio avviso sembrerebbe eccessivo per Magento.

Knockout è leggero, non eccessivo e soddisfa i requisiti di Magento in quel momento.

Esiste una versione progressiva di Magento basata su React (PWA) che dovremmo essere in grado di verificare ad un certo punto quest'anno, ma non c'è una data di rilascio in quanto è in una fase iniziale di concetto da quello che posso vedere. Per informazioni su questo vedi qui .


1
Sì già li seguo. Ho avuto la possibilità di incontrare Ben nell'incontro di Magento, dove stava anche dicendo di PWA. Quindi, sì, questo è qualcosa di cui Magento fa sul serio.
Gagan,

8

Se Magento 2 fosse stato creato utilizzando la risposta, la tua domanda sarebbe "Perché non usa Angular o KnockoutJs?".
Se è stato costruito utilizzando Angular .... sai dove sta andando.

Non sono un'autorità su questo, ma suppongo che fosse l'arma preferita perché il team era più a suo agio con KOjs e si adattava alle loro esigenze in base alla loro tabella di marcia.

C'è stato un dibattito simile sul perché scegliere meno su sass (leggi di più qui: https://alankent.me/2016/05/21/magento-2-community-project-moving-from-less-to-sass/ )

Ho anche sentito discussioni sul perché ZF e non su Symfony. Stessa cosa ... si tratta di scegliere gli strumenti giusti adatti al lavoro, gli strumenti con cui ti senti a tuo agio.

Comunque ... non ti sei limitato troppo a questa scelta. Puoi scegliere lo stack tecnologico, specialmente per il frontend, più adatto a te.
Potrebbe essere necessario un ulteriore sforzo, ma lo farai solo una volta e potrai riutilizzare i risultati in progetti futuri.
Ci sono già progetti là fuori su magento con reagire per esempio.
Ecco un fantastico video di Riccardo Tempesta: https://www.youtube.com/watch?v=ElZ5UtTXpzQ
Inoltre puoi trovare qui un proxy tra reagire e magento: https://github.com/McFizh/magento2-react
You puoi trovare ancora di più con una semplice ricerca online.


In realtà il motivo per cui l'ho chiesto è perché l'interfaccia del passaggio di installazione utilizza Angular, quindi questa è stata la ragione principale per cui me l'ho chiesto qui. Se stanno usando Angular durante la fase di installazione, potrebbero averlo usato al posto del requisito. È l'unico motivo per cui knockout utilizza Jquery Ajax per l'associazione dei dati è il motivo per cui hanno scelto. Spero tu capisca quello che intendo. Non è solo la necessità di porre la domanda, ma la necessità che magento cambi diversi js fw per l'installazione e diversi per il resto dell'area.
Gagan,

Il programma di installazione è una piccola applicazione separata. Forse è stato costruito da un team diverso.
Marius

7

Non conosco il motivo ufficiale, ma dopo averlo usato, Knockout sembra molto più leggero, carica il minimo necessario e adatto per l'integrazione con i modelli di frontend Magento2 rispetto al più pesante Angular o React.

Anche il modo semplice RequireJS e gulp si fondono automaticamente con knockout per ridurre i tempi di caricamento e le dimensioni dei file era probabilmente importante, immagino, ma una certa velocità del front-end era una considerazione importante durante la pianificazione di Magento2.


Sì, la velocità può essere una ragione. Infatti Magento è famoso per la sua "VELOCITÀ" :) e se knockout è così veloce da poter sostituire Angular ha senso. Ma sono abbastanza sicuro che Angular sia più veloce, tuttavia, non sono sicuro al 100%.
Gagan,

3

Penso che una domanda migliore sia: perché m2 è così fortemente accoppiato con il frontend?

Molti framework JS erano già in circolazione quando è stato rilasciato M2.

M2 sarebbe stato molto più popolare se le persone:

  • aveva la scelta di preprocessori, bundler, compilatori, less, sass, et al
  • avuto la libertà di scegliere quale framework usare come angular1-5-n, reazioni, vue, et al
  • aveva la libertà di usare qualunque framework css, bootstrap 1-4, foundation, grid, et al

Fondamentalmente un sacco di ET ALS. Ma no, ti costringono a usare il loro frontend ingegnerizzato, mostruosità guidata da xml.

La cosa buona è che hanno un'API REST, quindi puoi andare senza testa e creare un'app web progressiva.


Ho scoperto che l'ultimo incontro di Magento penso che in NL sia incentrato su PWA e React, quindi penso che sia qui che sta puntando @ ben-truffatore
Gagan,

1
@Gagandeep c'è anche questo github.com/DivanteLtd/vue-storefront . Personalmente mi piacciono i framework che non sono troppo ingegnerizzati e ti danno più libertà su come fare le cose. Principalmente fornire solo servizi, modelli e helper. TLDR; quadri agnostici. La mia scelta personale di stack sarebbe: Angular5 (n), bootstrap 4, insieme a sass, dattiloscritto e webpack.
Miguel Felipe Guillen Calo,

0

Per favore, non preoccuparti. Come ha annunciato Anton Kril al MageConf2017 - dalla versione 2.4 il frontend Magento2 avrà React. E anche, Redux ovviamente, e GraphQL. Ma ... Knockout.js rimarrà.


Questo non è corretto Magento 2.4 non utilizzerà React, Magento 2 utilizzerà comunque lo stesso stack (incluso Knockout). Quello a cui ti riferisci è PWA Studio , a cui Magento non ha annunciato una data.
Ben Crook,

Ti costringono comunque a usare uno stack specifico. Che peccato.
Miguel Felipe Guillen Calo,

@MiguelFelipeGuillenCalo No, non proprio. L'idea di PWA Studio è quella di collegarsi a una nuova API GraphQL, che ti consentirà di utilizzare qualsiasi tecnologia di frontend che desideri utilizzare e recuperare semplicemente dal server ciò di cui hai bisogno. L'attuale API REST rende questo difficile (perché utilizza un'area diversa webapi), la nuova API è adatta a questo. PWA Studio è solo il loro modo di fornire una base a coloro che ne hanno bisogno.
Jisse Reitsma,

@JisseReitsma community.magento.com/t5/Magento-DevBlog/… questo indica chiaramente quale stack utilizzerà. Quando espandono le funzionalità, probabilmente rimarrà in quello stack. Quindi, ti costringono a usare uno stack specifico.
Miguel Felipe Guillen Calo,

@MiguelFelipeGuillenCalo Lo so. Ma NON significa che l'unico stack che puoi creare tu sia quello che Magento sta costruendo. Sì, se vuoi avere zero lavori e se vuoi usare solo ciò che Magento costruisce per te, allora il loro stack è quello da usare. Tuttavia, il punto è che "ti costringono ancora a utilizzare uno stack specifico" e questo non è vero. Costruiscono il proprio stack, ma non ti costringono a usarlo. Invece, costruiscono quello stack sopra un'API GraphQL e ti consentono di costruire il tuo stack sopra quell'API. Molta più flessibilità, quindi hai la flessibilità che desideri.
Jisse Reitsma,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.