Wenn Sie eine brandneue Anwendung in ExtJS 6 erstellen, geben Sie cmd sencha Acess und rufen: "Sencha erzeugen App NameApp ../folderApp"
Dann wird die folgende Struktur erstellt: Click here to see the structure
I Ich weiß nicht, über welche Struktur Ihr Code erstellt wurde, aber um auf Desktop- und mobilen Geräten zu arbeiten, muss er in dieser Struktur von sencha cmd generiert werden.
Nach dieser Struktur (generieren Sie eine neue Anwendung ist eine bessere Praxis dafür) müssen Sie das "rigth Modell von extjjs 6.0" in Erinnerung bringen. ExtJS erlauben MVC- oder MVVM-Architekturen. MVC Architektur wird im Wesentlichen von einem großen Controller gesteuert, der alle Komponenten Ihrer Anwendung steuern kann. Auf der anderen Seite hat MVVM architecture einen Controller für jede Ansicht - er wird instanziiert, wenn die Ansicht instanziiert ist, und zerstört, wenn die Ansicht zerstört wird. Diese Architektur wird in ExtJS empfohlen, besonders in den Leistenversionen.
Sie müssen jetzt den Code, der in Ihrer tatsächlichen Anwendung gemacht wurde, auf die neue Anwendung und Architektur übertragen. Fügen Sie Ihre gesamte Ansichtsstruktur in NameApp> classic> src> view ein. Öffnen Sie einen neuen Ordner für jede Ansicht. Dieser Ordner sollte die Ansicht und den Controller für diese Ansicht enthalten. Zum Beispiel, lassen Sie uns eine Listenansicht erstellen:
NameApp> classic> src> Ansicht> Liste> List.js
NameApp> classic> src> Ansicht> Liste> ListController.js
Und so weiter ...
Jetzt können Sie mobile Ansichten und Controller getrennt erstellen, auf mobile> src> Ordner anzeigen, folgen Sie dem gleichen Modell in Classic, aber Sie müssen natürlich Komponenten von Mobile Toolkit verwenden.
Bis hier haben Sie eine separate mobile und klassische App im selben Code. Aber Sie können die Leistungsfähigkeit von ExtJS 6 nutzen, indem Sie generische Klassen aus dem App-Ordner erweitern, um Ihren Code zu optimieren. Zum Beispiel können Sie einen allgemeinen Controller für eine bestimmte Ansicht erstellen, die in klassischen und modernen Ordner erweitert werden:
NameApp> app> Ansicht> Liste> ListControllerGeneric.js
Ext.define('NameApp.app.view.list.ListControllerGeneric', {
extend: 'Ext.app.ViewController',
//here you put code using in modern and classic both
});
NameApp> klassisch> src> Ansicht> Liste> ListController.js
Ext.define('NameApp.app.view.list.ListController', {
extend: 'NameApp.app.view.list.ListControllerGeneric',
//here you put code using in classic only
});
NameApp> moderne> src> Ansicht> Liste> ListController.js
Ext.define('NameApp.app.view.list.ListController', {
extend: 'NameApp.app.view.list.ListControllerGeneric',
//here you put code using in modern only
});
Eine wichtige Sache, um Abstürze zu vermeiden, besteht darin, alle Ansichten aus dem klassischen Ordner in den modernen Ordner zu erstellen, auch wenn Sie sie nicht wirklich auf mobilen Geräten verwenden. Darüber hinaus benötigen Sie Sencha App Watch sowohl modern als auch modern, aber Sie müssen Sencha App bauen, um beide zu bauen (oder Sencha App Build spezifisch zu bauen).
Ich hoffe, dass diese Erklärung für Sie nützlich sein kann. Dank
Vielen Dank für Ihre ausführliche Antwort. Wir haben herausgefunden, was passiert. Wir haben nur das "moderne" Toolkit benutzt und wir haben ** nicht ** eines unserer eigenen als "mobiles" erstellt, das du erwähnt hast. Eine wichtige Sache, um Abstürze zu vermeiden, besteht darin, alle Ansichten aus dem klassischen Ordner in den modernen Ordner zu erstellen, auch wenn Sie sie nicht auf mobilen Geräten verwenden. Wenn Sie sowohl Desktop als auch Mobile verwenden, brauchen Sie 'sencha app watch modern', um sowohl klassisch als auch modern ** zu testen, aber Sie benötigen' sencha app build' um beide zu bauen (oder 'sencha app build' um spezifisch zu bauen). Also, wenn Sie Ihre Antwort bearbeiten können .. –
Danke George für Ihre Kommentare. Ich stimme dir zu, alle Ansichten in modern und klassisch zu erstellen. Wenn ich universelle Anwendungen entwickle, führe ich zwei Instanzen von Sencha Cmd - Sencha App Uhr modern und Sencha App Uhr Klassiker. Wenn ich etwas ändere, wird die universelle App aktualisiert. Ich verstehe nicht, wo ich meine Antwort bearbeite. Hilf mir bitte zu bearbeiten. –
Ich meinte nur deine Antwort zu editieren, um die in den Kommentaren geschriebenen Dinge strukturierter einzubinden. Vielen Dank –