Respuestas a las preguntas.
Quién es responsable de formatear los datos, por ejemplo, los precios. ¿API de Magento y marco frontend?
La API de Magento proporciona acceso a los datos y la lógica empresarial . El formato de datos / precios es parte de la lógica de presentación , por lo que de esta manera, tiene más flexibilidad para presentar la información de la manera que desee (sin verse obligado a hacerlo en el modo Magento).
Por ejemplo, puede utilizar javascript para detectar la configuración regional y proporcionar datos apropiados. Verifique lo siguiente:
navigator.language
toLocaleString ()
O incluso puede optar por importar precios de Magento a un sistema de terceros, o una herramienta de análisis de datos, y tener los precios formateados de acuerdo con el formato de moneda solo interrumpiría el proceso de importación hasta que resuelva la "conversión de moneda".
¿Quién es responsable de cambiar el tamaño de las imágenes del producto y almacenarlas en caché? Porque en la API nativa de Magento 2 no hay cambio de tamaño o sistema de caché.
Exactamente. Como dije anteriormente, Magento proporciona acceso a los datos (sin lógica de presentación). Depende de usted cómo lo usará.
Por ejemplo, puede optar por cambiar el tamaño de la imagen adaptativa http://adaptive-images.com/details.htm , para que pueda usar fácilmente la imagen original y hacer lo que quiera.
Puede elegir la forma en que almacenará en caché las imágenes, si desea utilizar la compresión con pérdida o sin pérdida para reducir las imágenes, etc.
¿Necesito crear una nueva API aislada personalizada o ampliarla nativa para futuras actualizaciones?
Le recomiendo que haga su API que se usará para la lógica de presentación, y estará 99.9% (supongo) seguro de que no se verá afectado por una futura actualización de la API de Magento2.
¿Recomiendas usar una capa adicional para combinar CMS y Magento API?
Muy recomendable. Pero, la capa adicional no tiene que ser una aplicación adicional; También puede ser un módulo Magento2. Lo bueno de esto es el hecho de que eres libre de combinarlo como quieras; puedes construir tu capa proxy usando cualquier idioma / tecnología que desees.
Le agradezco que comparta su retorno de experiencia.
Hay muchos enfoques que puede usar aquí. Compartiré mi opinión al respecto.
Mi acercamiento a los sin cabeza
Primero, lo dividiría en dos capas: capa proxy y capa de presentación .
Capa de proxy
Lo primero que tendrá que considerar es sobre la creación de la capa Proxy. Detrás de escena, puede utilizar Magento API, CMS API, ERP API, x API, lo que quiera ...
En la capa proxy, puede usar y organizar los datos de la manera que desee. Puede implementar la capa de almacenamiento en caché allí, así como funcionalidades adicionales para el formateo de datos, el seguimiento de clientes, varias automatizaciones, etc. En general, cualquier cosa que necesite para malabarizar fácilmente en la capa de presentación.
La capa proxy no tiene que estar codificada en PHP; puede codificarse en Java, NodeJS, o incluso puede utilizar AWS API Gateway, AWS SQS y Lambda para proporcionar una capa proxy completa o solo una parte de ella.
Fabrizio Branca describe uno de los enfoques que puede utilizar en http://fbrnc.net/blog/2015/10/super-scaling-magento
Capa de presentación
La capa de presentación depende de la plataforma del cliente; Si va a usarlo para la aplicación móvil, las cosas son bastante claras sobre la forma en que debe utilizar la API proxy.
Para una aplicación web, hay muchas posibilidades. Puedes usar:
- Solución PHP estándar (con tecnología de cualquier marco) donde puede utilizar cualquiera de los motores de plantillas PHP (como Smarty, Twig, Dwoo ...) para proporcionar salida HTML
- Java / NodeJS / cualquier idioma con el que se sienta familiarizado
- Solución puramente basada en JavaScript, que representaría todo el HTML y llamaría a las API apropiadas a través de ajax para llenarlo con datos
- Cualquier híbrido / combinación de esos enfoques desde arriba
Esto no está en la lista de libros , acabo de compartir algunas combinaciones. En realidad, tu imaginación es el único límite.
Pensamientos finales
Use la solución basada en JavaScript tanto como pueda, ya que puede proporcionar una mejor experiencia al Cliente, menor carga útil para las cargas de página, incluso puede hacer una carga de datos especulativa si puede predecir las próximas acciones del cliente.
PERO, el problema con la solución puramente javascript es SEO. Si todos sus datos se cargan a través de Ajax, es probable que Google no pueda analizarlos.
La solución es crear una aplicación híbrida que sirva toda la página HTML en la primera carga, por ejemplo, cuando presiona / catalog / shoes. Para cualquier navegación adicional por el sitio, puede utilizar ajax para obtener solo los bloques necesarios.
Uno de los enfoques sería crear instantáneas de su página, por ejemplo, utilizando PhantomJS . También hay pocas soluciones pagas para esto, como: