Antworten auf die Fragen
Wer ist für die Formatierung der Daten verantwortlich, zum Beispiel die Preise. Magento API und Frontend Framework?
Die Magento-API bietet Zugriff auf die Daten und die Geschäftslogik . Die Formatierung von Daten / Preisen ist Teil der Präsentationslogik. Auf diese Weise haben Sie mehr Flexibilität bei der Darstellung von Informationen nach Ihren Wünschen (ohne dazu gezwungen zu sein, dies mit Magento zu tun).
Beispielsweise können Sie Javascript verwenden, um Gebietsschemaeinstellungen zu erkennen und entsprechende Daten bereitzustellen. Überprüfen Sie Folgendes:
navigator.language
toLocaleString ()
Oder Sie können sogar Preise aus Magento in ein System eines Drittanbieters oder in ein Datenanalysetool importieren. Wenn Sie die Preise gemäß dem Währungsformat formatieren, wird der Importvorgang nur unterbrochen, bis Sie die "Währungsumrechnung" lösen.
Wer ist dafür verantwortlich, die Größe der Produktbilder zu ändern und sie zwischenzuspeichern? Denn in der nativen Magento 2-API gibt es kein Größenänderungs- oder Cache-System.
Genau. Wie bereits erwähnt, bietet Magento Zugriff auf die Daten (ohne Präsentationslogik). Es liegt an Ihnen, wie Sie es verwenden.
Beispielsweise können Sie die Größe des adaptiven Bilds http://adaptive-images.com/details.htm ändern , damit Sie das Originalbild problemlos verwenden und tun können, was Sie möchten.
Sie können wählen, wie Sie Bilder zwischenspeichern, verlustbehaftete oder verlustfreie Komprimierung zum Reduzieren von Bildern verwenden möchten usw.
Muss ich eine neue benutzerdefinierte isolierte API erstellen oder die native API für zukünftige Upgrades erweitern?
Ich empfehle Ihnen, Ihre API so zu gestalten, dass sie für die Präsentationslogik verwendet wird, und Sie sind zu 99,9% sicher, dass Sie von einem zukünftigen Upgrade der Magento2-API nicht betroffen sind.
Empfehlen Sie die Verwendung einer zusätzlichen Ebene, um CMS und Magento API zu kombinieren?
Sehr empfehlenswert. Die zusätzliche Ebene muss jedoch keine zusätzliche Anwendung sein. Es kann auch ein Magento2-Modul sein. Das Gute daran ist, dass Sie es nach Belieben kombinieren können. Sie können Ihre Proxy-Ebene mit jeder gewünschten Sprache / Technologie erstellen.
Ich freue mich, dass Sie uns Ihre Erfahrungen mitteilen.
Es gibt viele Ansätze, die Sie hier verwenden können. Ich werde meine Meinung dazu teilen .
Mein Ansatz zu Headless
Zuerst würde ich es in zwei Ebenen aufteilen: Proxy-Ebene und Präsentations-Ebene .
Proxy-Schicht
Das erste, was Sie berücksichtigen müssen, ist das Erstellen der Proxy-Ebene. Hinter den Kulissen können Sie die Magento-API, die CMS-API, die ERP-API und die x-API nach Belieben verwenden ...
In der Proxy-Ebene können Sie die Daten nach Belieben verwenden und organisieren. Sie können dort die Caching-Ebene sowie zusätzliche Funktionen für die Datenformatierung, Kundenverfolgung, verschiedene Automatisierungen usw. implementieren. Im Allgemeinen alles, was Sie zum einfachen Jonglieren in der Präsentations-Ebene benötigen.
Die Proxy-Ebene muss nicht in PHP codiert sein. Es kann in Java, NodeJS codiert werden oder Sie können sogar AWS API Gateway, AWS SQS und Lambda verwenden, um eine ganze Proxy-Schicht oder nur einen Teil davon bereitzustellen.
Einer der möglichen Ansätze wird von Fabrizio Branca unter http://fbrnc.net/blog/2015/10/super-scaling-magento beschrieben
Präsentationsfolie
Die Darstellungsebene hängt von der Client-Plattform ab. Wenn Sie es für Mobile App verwenden möchten, ist ziemlich klar, wie Sie die Proxy-API verwenden sollten.
Für eine Webanwendung gibt es viele Möglichkeiten. Sie können verwenden:
- Standard-PHP-Lösung (basierend auf einem beliebigen Framework), bei der Sie eine beliebige PHP-Template-Engine (wie Smarty, Twig, Dwoo ...) verwenden können, um HTML-Ausgabe bereitzustellen
- Java / NodeJS / welche Sprache Sie auch immer kennen
- Rein auf Javascript basierende Lösung, die alles HTML rendert und entsprechende APIs über Ajax aufruft, um es mit Daten zu füllen
- Beliebige Hybrid / Kombination dieser Ansätze von oben
Dies ist nicht von der Buchliste, ich habe nur wenige Kombinationen geteilt. In Wirklichkeit ist Ihre Vorstellungskraft die einzige Grenze.
Abschließende Gedanken
Verwenden Sie so oft wie möglich eine auf Javascript basierende Lösung, da dies dem Kunden eine bessere Erfahrung bieten kann, die Nutzlast für das Laden von Seiten geringer ist und Sie sogar spekulative Daten laden können, wenn Sie die nächsten Aktionen des Kunden vorhersagen können.
ABER das Problem mit der reinen Javascriptlösung ist SEO. Wenn alle Ihre Daten über Ajax geladen werden, kann Google sie wahrscheinlich nicht analysieren.
Die Lösung besteht darin, eine Hybrid-App zu erstellen, die beim ersten Laden die gesamte HTML-Seite bedient, z. B. wenn Sie auf / catalog / shoes klicken. Für jede weitere Navigation durch die Site können Sie Ajax verwenden, um nur die benötigten Blöcke abzurufen.
Einer der Ansätze wäre das Erstellen von Schnappschüssen Ihrer Seite, beispielsweise mit PhantomJS . Es gibt auch einige kostenpflichtige Lösungen dafür, wie zum Beispiel: