Por qué Magento 2 usa Knockout en lugar de Angular o React

14

Mi pregunta es tan simple como dice en el título. ¿Por qué elegiría Magento la eliminación en lugar de otros marcos como angular o reaccionar?

Hay una razón específica?

¿También es esta la plataforma adecuada para hacer esta pregunta?

Gagan
fuente

Respuestas:

6

Creo que es la misma razón por la que eligieron MENOS que Sass: React no tenía una gran comunidad estable detrás cuando Magento 2 se inició por primera vez, no estoy seguro de si Angular lo hizo, pero de cualquier manera he oído que Angular es bastante complejo y Parecería excesivo para Magento en mi opinión.

Knockout es liviano, no es excesivo y cumple con los requisitos que Magento tenía en ese momento.

Hay una versión de Magento de la aplicación web progresiva basada en React (PWA) que deberíamos poder revisar en algún momento este año, pero no hay una fecha de lanzamiento ya que está en una etapa de concepto inicial por lo que puedo ver. Para obtener información sobre eso, consulte aquí .

Ben Crook
fuente
1
Sí, ya los sigo. Tuve la oportunidad de conocer a Ben en el encuentro de Magento donde también estaba diciendo sobre PWA. Entonces, sí, eso es algo de lo que Magento habla en serio.
Gagan
8

Si Magento 2 fue construido usando reaccionar, su pregunta sería "¿Por qué no usa Angular o KnockoutJs?".
Si fue construido usando Angular ... ya sabes a dónde va esto.

No soy una autoridad en esto, pero especulo que era el arma de elección porque el equipo se sentía más cómodo con KOjs y se adaptaba a sus necesidades en función de su hoja de ruta.

Hubo un debate similar al por qué elegir menos sobre sass (lea más sobre esto aquí: https://alankent.me/2016/05/21/magento-2-community-project-moving-from-less-to-sass/ )

También escuché discusiones sobre por qué ZF y no Symfony. Lo mismo ... se trata de elegir las herramientas adecuadas para el trabajo, las herramientas con las que se siente cómodo.

De todos modos ... no estás demasiado limitado sobre esta elección. Puede elegir la pila tecnológica, especialmente para frontend, que más le convenga.
Es posible que deba hacer un esfuerzo adicional, pero lo hará solo una vez y podrá reutilizar los resultados en proyectos futuros.
Ya hay proyectos en magento con reacción, por ejemplo.
Aquí hay un video impresionante de Riccardo Tempesta: https://www.youtube.com/watch?v=ElZ5UtTXpzQ
También puede encontrar aquí un proxy entre react y magento: https://github.com/McFizh/magento2-react
You puede encontrar aún más con una simple búsqueda en línea.

Marius
fuente
En realidad, por qué pregunté esto es porque la interfaz del paso de instalación está usando Angular, por lo que esa fue la razón clave para preguntarlo aquí. Si están usando Angular en el paso de instalación, podrían haberlo usado en lugar de requerirlo. ¿Es la única razón por la que el knockout utiliza Jquery Ajax para el enlace de datos? Espero entiendas lo que quiero decir. No es solo la necesidad de hacer la pregunta, sino la necesidad de que magento cambie diferentes js fw para la instalación y diferentes para el resto del área.
Gagan
El instalador es una pequeña aplicación separada. Tal vez fue construido por un equipo diferente.
Marius
7

No sé la razón oficial, pero habiéndolo usado, Knockout parece mucho más liviano, carga lo mínimo necesario y adecuado para integrarse con las plantillas frontend de Magento2 que Angular o React.

Además, la forma fácil que RequireJS y gulp se combinan automáticamente con la eliminación de golpes para reducir el tiempo de carga y los tamaños de archivo probablemente fue importante, supongo, pero una velocidad bastante segura en el extremo frontal fue una consideración importante al planificar Magento2.

la lechuga
fuente
Sí, la velocidad puede ser una razón. Infact Magento es famoso por su "VELOCIDAD" :) y si el golpe de gracia es tan rápido que puede reemplazar a Angular, tiene sentido. Pero estoy bastante seguro de que Angular es más rápido, sin embargo, no estoy 100% seguro.
Gagan
3

Creo que una mejor pregunta es, ¿por qué m2 está tan fuertemente acoplado con frontend?

Muchos marcos JS ya existían cuando se lanzó M2.

M2 habría sido mucho más popular si las personas:

  • tenía la opción de preprocesadores, agrupadores, compiladores, less, sass, et al.
  • tenía la libertad de elegir qué marco usar como angular1-5-n, react, vue, et al
  • tenía la libertad de usar cualquiera de los frameworks CSS, Bootstrap 1-4, Foundation, grid, et al

Básicamente muchos ET ALS. Pero no, te obligan a usar su frontend sobre ingeniería, monstruosidad impulsada por xml.

Lo bueno es que tienen una API REST, por lo que puede quedarse sin cabeza y crear una aplicación web progresiva.

Miguel Felipe Guillén Calo
fuente
Encontré el último encuentro de magento que creo que en NL se centra en PWA y React, así que creo que es a donde apunta @ ben-crook
Gagan
1
@Gagandeep también está este github.com/DivanteLtd/vue-storefront . Personalmente, me gustan los marcos que no están diseñados en exceso, y te da más libertad sobre cómo hacer las cosas. En su mayoría solo brindan servicios, modelos y ayudantes. TLDR; marcos agnósticos. Mi elección personal de pila sería: Angular5 (n), bootstrap 4, junto con sass, mecanografiado y webpack.
Miguel Felipe Guillen Calo
0

Por favor, no te preocupes por eso. Como Anton Kril anunció en el MageConf2017 -desde la versión 2.4, la interfaz de Magento2 tendrá React. Y también, Redux, por supuesto, y GraphQL. Pero ... Knockout.js permanecerá.

Stepan Furman
fuente
Esto es incorrecto. Magento 2.4 no utilizará React, Magento 2 seguirá utilizando la misma pila (incluido Knockout). A lo que te refieres es al PWA Studio , para el cual Magento no ha anunciado una fecha.
Ben Crook
Todavía te obligan a usar una pila específica. Que fastidio.
Miguel Felipe Guillen Calo
@MiguelFelipeGuillenCalo No, en realidad no. La idea de PWA Studio es que se conecta a una nueva API GraphQL, que le permitirá usar cualquier tecnología de interfaz que le gustaría usar y simplemente obtener del servidor lo que necesita. La API REST actual lo hace difícil (porque usa un webapiárea diferente ), la nueva API es adecuada para eso. PWA Studio es solo su forma de proporcionar una base a quienes lo necesitan.
Jisse Reitsma
@JisseReitsma community.magento.com/t5/Magento-DevBlog/… esto indica claramente qué pila usará. Cuando expanden las características, es probable que permanezca en esa pila. Por lo tanto, te obligan a usar una pila específica.
Miguel Felipe Guillen Calo
@MiguelFelipeGuillenCalo Lo sé. Pero NO significa que la única pila que puede crear usted mismo es la que está construyendo Magento. Sí, si quieres tener cero trabajo y si solo quieres usar lo que Magento construye para ti, entonces su pila es la que debes usar. Sin embargo, su punto es que "todavía lo obligan a usar una pila específica" y eso no es cierto. Construyen su propia pila, pero no te obligan a usarla. En su lugar, construyen esa pila sobre una API GraphQL y le permiten construir su propia pila sobre esa API. Mucha más flexibilidad, para que tenga la flexibilidad que desea.
Jisse Reitsma