Por que o Magento 2 usa Knockout em vez de Angular ou React

14

Minha pergunta é tão simples como está no título. É por que o Magento escolheria o nocaute em vez de outras estruturas como angular ou reagiria?

Existe um motivo específico?

Também é esta a plataforma certa para fazer esta pergunta?

Gagan
fonte

Respostas:

6

Eu acredito que é a mesma razão pela qual eles escolheram MENOS do que Sass - o React não tinha uma grande comunidade estável por trás dele quando o Magento 2 foi iniciado, não tenho certeza se o Angular o fez, mas de qualquer maneira que ouvi, o Angular é bastante complexo e pareceria um exagero para Magento na minha opinião.

O nocaute é leve, não é um exagero e atende aos requisitos que o Magento tinha na época.

Existe uma versão do aplicativo da Web progressivo baseado em React (PWA) do Magento que poderemos fazer o checkout em algum momento deste ano, mas não há data de lançamento, pois ela está em um estágio inicial do conceito do que posso ver. Para informações sobre isso, veja aqui .

Ben Crook
fonte
1
Sim, já os seguindo. Tive a chance de conhecer Ben no Magento, onde ele também estava falando sobre a PWA. Então, sim, isso é algo que o Magento leva a sério.
Gagan
8

Se o Magento 2 foi construído usando react, sua pergunta seria "Por que ele não usa Angular ou KnockoutJs?".
Se foi construído usando Angular .... você sabe onde isso está indo.

Não sou uma autoridade nisso, mas especulo que foi a arma de escolha, porque a equipe estava mais à vontade com o KOjs e atendeu às necessidades deles com base no roteiro.

Houve um debate semelhante ao porquê escolher menos do que o sass (leia mais aqui: https://alankent.me/2016/05/21/magento-2-community-project-moving-from-less-to-sass/ )

Também ouvi discussões sobre o porquê do ZF e não o Symfony. A mesma coisa ... é uma questão de escolher as ferramentas certas adequadas para o trabalho, as ferramentas com as quais você se sente confortável.

Enfim ... você não está limitado demais a essa escolha. Você pode escolher a pilha de tecnologia, especialmente para o front-end, que melhor lhe convier.
Pode ser necessário um esforço extra, mas você fará isso apenas uma vez e poderá reutilizar os resultados em projetos futuros.
Já existem projetos no magento com o React, por exemplo.
Aqui está um vídeo incrível de Riccardo Tempesta: https://www.youtube.com/watch?v=ElZ5UtTXpzQ
Além disso, você pode encontrar aqui um proxy entre react e magento: https://github.com/McFizh/magento2-react
You pode encontrar ainda mais com uma simples pesquisa online.

Marius
fonte
Na verdade, por que perguntei isso é porque a interface da etapa de instalação está usando o Angular, e esse foi o principal motivo para eu perguntar aqui. Se eles estiverem usando o Angular na etapa de instalação, poderão ter usado no lugar da necessidade. É a única razão pela qual o knockout usa o Jquery Ajax para ligação de dados é o motivo pelo qual eles escolheram. Espero que você entenda o que quero dizer. Não é apenas a necessidade de fazer a pergunta, mas a necessidade do magento alterar diferentes js fw para instalação e diferentes para o restante da área.
Gagan
O instalador é um aplicativo pequeno e separado. Talvez tenha sido construído por uma equipe diferente.
Marius
7

Não sei o motivo oficial, mas, ao usá-lo, o Knockout parece muito mais leve, carrega o mínimo necessário e adequado para a integração com modelos de front-end do Magento2 do que o Angular ou React mais pesado.

Além disso, a maneira fácil de o RequireJS e o gulp se misturarem automaticamente com o knockout para reduzir o tempo de carregamento e o tamanho dos arquivos foi provavelmente importante, suponho, mas uma certa velocidade de front end foi uma consideração importante ao planejar o Magento2.

o alface
fonte
Sim, a velocidade pode ser uma razão. De fato, o Magento é famoso por sua "VELOCIDADE" :) e se o nocaute é tão rápido que ele pode substituir o Angular, faz sentido. Mas estou bastante confiante de que o Angular é mais rápido, no entanto, não estou 100% confiante.
precisa
3

Penso que uma pergunta melhor é: por que o m2 é tão fortemente acoplado ao frontend?

Muitas estruturas JS já existiam quando o M2 foi lançado.

M2 Teria sido muito mais popular se as pessoas:

  • teve a escolha de pré-processadores, empacotadores, compiladores, menos, sass, et al
  • teve a liberdade de escolher qual estrutura usar como angular1-5-n, reagir, vue, et al
  • tinha a liberdade de usar quais frameworks css, bootstrap 1-4, foundation, grid, et al

Basicamente, muitos ET ALS. Mas não, eles forçam você a usar sua monstruosidade de engenharia avançada, orientada a xml.

O bom é que eles têm uma API REST, para que você possa ficar sem cabeça e criar um aplicativo da web progressivo.

Miguel Felipe Guillen Calo
fonte
Eu descobri o mais recente magento meet acho que em NL é focado em PWA e reagir, então eu acho que é onde @ ben-bandido está apontando
Gagan
1
@ Gagandeep, também existe este github.com/DivanteLtd/vue-storefront . Pessoalmente, gosto de estruturas que não são projetadas demais e oferece mais liberdade sobre como fazer as coisas. Principalmente, apenas forneça serviços, modelos e ajudantes. TLDR; estruturas agnósticas. Minha escolha pessoal de pilha seria: Angular5 (n), bootstrap 4, junto com sass, typescript e webpack.
Miguel Felipe Guillen Calo
0

Por favor, não se preocupe com isso. Como Anton Kril anunciou no MageConf2017 - desde a versão 2.4, o front-end do Magento2 terá o React. E também, Redux, é claro, e GraphQL. Mas ... Knockout.js permanecerá.

Stepan Furman
fonte
Isto está incorreto. O Magento 2.4 não usará o React, o Magento 2 ainda estará usando a mesma pilha (incluindo Knockout). O que você está se referindo é o PWA Studio , para o qual o Magento não anunciou uma data.
Ben Crook
Eles ainda o forçam a usar uma pilha específica. Que chatice.
Miguel Felipe Guillen Calo
@MiguelFelipeGuillenCalo Não, não realmente. A idéia do PWA Studio é que ele se conecte a uma nova API GraphQL, que permitirá que você use qualquer tecnologia de interface que você gostaria de usar e simplesmente busque no servidor o que você precisa. A atual API REST torna isso difícil (porque usa uma webapiárea diferente ), a nova API é adequada para isso. O PWA Studio é apenas uma maneira de fornecer uma base para quem precisa.
Jisse Reitsma
@JisseReitsma community.magento.com/t5/Magento-DevBlog/… indica claramente qual pilha usará. Quando eles expandem os recursos, ele provavelmente permanecerá nessa pilha. Portanto, eles forçam você a usar uma pilha específica.
Miguel Felipe Guillen Calo
@MiguelFelipeGuillenCalo I know. Mas isso NÃO significa que a única pilha que você pode criar é a que o Magento está construindo. Sim, se você deseja ter zero trabalho e se deseja usar apenas o que o Magento constrói para você, a pilha deles é a que você deve usar. No entanto, seu argumento é que "eles ainda o forçam a usar uma pilha específica" e isso não é verdade. Eles constroem sua própria pilha, mas não forçam você a usá-la. Em vez disso, eles constroem essa pilha sobre uma API do GraphQL e permitem que você construa sua própria pilha sobre a API. Muito mais flexibilidade, para que você tenha a flexibilidade que deseja.
Jisse Reitsma