Eine Basiskomponente zur Integration von Sencha Ext JS in eine PHP-Anwendung
Diese Bibliothek bietet eine einfache Abstraktion der unterschiedlichen Anforderungen beim Ausführen von Sencha Ext JS 6-Anwendungen (auch wenn 5 ebenfalls funktionieren sollte) aus einem Entwicklungs- und einem Produktionskontext unter Verwendung servergenerierter Seiten. Entwicklungs- und Produktions-Builds verwenden unterschiedliche Quellbäume, um Anwendungsdateien bereitzustellen. Dieser Prozess basiert auf einem sogenannten Manifest und einem Javascript-Microloader. Um sicherzustellen, dass dieser Prozess nahtlos mit servergenerierten Seiten und Routing funktioniert, bindet die Bibliothek die Manifestgenerierung ein und ändert das Manifest basierend auf der erforderlichen Umgebung und dem erforderlichen Kontext dynamisch.
Derzeit wird diese Bibliothek nur als Grundlage von teqneers/ext-application-bundle verwendet, einem Symfony-Bundle, das Ext JS in eine Symfony-basierte Anwendung integriert. Wir haben nicht versucht, die Bibliothek als eigenständige Komponente oder in einem anderen Kontext als einer Symfony-Umgebung zu verwenden. Im Folgenden erfahren Sie daher nur, wie sie theoretisch ohne das Bundle funktionieren sollte. Wir würden uns über jede Hilfe und jeden Beitrag freuen, um die Bibliothek außerhalb des Pakets nützlicher zu machen.
Sie können diese Bibliothek mit Composer installieren
composer require teqneers/ext-application
oder fügen Sie das Paket direkt zu Ihrer Composer.json-Datei hinzu.
Gegeben sei die folgende Verzeichnisstruktur einer fiktiven Anwendung
./
|-- src/ Application source code
|-- htdocs/ Public web-facing directory (document root)
| |-- index.php PHP front controller
| |-- app/ Root folder for Ext JS application production build
|-- my-app/ The Ext JS application source folder (sencha generate app -ext MyApp ./my-app)
Sie sollten Ihre Anwendung konfigurieren (z. B. aus index.php)
$ config = TQ ExtJS Application Configuration ApplicationConfiguration (
__DIR__ . ' /../my-app ' , // the absolute path to the Ext JS application workspace
' ../my-app ' , // the relative path from the public web-facing directory to the Ext JS application workspace
__DIR__ , // the absolute path to the public web-facing directory
' / ' // the relative path from the public web-facing directory to the root directory used for production build artifacts (usually /)
);
// add a default build
$ config -> addBuild (
' default ' , // the build name (just for referencing the build)
' / ' , // the application path relative to the Ext JS application workspace (usually / unless you have multiple applications and/or packages in a single workspace)
' app ' , // the application path relative to the root directory used for production build artifacts
' manifest.json ' , // the build manifest filename for development builds
' bootstrap.js ' , // the micro-loader filename for development builds
null , // the application cache manifest filename for development builds (usually NULL)
' bootstrap.json ' , // the build manifest filename for production builds
' bootstrap.js ' , // the micro-loader filename for production builds
' cache.appcache ' // the application cache manifest filename fro production builds
);
$ application = new TQ ExtJS Application Application (
$ config ,
new TQ ExtJS Application Manifest ManifestLoader (),
' dev ' // dev or prod depending on wether you want to run from development or drom production build
);
$ microLoader = $ application -> getMicroLoaderFile (); // returns a SplFileInfo for the configured micro-loader
$ hasAppCache = $ application -> hasAppCache ();
if ( $ hasAppCache ) {
$ appCache = $ application -> getAppCacheFile (); // returns a SplFileInfo for the configured application cache manifest
}
$ manifest = $ application -> getManifest ( ' /htdocs ' ); // returns a TQExtJSApplicationManifestManifest configured correctly when running document root on your application base path
echo $ manifest ; // outputs the manifest
Wenn Sie die Anwendung im Entwicklungsmodus ausführen, müssen Sie sicherstellen, dass sich das Dokumentstammverzeichnis Ihres Webservers eine Ebene höher als das (reguläre) öffentliche Webverzeichnis befindet, damit der Webserver auch Dateien aus dem Ext JS-Anwendungsarbeitsbereich bereitstellen kann.
Die MIT-Lizenz (MIT)
Copyright (c) 2021 TEQneers GmbH & Co. KG
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die „Software“) erhält, kostenlos die Erlaubnis erteilt, mit der Software ohne Einschränkung zu handeln, einschließlich und ohne Einschränkung der Rechte zur Nutzung, zum Kopieren, Ändern und Zusammenführen , Kopien der Software zu veröffentlichen, zu verteilen, unterzulizenzieren und/oder zu verkaufen und Personen, denen die Software zur Verfügung gestellt wird, dies zu gestatten, vorbehaltlich der folgenden Bedingungen:
Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD „WIE BESEHEN“ ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL SIND DIE AUTOREN ODER URHEBERRECHTSINHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE HAFTUNG, WEDER AUS EINER VERTRAGLICHEN HANDLUNG, AUS HANDLUNG ODER ANDERWEITIG, DIE SICH AUS, AUS ODER IN ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN HANDELN IN DER SOFTWARE ERGEBEN SOFTWARE.