Risposte:
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 .
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.
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.
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:
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.
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à.
webapi
), la nuova API è adatta a questo. PWA Studio è solo il loro modo di fornire una base a coloro che ne hanno bisogno.