Ionic-framework: Beschleunigen Sie das anfängliche Laden

Erstellt am 6. Juni 2016  ·  159Kommentare  ·  Quelle: ionic-team/ionic-framework

Wir entwickeln eine App, die teilweise nativ und teilweise hybrid ist.
Wir öffnen die Cordova-Aktivität, wenn der Benutzer auf ein Menüelement klickt, und beenden die Aktivität, wenn der Benutzer zurückklickt.
Das Problem bei diesem Ansatz ist, dass das erstmalige Rendern auf dem Bildschirm eine Weile dauert. Wir hosten alle Ressourcendateien im Assets-Ordner, sodass das Zwischenspeichern nicht viel Sinn macht. Gibt es eine progressive Möglichkeit, die Anwendung zu laden?

Hilfreichster Kommentar

Alle,

Wir testen dies jetzt intern intensiv. Wir haben diese Woche einige große Fortschritte gemacht.

Vielen Dank,
Dan

Alle 159 Kommentare

Hallo @dheran . Die Startzeit ist etwas, an dem wir hart arbeiten, während wir sprechen (: . Wir arbeiten derzeit an einer neuen Build-Kette, die Ionic-Apps viel kleiner macht und die Offline-Vorlagenkompilierung einschließt. Mit diesen beiden Verbesserungen können Sie erwarten sehe eine enorme Verbesserung der Startzeit. Ich würde mich in StackOverflow oder unseren Foren (forum.ionicframework.com) nach Möglichkeiten erkundigen, wie man eine Webansicht "vorabladen" kann, die sich in einer nativen App befindet. Danke, dass Sie Ionic verwenden!

@jgw96 Hey, gibt es eine bestehende Funktionsanfrage oder ein Problem? Damit es nach der Implementierung einfach zu verfolgen und zu verwenden ist.

@dheran Gute Frage! Im Moment gibt es dafür keine guten Tracking-Probleme, da dies noch in einem sehr frühen Stadium ist, aber es hat für uns eine hohe Priorität und das ionic-cli-Team macht große Fortschritte. Sobald dies weiter fortgeschritten ist, werde ich versuchen, dieses Problem mit unseren Fortschritten zu aktualisieren, damit Sie wissen, was Sie erwartet (:

@jgw96 , warum dann nicht geöffnet lassen, bis?

@jgw96 Das Entfernen von ungenutztem CSS während des Build-Prozesses wird auch viel dazu beitragen

Ich verwende ionic2, um eine mobile Website zu erstellen. Wenn ich dann den Android 4.4-Browser verwende, ist es sehr langsam. Habt ihr gute Vorschläge für mich?
Website: https://zhaoxie.net/static/weixin/index.html
image

Cordova CLI: 6.1.1
Ionic Framework-Version: 2.0.0-beta.6
Ionic CLI-Version: 2.0.0-beta.31
Ionic App Lib Version: 2.0.0-beta.17
iOS-Bereitstellungsversion: 1.8.5
iOS-Sim-Version: 5.0.6
Betriebssystem: Mac OS X El Capitan
Knotenversion: v5.3.0
Xcode-Version: Xcode 7.2 Build-Version 7C68

@jgw96 eine Idee, welche Version diese Funktion erhalten wird?

Hey @dheran ! Gute Frage! Wir haben seit einigen Tagen eine funktionierende Implementierung von Treeshaking mit Webpack 2 und arbeiten noch daran, den Offline-Compiler zu verwenden. Nachdem ich heute die Besprechungsnotizen des Angular-Teams gelesen habe, sieht es so aus, als würden sie den Offline-Template-Compiler nicht vor Angular 2 rc 4 als "stable" bezeichnen, aber ich hoffe, dass wir bis dahin eine Implementierung des Offline-Compilers haben können.

@ jgw96 Anscheinend haben sie das Problem bereits geschlossen. https://github.com/angular/angular/issues/3605
und Angular RC 4 ist fast 33% abgeschlossen (in Meilenstein).
Können wir den neuen Compiler in ionic Beta 10 oder 11 erwarten?

Hallo @dheran , wir arbeiten aktiv daran. Dies hat für uns eine extrem hohe Priorität, also seien Sie beruhigt, da wir wissen, dass wir es so schnell wie möglich erledigen werden.

Vielen Dank,
Dan

@danbucholtz können Sie mir bitte eine vorübergehende

Hallo @dheran ,

Entschuldigung, wir bieten derzeit keine Problemumgehungen an, da wir keine haben ahmen nach, was sie tun. Dies ist extrem wichtig für uns, um so schnell wie möglich in den Build-Prozess einzusteigen, aber es ist einfach noch nicht fertig.

Vielen Dank,
Dan

+1

Wir können bis rc4 warten, aber bitte halten Sie die Kompilierung der Offline-Vorlage mit hoher Priorität. Zu Ihrer Information, die anfängliche Zeit für unsere App beträgt etwa 8 Sekunden, aber die anfängliche Zeit für andere native Apps beträgt etwa 1-4 Sekunden. Wir müssen die Anfangszeit wirklich verkürzen.

Abschließend danke für die Arbeit.

@grapemix Seine definitiv hohe Priorität! Wir arbeiten ständig mit dem Angular-Team zusammen, um die Offline-Vorlagenkompilierung mit Ionic zusammen mit Tree-Shaking und aggressiver Minimierung zu erreichen, damit wir unsere durchschnittliche App-Größe viel kleiner machen können. Wie oben erwähnt gibt es einige Änderungen an Angular, auf die wir gerade warten, aber es wird definitiv getan (:

+1

+1

@jgw96 @danbucholtz Leute, irgendwelche Fortschritte dabei? Können wir in Beta 11 einen Fix bekommen?

+1

In welchem ​​Repository verfolgt ihr das?
Ich denke, ich kann in Bezug auf Webpack ein wenig helfen

@prijindal ,

Ich glaube, @jthoms1 macht die Arbeit an diesem Zweig.
https://github.com/driftyco/ionic/tree/adding-offline-template-compiling

Vielen Dank,
Dan

Hallo @jthoms1 , werden Änderungen vor Beta 11 mit dem Master zusammengeführt?

Ja, ich warte auch auf das Offline-Kompilieren, aber jetzt kann etwas gemacht werden.
Unsere Website befindet sich vollständig auf Ionic2 Beta.8
http://m.sherpadesk.com/

Ich habe auch eine Hybrid-App und habe einige Optimierungen vorgenommen und eine Ladezeit von 417 ms erreicht .
Siehe Bericht https://tools.pingdom.com/#!/DW6Td/http://m.sherpadesk.com/17
Außerdem verringerte sich die Site-Größe um 600 % (3 Mb -> 500 Kb)
Reaktionsgeschwindigkeit der Benutzerinteraktion um 2000 % verbessert

Gute Empfehlungen: http://blog.angular-university.io/how-to-run-angular-2-in-production-today/36

Ich werde alle meine Schluckeinstellungen und den Link zum Appstore hier posten: http://www.sherpadesk.com/blog/

@Evgeniynet sehr nett.

Ein paar Fragen:

  1. Bei der Installation der App öffnet sie sich sofort, aber die. Ich bekomme dein Profil geladen und es scheint 5 Sekunden lang hängen zu bleiben. Wieso den?
  2. Wie haben Sie die Ladezeit ohne Offline-Kompilierung optimiert?
  3. Ist Ihre mobile Website ionic2?
  4. Ist Ihre Desktop-Website ionic2?

Ich überlege, ionic 2 zu verwenden, aber das einzige, was mich davon abhält, das Webapp-Projekt + das mobile ionic2-Projekt zu verwalten.

Vielen Dank

@evgeniynet wird es vom Knoten bedient?
Es scheint vorkompiliert zu sein. In den meisten Fällen handelt es sich jedoch um das Hosten des Gerätespeichers (Phonegap-Anwendung).

@dheran , nein, es wird auf der Azure-Website gehostet, nur einfache HTML- und js-Dateien, die von der ionic 2 gulp Build-Aufgabe erstellt wurden.

@justme1

  1. ja, ich habe einen Trick mit http://www.bennadel.com/blog/3105-creating-a-pre-bootstrap-loading-screen-in-angular-2-rc-1.htm gemacht

Ist Ihre mobile Website ionic2?
Jawohl

Ist Ihre Desktop-Website ionic2?
Jawohl

Meine iOS-App lädt nur die Website in der Webansicht, mehr nicht.

nur eine Codebasis für iOS, Android und Windows Phone, Web-App, Chrome-Erweiterung und sogar eine Apple iWatch

Ich habe ein spezielles Flag gesetzt, um das Laden von Cordova zu stoppen, um den Fehler "gap://" zu vermeiden

Ich schreibe eine vollständige Anleitung dazu auf http://www.sherpadesk.com/blog/

@evgeniynet

  1. Ist dies der Fall dann scheint es nicht wirklich schneller zu laden :-)

Zu einer Codebasis:

Soweit ich verstanden habe, soll ionic2 nicht als Desktop-Website verwendet werden, da es von Browsern vollständig unterstützt wird. Stört Sie dieses Problem nicht?

Rechnen Sie mit mir, wenn Sie auf diese Funktion warten.

Hallo, irgendwelche Updates dazu?
Ich verwende Version:
Cordova CLI: 6.3.0
Ionic Framework-Version: 2.0.0-beta.10
Ionic CLI-Version: 2.0.0-beta.35
Ionic App Lib Version: 2.0.0-beta.19
LG Nexus 5 (OS 6.0)
Sidemenu-Tutorial-App v1 wird in 3 Sekunden geladen
--v2 Seitenmenü laden in 6 Sekunden

Die Funktion zum vorzeitigen Kompilieren kommt in Beta 12. Dies wird das anfängliche Laden erheblich beschleunigen und die Größe des Pakets erheblich reduzieren. Wir sind dabei, Beta 11 zu starten, also ist dies als nächstes dran. Dies ist unsere Priorität Nummer 1. Wir haben es an einem Zweig arbeiten, also sind wir in der Nähe.

Vielen Dank,
Dan

es ist zum ersten Mal wirklich langsam. warte auf die optimierung

@danbucholtz oder irgendjemand fügt dieses Problem zum Beta-12-Meilenstein hinzu

@danbucholtz können wir den
Bitte geben Sie uns eine schnelle Freigabe..

@dheran ,

Diese Änderung erfordert Angular RC 5, das noch nicht veröffentlicht wurde. Wir werden es veröffentlichen, sobald Beta 12 bereit ist. Wir werden nicht veröffentlichen, bis es einsatzbereit ist.

Eine gute kurzfristige Lösung könnte der Wechsel zur Verwendung von Inline-Vorlagen sein, wie unten gezeigt. Das geht kurzfristig schneller. Probieren Sie es aus und sehen Sie, ob es die Dinge für Sie etwas beschleunigt.

@Component({
   template: `
   <ion-content>
      <div>content</div>
   </ion-content>
  `
})
export MyClass {
}

Vielen Dank,
Dan

@danbucholtz Inline hilft tatsächlich sehr.
Ich habe einen kleinen Code in meine gulpfile.js geschrieben, der dies während des Builds tut.

gulp.task('build', ['build:prequel'], function(done) {
  glob('./www/build/**/*.html', function(e,files) {
    var indexPath = './www/build/js/app.bundle.js'
    var js = fs.readFileSync(indexPath, 'utf8');

    async.eachSeries(files, function(file, callback) {
      filename = file.substr(6)
      var html = fs.readFileSync(file, 'utf8');
      js = js.replace("templateUrl: '" + filename + "'", "template: `" + html +"`")
      callback()
    }, function() {
      fs.writeFile(indexPath, js, 'utf8', function(err, data) {
        done()
      });
    })
  })
})

Ja, das ist nicht sauber und nicht der beste Weg, dies zu tun.
Aber es funktioniert wie ein Zauber.

PS: Inlining hilft beim ersten Start nicht viel, vielleicht höchstens 0,5 Sekunden. Aber es macht es sicherer zwischen Seitenübergängen oder wenn Sie eine Komponente dynamisch laden.

@prijindal , schön! Das ist toll! Mit dem AoT-Compiler, der in Beta 12 erscheint, spielt es keine Rolle, ob es sich bei der Vorlage um eine Inline- oder eine externe Datei handelt. Es wird im Rahmen des Build-Prozesses in reines JS konvertiert. Schöne Arbeit, das herauszufinden!

Vielen Dank,
Dan

Hallo, ich habe die Angular-Seite überprüft und sehe, dass RC5 veröffentlicht wurde. Was meinst du mit "bis rc5 raus"?

@kLkA , @dheran Geben Sie dem Ionic-Team eine Pause - sie versuchen sicherlich, Betas so schnell wie möglich herauszubringen , und jeden Tag pingen hilft ihnen in keiner Weise. Sie arbeiten direkt mit Google auf Angular zusammen und sollten auf jeden Fall wissen, dass Angular2 rc5 draußen ist.

Ja, und Google hat rc 5 wie vor wenigen Stunden veröffentlicht.
Ich bin mir sicher, dass sie sich der Veröffentlichung bewusst sind und etwas ausarbeiten, um es in Beta 12 zu bringen

@astec wirklich? hoffe du bist nicht in unserer lage.
Dieses Problem verhindert, dass wir live gehen. Sind Sie in dieser Position?
Wenn Sie meinen Kommentar aufmerksam lesen. Ich habe das Ionic-Team gefragt, ob sie in der Lage sind, den AoT-Patch (Danbucholtz sagte, dass er in einem separaten Zweig durchgeführt wurde) als Schnellveröffentlichung anstelle von AoT-Patch + anderen nicht prioritären Fehlerbehebungen zu veröffentlichen. Wenn dies für Sie keine Priorität hat und unsere Kommentare Sie spammen, schlage ich vor, sich abzumelden.

@dheran , ich war in einer frühen Betaphase an deiner Stelle und dachte, es ist fast da und meine App ist fast bereit für die Veröffentlichung. Aber ich wurde müde, mit API/Verhaltensänderungen zu kämpfen. Seitdem hat Parse.com angekündigt, dass sie geschlossen werden und ich mein Authentifizierungssystem neu schreiben muss. Also beschloss ich, es beiseite zu legen und wechselte dazu, einen Telegram+FB-Bot für meine App zu entwickeln. Ich habe Mitgefühl für Ihre Situation, aber das bekommen Sie, wenn Sie auf einen Beta-Wagen springen. Wenn Sie eine garantierte Timeline wünschen, können Sie Ionic1 oder eine andere Nicht-Beta-Plattform wählen. Ich selbst werde die Ionic2-App wieder entwickeln, sobald wir den ersten Release Candidate haben. Oder zumindest Beta12. Entweder überschätze ich die Komplexität der "Ahead-of-Time-Compilierung" oder Sie unterschätzen sie. Jedenfalls werde ich hier niemandem mehr Geduld beibringen - bitte nehmt meine Entschuldigung an und viel Glück bei euren Bemühungen.

Dies ist nicht der Thread über das Posten Ihrer Bedürfnisse und Erfahrungen. Bitte bleiben Sie beim Thema oder lassen Sie es so wie es ist. 👍

Ich freue mich auf ionic2 beta12. Alles Gute Team :)

Hey @dheran! Es tut mir leid und ich spüre definitiv Ihre Frustration. Wir haben so hart wie möglich daran gearbeitet, dass dies funktioniert und ich kann glücklich sagen, dass wir jetzt sehr nah dran sind und es zusammen mit einigen anderen kritischen Fehlern in der Beta.12-Version sein wird behebt. Wir hätten dies gerne früher veröffentlicht, aber wir haben in den letzten Wochen mit angle zusammengearbeitet, um einige Fehler an deren Ende zu beheben, die dazu führten, dass aot-compilieren nicht funktionierte. Es hat auch einige Zeit gedauert, bis wir erstens Ionic für die neue aot-Kompilierung optimiert und zweitens alle Änderungen vorgenommen haben, die für die Arbeit mit Angular 2 RC5 erforderlich sind. Der Grund, warum wir Ihnen nicht empfehlen können, den oben erwähnten Branch zu verwenden, liegt darin, dass die Aufgaben zum eigentlichen Erstellen Ihrer App noch nicht vollständig abgeschlossen sind. Obwohl Sie es technisch verwenden könnten, wären Sie nicht in der Lage, Ihre App zu erstellen. Wir arbeiten schon seit einiger Zeit mit einer Vorabversion von Angular 2 rc5, aber wir müssen warten, bis diese Veröffentlichung wie alle anderen veröffentlicht wird, bevor wir uns wohl fühlen, eine Veröffentlichung zu veröffentlichen, die sie enthält. Wir befinden uns noch in der Beta-Phase, was bedeutet, dass daran gearbeitet wird und sich ändern wird, und das ist nur der Name des Spiels, wenn es um Beta-Software geht. Würde es Ihnen schließlich etwas ausmachen, bei der Interaktion mit anderen in der Community unseren Verhaltenskodex im Hinterkopf zu behalten? Vielen Dank für die Verwendung von Ionic! Wenn Sie jemals sehen möchten, woran gearbeitet wurde, können Sie sich unsere Besprechungsnotizen (die auch auf Twitter geteilt werden) und unsere Roadmap ansehen .

Ich bin mir nicht sicher, aber vielleicht sind die wichtigsten Fortschritte bei der Beschleunigung von ionic im ngmodule-Zweig zu verzeichnen . Liege ich falsch?

Guter Ort @msaelices ! Tatsächlich wird der Großteil der Framework-Seite derzeit hier https://github.com/driftyco/ionic/commits/deeplinks-ngmodule erledigt. Vielen Dank!

Für mich ist das Problem nicht das anfängliche Laden (wie beim Bootstraping), sondern jedes Mal, wenn der Benutzer auf eine Seite ging, die er nicht besucht hat.

Während ich darauf wartete, dass dieser AoT-Compiler zu ionic kommt, habe ich einen _splash_-Bildschirm (nur eine ionische Seite mit dem App-Logo darauf) namens TemplatePrecompiler hinzugefügt, der alle Komponenten (beliebige @Component meiner App, egal ob es sich um eine ionische Seite oder eine Komponente handelt) und kompiliert sie nacheinander zur Laufzeit. Sobald das erledigt ist, leite ich zur Startseite weiter.
Das ist wirklich nützlich, denn der Benutzer sieht nur einen Splashscreen, der eine Weile dauert (~5 Sekunden für meine App), aber wenn alles geladen ist, gehen alle Bildschirme schnell. Und Sie können sogar einen Fortschrittsbalken auf diesem Splashscreen platzieren.

Ich habe hier eine Zusammenfassung erstellt: https://gist.github.com/voliva/eb0242743661000896054601af72d1fd

Um allen ein Update zu geben, arbeiten wir aktiv daran. Es war eine größere Anstrengung, als wir erwartet hatten, aber wir kommen voran und kommen näher. Wir haben einen Branch , der dem Master fast zweihundert Commits voraus ist und der alle für AoT erforderlichen Änderungen enthält 😄

Das kommt bald. Wir sind an einem Punkt angelangt, an dem wir beginnen, dies intern zu testen. Wir sind noch nicht bereit für öffentliche Tests. Dies hat für uns höchste Priorität und das gesamte Framework-Team arbeitet hart daran, es richtig zu machen. Noch keine Zeitleiste, aber ich kann sagen, dass wir es schaffen, und ich werde diesen Thread weiterhin mit neuen Informationen aktualisieren, sobald wir sie haben.

Vielen Dank,
Dan

+1

und meine app.bundle.js ist 3,8 MB zu groß...

+1
Wann wird Beta12 veröffentlicht? @danbucholtz

Wird dies im Hinblick auf den Ansatz von einzufügen , dieselbe Optimierungsstufe sein, die von der Offline-Kompilierung erwartet wird?
Ich habe diesen Ansatz ausprobiert, er spart die Zeit der HTTP-Anfragen zum Abrufen der Vorlage, aber es gibt immer noch eine Verzögerung beim ersten Laden der Ansicht. Ich nehme an, dies geschieht, weil angle den benutzerdefinierten HTML-Code der Vorlagen beim ersten Laden der Ansicht kompiliert.

Ich bin recht neu in Sachen Winkel und würde mich freuen, wenn mir das jemand erklären könnte.

@moatazelgamal ,

Die AoT-Kompilierung wird zu einer erheblichen Beschleunigung führen. Es dauert mehrere Sekunden, um den Compiler für eine typische App im Voraus auszuführen. Dies ist also Zeit, die von der Laufzeit abgespart wird. Es ist schwer zu sagen, wie viel schneller es für eine typische App sein wird. Wir haben es nur an einem sehr einfachen Beispiel getestet und die Startzeit ging von ~3 Sekunden auf ~300ms. Wir haben nicht genügend Tests durchgeführt, um zu wissen, welche Zahlen eine typische App sehen wird, aber sie wird mit Sicherheit schneller sein.

Die Änderungen für AoT sind für das Framework in Kraft (wir denken ... so weit so gut 😄 ) und jetzt gehen wir dazu über, den Build-Prozess A) einfach, B) skalierbar und C) so schnell wie möglich zu gestalten. Das Team und ich arbeiten in diesem Repo gemeinsam

Erwarten Sie, bald mehr zu hören.

Vielen Dank,
Dan

@moatazelgamal mein Ansatz ist keine Offline-Kompilierung, sondern einfach das Inlining von Vorlagen.
Die Offline-Kompilierung wird das anfängliche Laden viel schneller machen.

Alle,

Wir testen dies jetzt intern intensiv. Wir haben diese Woche einige große Fortschritte gemacht.

Vielen Dank,
Dan

Hallo,
Ich sehe, dass Ionic2 RC0 veröffentlicht wurde. Ist dies die erwartete Beta12? Das Changelog von RC0 erwähnte nichts über das Kompilieren von AOT. Ich denke, dieses Feature ist zu schön, um es im Changelog zu verpassen :)

Es wurde veröffentlicht". Wir füllen gerade noch die Lücken 😄 mit Changelog usw. Erwartet heute noch offizielle Details. Wir hatten gestern technische Schwierigkeiten, also sind wir etwas zurückgeblieben.

Vielen Dank,
Dan

Hallo Ionic-Team! Danke für deine harte Arbeit!

So aufgeregt darüber. Ich kann nicht aufhören zu twittern, seit ich das erste Mal davon gelesen habe.
Kudos ionisches Team.

Am Do, 29. September 2016, 04:19 schrieb gisinaction [email protected] :

Hallo Ionic-Team! Danke für deine harte Arbeit!


Sie erhalten dies, weil Sie diesen Thread abonniert haben.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/driftyco/ionic/issues/6776#issuecomment -250346182,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AAxEjznTYrcKZKFD2rElIqKkWrGIvvUrks5quxIvgaJpZM4Iuokt
.

Erstmal vielen Dank für diesen tollen Fortschritt!
Ich habe die neue Version getestet und das anfängliche Laden fühlt sich jetzt schneller an.

Ich habe es auch in einem Android 4.4.4 mit niedriger Spezifikation getestet, um den Leistungsunterschied besser zu spüren und es mit Ionic 1 zu vergleichen.
Mit Ionic 2-rc0 finde ich diese ungefähren Ergebnisse:

| Projekt | Kaltstart | Hotboot |
| --- | --- | --- |
| ionic1-tabs | 4,5 s | 3 s |
| ionic2-tabs | 5 s | 3,5 s |
| ionic1-Seitenmenü | 5 s | 3,5 s |
| ionic2-Seitenmenü | 5 s | 3,5 s |
| Uhr (native App) | 1 s | <1 s |

  • Projekte, die mit diesen Befehlen erstellt wurden:
ionic start myTabs1 tabs
ionic start myTabs2 tabs --v2
ionic start mySidemenu1 sidemenu
ionic start mySidemenu2 sidemenu --v2

Obwohl es sich bei den Projekten nicht um exakt dieselben Implementierungen handelt, bieten sie uns einen Ausgangspunkt für einen Vergleich.

Selbst mit ionic 2-rc0 benötigen die Basisprojekte etwa 5 Sekunden zum Laden im kalten Zustand und etwa 3,5 Sekunden, wenn es bereits zuvor geladen wurde. Dies sind ungefähr die gleichen Zeiten, die ich bei Ionic 1-Versionen finde.
Der Blogbeitrag, der Ionic2 RC0 vorstellt, enthält ein animiertes Gif, das die aktuelle Ladezeit zeigt. Etwa 3 Sekunden.

Wissen wir, wo die verbleibenden Sekunden verbracht werden? (zB Starten der Javascript-Engine/Webansicht, Cordova-Plugins, Laden von Angular 2, ...)?

Können diese Sekunden optimiert werden, um ein Erlebnis näher an nativen Apps zu haben?

@SynerG , tolle Infos. Ich bin gerade mit einigen anderen Sachen überhäuft, aber wir werden bald mehr Feedback haben. Danke, dass du das zusammengestellt hast!

Vielen Dank,
Dan

Ich habe ein neues ionic2 rc-0 Projekt mit Seitenmenü erstellt. Ich habe ionic serve --lab verwendet, und wenn ich auf das Symbol auf der linken Seite der Kopfleiste klicke, wird das Menü nicht angezeigt. nur wenn ich gleite oder auf die Menüschaltfläche klicke, wird sie verschoben

@danbucholtz Ich wollte dem Ionic-Team für die Veröffentlichung von RC0 danken! Auch wenn ich aufgrund all der Änderungen einige Zeit investieren musste, um meine App zu migrieren, hat sich die Startzeit meiner App deutlich verbessert! Auf einem 3 Jahre alten Samsung Galaxy 4 betrug die Startzeit mit Beta 11 beispielsweise ~6 Sekunden, was RC0 auf ~3 Sekunden reduzierte! Es ist eine großartige Verbesserung, so gut gemacht :)

@abhayastudios , w00t! Vielen Dank!

Wir haben auch weitere Verbesserungen und Optimierungen auf Lager!

Vielen Dank,
Dan

Auch wir haben unsere Ladezeit um etwa 50 % verkürzt. Tolle Arbeit Jungs. Es macht wirklich Spaß, mit diesem Framework zu arbeiten.

Ich weiß, dass dies nicht hilft, aber ich bin erst kürzlich in ionic eingetaucht und verwende 2.0.0-rc.2

@geocine Mir ist das Gleiche aufgefallen, in einer älteren v1-App ist die Startzeit sehr gut, aber während Ionic v2 eine viel schönere Programmierumgebung bietet, sind die Startzeiten in meiner App sehr langsam (>5 Sekunden im Release-Build auf einem relativ schnelles Gerät mit Android 6.0). Macht der Webpack-Build Tree Shaking?

Wenn das Laden wirklich lange dauert, gibt es vielleicht eine Möglichkeit, zumindest einen Splashscreen anzuzeigen, den ich während des Ladens in weniger als einer Sekunde anzeigen kann?

@geocine Aus diesem Grund verwenden Sie normalerweise das Cordova-Splash-Screen-Plugin (https://github.com/apache/cordova-plugin-splashscreen) und verstecken es auf DeviceReady.

Gibt es eine einfache Möglichkeit, die Startzeit der App zu profilieren? Ich verwende den Chrome-Remote-Debugger, um die App zu profilieren. Dadurch kann ich jedoch erst eine Verbindung zur App herstellen, nachdem sie bereits initialisiert wurde (damit kann ich den Start nicht profilieren) und sie wird geschlossen, wenn ich die App beende, sodass ich sie nicht neu starten und die Profilierung durchführen kann auf diese Weise starten.

Ich frage das, weil ich Probleme mit der Startzeit meiner App auf Android habe, die mehr als 5 Sekunden beträgt.
Selbst wenn ich die einfache Ionic 2-Tutorial-App verwende, startet sie auf einem relativ performanten Gerät (Sony Z3 compact, 6.0.1) erst nach 4-5 Sekunden.
Das ist wirklich langsam (meine alte Ionic 1 App mit ein paar Plugins braucht < 3 Sekunden zum Starten).

Gibt es Pläne, die Startzeiten der Ionic 2-App (deutlich) zu verkürzen?
Mit Ionic 2 zu entwickeln ist toll, aber ich befürchte, dass ich sonst auf ein anderes Framework umsteigen muss :-(

Gibt es Pläne, Unterstützung für Lazy Loading hinzuzufügen, könnte dies auch hilfreich sein, um die anfängliche Ladezeit zu verkürzen. Angular-Cli, die Webpack verwendet, unterstützt jetzt Lazy Loading und mit AoT kann eine gut gestaltete Angular-App die Ladezeit erheblich reduzieren. Da Ionic auch Webpack verwendet, denke ich, dass dies auch für Ionic möglich ist.

dringender Bedarf für Lazy Loading.

Der ionic Team-Meeting-Doc sagte, dass sie an Treeshaking arbeiten , also wird dies wahrscheinlich die Bundle-Größe reduzieren und die Boot-Zeit etwas beschleunigen.

Baumschütteln ist großartig, aber es kann nur so viel bewirken. Lazy Loading ist ein wichtiges separates Anliegen, und bisher hat das ionic-Team laut Kommentaren, die ich in anderen Issues gesehen habe, kein großes Interesse daran bekundet (z. B. https://github.com/driftyco/ionic/issues/8102 ). Leider scheinen viele Leute zu denken, dass es nur in Web-Apps nützlich ist, obwohl es auch in mobilen Apps unglaublich nützlich sein kann.

@rob3c und andere,

Lazy Loading ist etwas, das wir uns ansehen und das wir gerne mehr erkunden würden. Erwarten Sie in den kommenden Monaten mehr zu diesem Thema zu hören.

Vielen Dank,
Dan

@danbucholtz ,
Suchen Sie über Lazy Loading hinaus andere Lösungen, die die Startzeit erheblich verkürzen könnten?

Dies ist derzeit der Hauptgrund, warum wir Ionic 2 nicht in neuen Projekten einsetzen.
Ich weiß nicht, ob Sie uns einige Informationen darüber mitteilen könnten, was im Gange ist.
Vielen Dank!

Nun, dies ist ein Problem mit Javascript im Allgemeinen und nicht spezifisch für ionisch. Es ist interessant zu sehen, was andere Frameworks dagegen tun. Zum Beispiel bin ich auf einen verwandten Artikel auf der Website eines "konkurrierenden" Frameworks gestoßen, der das sogenannte "Code-Caching" in der v8-Engine verwendet, um die Startleistung erheblich zu verbessern.

Die Startzeit hat sich deutlich verschlechtert, nachdem Angular 2 aufgrund von AoT auf Module umgestellt hat. In NativeScript, das auch Probleme mit langen Startzeiten hat, scheint es ohne Angular 2 in Ordnung zu sein (https://github.com/NativeScript/nativescript-cli/issues/371). Im Juni startete meine App relativ schnell, aber nachdem Ionic 2 auf eine neuere Version von Angular 2 umgestiegen ist, dauert es jetzt >= 5 Sekunden und das ist für die Produktion unbrauchbar. Sind Ihnen irgendwelche Verbesserungen von Angular 2 bekannt, die in Vorbereitung sind, um dies zu verbessern, oder sind Treeshaking und Lazy Loading die einzige Möglichkeit?

@Kobzol ,

Das ist seltsam, AoT führt definitiv zu einer deutlich schnelleren Startzeit (normalerweise gibt es sowieso sicher Randfälle).

@SynerG ,

Die Startzeit ist mit AoT ziemlich schnell. Sind Sie sicher, dass Sie mit AoT getestet haben? Unsere Bundle-Größe ist immer noch relativ groß und wir arbeiten daran, diese zu reduzieren. Es ist jedoch nicht ganz riesig, es sei denn, Sie importieren eine Reihe großer Bibliotheken. Oftmals werden kleine Bibliotheken aufgrund einer Reihe verschachtelter Abhängigkeiten riesig.

Vielen Dank,
Dan

Ich weiß nicht, ob ich etwas falsch mache, aber ich habe versucht, AOT-Prod-Builds der Ionic 2-Tutorial-Startervorlage sowohl mit Webpack als auch mit Rollup auszuführen, und es dauert > 5 Sekunden, um auf meinem Gerät zu starten (Sony Z3 Compact mit Android 6.0.1), wohingegen eine ältere Ionic 1-App in 3 Sekunden startet.
Der Start wurde in den letzten Monaten schlimmer, als Angular 2 auf das Modulsystem umgestellt hat (das gleiche passierte mit meiner nativescript-App, die nach dem Angular-Umstieg langsamer wurde). Vielleicht könnte Lazy Loading dabei helfen.

Hast du irgendwelche Benchmark-Zahlen, die ich zum Vergleich verwenden könnte?

5 Sekunden sind nicht so schlimm im Vergleich zu dem, was ich gesehen habe. Ich musste das Timeout-Limit in config.xml erhöhen, um sicherzustellen, dass es nicht zu einem Timeout kommt (Standard ist 20 Sekunden!).

Das war jedoch für ein langsameres 4.4-Gerät. Auf einem Sony Xperia E5 mit 6.0 sind es noch 10-15 Sekunden.

iPhone 7 plus dauert weniger als 2 Sekunden.

Wie groß sind Ihre Bündel? Verwenden Sie viele Bibliotheken von Drittanbietern?

Vielen Dank,
Dan

Hallo Dan!

Nichts zu verrücktes denke ich.

Meine Bundle-Größe mit Webpack und AoT beträgt 1,9 MB.

Deps in package.json

...
  "dependencies": {
    "@angular/common": "2.2.1",
    "@angular/compiler": "2.2.1",
    "@angular/compiler-cli": "2.2.1",
    "@angular/core": "2.2.1",
    "@angular/forms": "2.2.1",
    "@angular/http": "2.2.1",
    "@angular/platform-browser": "2.2.1",
    "@angular/platform-browser-dynamic": "2.2.1",
    "@angular/platform-server": "2.2.1",
    "@biesbjerg/ng2-translate-po-loader": "^0.1.3",
    "@ionic/app-scripts": "0.0.46",
    "@ionic/storage": "1.1.6",
    "@ngrx/core": "1.2.0",
    "@ngrx/effects": "2.0.0",
    "@ngrx/store": "2.2.1",
    "angular2-uuid": "1.1.0",
    "ionic-angular": "nightly",
    "ionic-native": "2.2.7",
    "ionicons": "3.0.0",
    "ng2-translate": "^4.1.0",
    "ngrx-store-freeze": "0.1.4",
    "ngrx-store-logger": "0.1.7",
    "pofile": "^1.0.2",
    "rxjs": "5.0.0-beta.12",
    "zone.js": "0.6.26"
  },
  "devDependencies": {
    "@biesbjerg/ng2-translate-extract": "^0.1.1",
    "@ionic/app-scripts": "0.0.46",
    "@types/cordova-plugin-media": "0.0.3",
    "del": "^2.2.2",
    "fs": "0.0.1-security",
    "path": "^0.12.7",
    "typescript": "2.0.10"
  },
  "cordovaPlugins": [
    "cordova-plugin-device",
    "cordova-plugin-console",
    "cordova-plugin-whitelist",
    "cordova-plugin-splashscreen",
    "cordova-plugin-statusbar",
    "ionic-plugin-keyboard",
    "cordova-plugin-globalization",
    "cordova-plugin-media",
    "cordova-plugin-file",
    "cordova-plugin-compat",
    {
      "locator": "https://github.com/EddyVerbruggen/cordova-plugin-backgroundaudio",
      "id": "nl.x-services.plugins.backgroundaudio"
    },
    "cordova-plugin-app-version",
    "cordova-plugin-x-socialsharing",
    {
      "locator": "https://github.com/biesbjerg/cordova-plugin-inapppurchase.git",
      "id": "cordova-plugin-inapppurchase"
    },
    {
      "locator": "https://github.com/driftyco/cordova-plugin-wkwebview-engine.git",
      "id": "cordova-plugin-wkwebview-engine"
    },
    "cordova-plugin-google-analytics",
    "cordova-sqlite-storage"
  ],
...

Hallo,
Ich möchte auch meine eigenen Informationen mit der Startzeit teilen.
Eigentlich setze ich mein altes Ionic V1 auf V2 um (alles von Grund auf neu zu schreiben).

Meine alte Anwendung mit Zebrastreifen startet (je nach Gerät) von 3 bis 4 Sekunden.
Die neue Anwendung benötigt 6 bis 7 Sekunden (7 Sekunden sind wahrscheinlicher).

Ich habe sowohl den RC3 als auch den Nightly Build ausprobiert (Ionic Framework Version: 2.0.0-rc.3-201612021933)

Package.json:
{
  "name": "ionic-hello-world",
  "author": "Ionic Framework",
  "homepage": "http://ionicframework.com/",
  "private": true,
  "scripts": {
    "ionic:build": "ionic-app-scripts build",
    "ionic:serve": "ionic-app-scripts serve"
  },
  "dependencies": {
    "@angular/common": "2.2.1",
    "@angular/compiler": "2.2.1",
    "@angular/compiler-cli": "2.2.1",
    "@angular/core": "2.2.1",
    "@angular/forms": "2.2.1",
    "@angular/http": "2.2.1",
    "@angular/platform-browser": "2.2.1",
    "@angular/platform-browser-dynamic": "2.2.1",
    "@angular/platform-server": "2.2.1",
    "@ionic/storage": "1.1.6",
    "ionic-angular": "^2.0.0-rc.3-201612021933",
    "ionic-native": "2.2.3",
    "ionicons": "3.0.0",
    "moment": "2.15.1",
    "rxjs": "5.0.0-beta.12",
    "zone.js": "0.6.26"
  },
  "devDependencies": {
    "@ionic/app-scripts": "0.0.44",
    "typescript": "2.0.9",
    "webpack-bundle-analyzer": "^1.5.3"
  },
  "cordovaPlugins": [
    "cordova-plugin-whitelist",
    "cordova-plugin-statusbar",
    "cordova-plugin-console",
    "cordova-plugin-device",
    "cordova-plugin-splashscreen",
    "ionic-plugin-keyboard"
  ],
  "cordovaPlatforms": [],
  "description": "o2: An Ionic project"
}

Mein Assets-Ordner (Plugins / Bilder von Drittanbietern) ist ca. 2,14 MB groß.
Ich verwende 6 verschiedene Plugins von Drittanbietern (jQuery, moment, hammer, jquery 3.1, fullcalendar, svg-panzoom, fontawesome).

Die APK-Größe beträgt: 6.58 MB
Entpackt ist dieses Paket: 15 MB.

Falten:

  • Inhalte : 10,1 MB
    -> www/assets : 2,93 MB
    -> www/build: 7,07 MB
    -> www/build/main.js: 3.003 MB
    -> www/build/main.js.map: 3.790 MB (wird das in der Produktion benötigt?)
  • Auflösung: 1,73 MB
  • class.dex: 3,07 MB
  • Ressourcen.arsx: 0.13 MB

Informationen zur Ionen-Version:

Your system information:
Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.3-201612021933
Ionic CLI Version: 2.1.13
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.44
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 8.1
Node Version: v6.9.1
Xcode version: Not installed

Vielleicht hilft es, wenn Sie @danbucholtz / @jgw96 mein aktuelles Projekt

Grüße
Graphefrucht

Ich glaube, Sourcemaps sollten für den Produktionsbuild deaktiviert werden. Angular CLi hat kürzlich eine Option zum Deaktivieren hinzugefügt https://github.com/angular/angular-cli/pull/3262

Graphefruit können Sie bitte auch die Anzahl der Komponenten und Anweisungen Ihrer App mitteilen?

Hallo @naveedahmed1 ,
Auf geht's:

  • Dienstleistungen: 10
  • Rohre: 3
  • Seiten: ~49
  • benutzerdefinierte Konfiguration: 1
  • Direktiven: 0 ( ;) )

Grüße
Graphefrucht

@naveedahmed1 Bei diesem Problem geht es darum, Sourcemaps nicht einzubinden, was meiner Meinung nach wahrscheinlich nicht die beste Idee in der Produktion ist. Externe Zuordnungsdateien für Produktionsressourcen können jedoch nützlich sein und den bereitgestellten Dateien nur einen kleinen Kommentar hinzufügen. Ich möchte auf jeden Fall in der Lage sein, externe Kartendateien für Produktions-Builds zu generieren.

@rob3c ,

Es wird konfigurierbar sein.

Vielen Dank,
Dan

@danbucholtz , wir brauchen wirklich eine Verbesserung der Bootzeit. Selbst die aus dem Play Store heruntergeladene ionic-conference-App dauert auf meinem Samsung Galaxy S4 Android Version 5.0.1 9-10 Sekunden.
Dies ist die App, die ich heruntergeladen habe --- https://play.google.com/store/apps/details?id=io.ionic.conferenceapp

Die Bootzeit für meine App mit wenigen Seiten beträgt auf demselben Telefon etwa 7-8 Sekunden.

Also habe ich versucht, mich über Developer-Tools anzuhängen und habe ein ziemlich gutes Timeline-Ergebnis erhalten.
Ich konnte nicht von Anfang an nachverfolgen, weil ich das Anhängen angehängt habe, aber Sie sehen, was passiert:
image

Das Compile-Skript dauert ca. 500ms, das Evalute-Skript von 0ms bis 5000ms.

Bei Bedarf @danbucholtz @jgw96 kann ich dir dazu die gespeicherte Timeline schicken.

Wie haben Sie es geschafft, das zu profilieren? Ich kann keine Verbindung zur App herstellen, bis sie vollständig gestartet ist.

Übrigens, ich weiß nicht, ob das ein gutes Ergebnis für Sie ist, aber für meinen Kunden sind > 5/6 Sekunden Startzeit leider nicht akzeptabel.

@Kobzol es ist kein gutes Ergebnis, die Seite braucht auch 7s ~.
Was ich gemacht habe: Öffnen Sie eine Seite, sehen Sie Ihre angehängte Geräteliste, starten Sie die App beim ersten Mal normal, öffnen Sie den "Inspektor"-Schalter zum Timeline-Tab
Schließe jetzt die App, und den Inspektor, starte jetzt die App neu, drücke inspizieren, drücke im Timeline-Tab ultraschnell den Aufnahme-Button ;)
Die ersten 1-2 Sekunden beim Start der App kann ich auch nicht anhängen, aber der Rest geht mit ein bisschen flinken Fingern.

Update: Mit Ionic1 habe ich eine Startup-Zeit von 3-4 Sekunden bekommen, was für mich ganz akzeptabel war

Baust du mit AoT ? Diese Zeiten scheinen langsam.

Vielen Dank,
Dan

@danbucholtz , In meinem Fall habe ich die ionic-conference-app aus dem Play Store heruntergeladen, ziemlich sicher, dass es AOT-kompiliert wäre, siehe meine Kommentare hier

@savanvadalia ,

Wir haben es aus dem Play Store geholt, weil es eigentlich nicht mit AoT gebündelt war. Unser Entwickler hat vor der Veröffentlichung einen Fehler gemacht. Wir werden bald eine neue Version veröffentlichen.

Können Sie die neueste Version der ionischen CLI und der App-Skripte installieren?

npm install -g ionic<strong i="9">@latest</strong>
npm install @ionic/app-scripts<strong i="10">@latest</strong>

Und dann ionic build android --prod --release ausführen? Dadurch erhalten Sie einen AoT-Build mit einem optimierten APK. Es sollte selbst auf einem langsamen Gerät viel schneller als 9 Sekunden starten.

Vielen Dank,
Dan

@Dan auf welchen Geräten

Hat es jemand geschafft, die neuesten App-Skripte zu installieren?

Update-Probleme:

Wenn ich versuche, die neuesten App-Skripte zu installieren, erhalte ich folgende Fehlermeldung: (Ich habe ionic

C:\Users\graphefruit\Documents\o3>npm install @ionic/app-scripts<strong i="9">@latest</strong>
ionic-hello-world@ C:\Users\graphefruit\Documents\o3
`-- @ionic/[email protected]  invalid
  +-- [email protected]
  +-- [email protected]
  `-- [email protected]
    +-- [email protected]
    `-- [email protected]

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\ch
okidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@
1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"
})

Danach habe ich ein komplett neues Projekt gestartet, ionic start o4 --v2 mit dem gleichen Fehler.

Vielleicht bekomme ich die Update-Mechanismen nicht - muss ich mich in den package.json packen oder den node_modules Ordner löschen?
Ich habe versucht, manuell eingestellte App-Skripte zu aktualisieren und npm install auszuführen, aber es ist abgestürzt.
Weder package.json wurde automatisch auf 0.47 aktualisiert

Also baue ich das Projekt jetzt mit 0.0.45 und --prod --release

_ Und die Startzeit war auch 7-8s. _

@danbucholtz Ich glaube, ich habe bis jetzt immer AOT verwendet, da ich mich erinnere, dass ich irgendwo ngfactory-Dateien gesehen habe. Ich bin derzeit immer noch etwas abweisend, auf eine neuere App-Skript-Version umzusteigen, da meine aktuelle Version 0.0.46 für mich einen anständigen Job gemacht hat. Aber wie auch immer, ich werde Ihr Wort nehmen und auf 0.0.47 aktualisieren und Sie wissen lassen, was passiert.

Savan

@danbucholtz Ich habe auf die neuesten ionic-app-scripts aktualisiert und diesen Fehler erhalten (siehe Screenshot unten).
Außerdem habe ich das in den Versionshinweisen erwähnte Upgrade-Verfahren strikt befolgt.

Könnten Sie bitte dabei helfen?

image

Vielen Dank
Savan

@graphefruit Ich hatte keine Probleme mit der Installation des neuesten ionic-cli und der Installation von npm-Paketen auf Projektebene. Ich hoffe, Sie befolgen das Freigabeverfahren hier . Aber, wie ich oben erwähnt habe, erhalte ich einen anderen Laufzeitfehler "Unerwarteter Wert 'undefiniert', der vom Modul 'AppModule' deklariert wurde".

Auch das Ausführen von 0.0.45 mit --prod --release wird nicht helfen. Dan bat darum, das mit der Version 0.0.47 ab 0.0.47 auszuführen, und ab dann wird dies der Weg sein, um einen Produktions-Build zu generieren. Bei früheren ionic-app-script-Versionen generierte ionic run android standardmäßig den Produktions-Build.

@savanvadalia Danke für dein Feedback, in der Prozedur wird nicht viel geschrieben.
Ich habe auch ein neues Projekt gestartet und zuvor npm install -g ionic@latest .
Sie haben also gerade beide Befehle in Ihrem Projektordner ausgeführt? Oder hast du etwas Bestimmtes gemacht?
Wie gesagt, ich habe auch schon versucht, den Ordner node_modules entfernen, und habe danach npm-install .
Aber meiner Meinung nach wird es nicht helfen, wenn package.json nicht auf die neueste App-Skript-Version aktualisiert wird. 0.47 aber wenn ich das manuell mache, stürzt es noch mehr ab...

Normalerweise posten sie im Changelog das neueste package.json und was zu aktualisieren ist.

Update, hat es endlich geschafft, es mit diesen Befehlen zu lösen:

npm install ionic-angular<strong i="18">@nightly</strong> --save
npm install @ionic/app-scripts<strong i="19">@latest</strong> --save-dev

Lassen Sie den Bau beginnen.

Build-Test

Also, Build ging durch, lustige Tatsache - ich musste "strg +c" drücken, weil ngc-started länger als 10 Minuten angezeigt wurde, danach wurde der Build fortgesetzt, das zweite Mal lief er ohne Probleme.

Größe: 9,2 MB
Das main.js.map existiert noch beim Bauen für die Produktion

Das Starten der App dauert 7-10 Sekunden (je nach Gerät), also sieht es so aus, als ob es schlimmer gelaufen ist als zuvor.
(Anmerkung 1, Anmerkung 2)

Auf einem Google Pixel XL betrug die Startzeit etwa 4,5 bis 5 Sekunden
Im Vergleich zu meiner alten App-Version ist es immer noch 1-2 Sekunden langsamer (3,5 Sekunden Startzeit)

Your system information:

Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.3-201612142137
Ionic CLI Version: 2.1.17
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.47
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 8.1
Node Version: v6.9.1
Xcode version: Not installed

Aktualisierung 2:

Ich habe gerade die Größen aus dem alten Build mit 0,45 und mit 0,47 verglichen - die main.js hat (fast ~10kb) die gleiche Größe - 3MB. - Weiß nicht, ob dies auch betroffen sein sollte.

Update3:

Das ist der beste Schnappschuss nach 15 Minuten Ladeversuch:
image

@danbucholtz Ich habe es geschafft, den Laufzeitfehler selbst zu lösen, er bezog sich auf eckige Fässer. Ich musste die Module mit vollständigem Pfad in der Datei app.module.ts referenzieren. Ich weiß jedoch nicht, warum es mit der neueren Skriptversion fehlgeschlagen ist!!

Nachdem ich den Fehler behoben und ionic run android --prod --release auf meinem Samsung Galaxy S4 Android Version 5.0.1 ausgeführt habe, dauert das anfängliche Laden jedoch immer noch 7-8 Sekunden. Es gibt keine Änderung an der Initiale, nachdem sie auf die neuesten ionic-app-scripts-Versionen aktualisiert wurde.

Wir müssen die anfängliche Ladezeit wirklich verbessern. Ich persönlich glaube nicht, dass die Telefon- und Android-Version, die ich verwende, relativ alt ist, um eine so lange Bootzeit zu haben. Ich würde gerne zwischen 3-4 Sekunden Bootzeit auf alten Mittelklasse-Telefonen liegen.


@graphefruit , ich habe 2 Schritte gemacht, die im Freigabeverfahren nicht erwähnt wurden
1) Ich habe die Datei package.json manuell geändert, um die Skriptversion in 0.0.47 zu ändern und dann npm install auszuführen.
2) Ich habe auch das .tmp-Verzeichnis entfernt, das gemäß den Versionshinweisen für den neuen Build-Prozess nicht gültig ist.

Abgesehen davon habe ich nur das Freigabeverfahren befolgt.

Betreibst du das neueste ionische cli? Können Sie überprüfen? npm install -g ionic@latest .

Können Sie npm run ionic:build --aot ausführen und überprüfen, ob ngc im Terminal ausgeführt wird? Wenn Sie ionic run android --prod --release ausführen, sehen Sie ngc im Terminal?

Vielen Dank,
Dan

Hallo @danbucholtz ,

ja, ich sehe ngc, wenn --prod --release ausgeführt wird.
Außerdem habe ich ionic @latest mehr als 4 Mal installiert ;) über cmd ohne Fehler - vielleicht müssen wir einige Einstellungen in der package.json ändern - sie wurden nicht von selbst aktualisiert.
Außerdem habe ich die Nightly installiert, um vielleicht einen Unterschied zu sehen.

Den anderen Befehl kann ich morgen früh ausführen.

Grüße
Graphefrucht

@danbucholtz

Ja, ich verwende das neueste ionic-cli (Bitte sehen Sie sich meine Workspace-Umgebungsinformationen am Ende an)
Ich sehe auch die ngc im Terminal in beiden Fällen, die Sie erwähnt haben, bitte sehen Sie sich den Screenshot für jeden von ihnen an
1) npm run ionic:build --aot
2) ionic run android --prod --release

1) Aot bauen
image

2) Produktions-Build während der Ausführung auf dem Gerät

image

Immer noch kein Unterschied in den anfänglichen Ladezeiten für mich welche 7-8 Sekunden 😞

cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.3
Ionic CLI Version: 2.1.17
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.47
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 10
Node Version: v6.9.1
Xcode version: Not installed

@savanvadalia lange Ladezeiten können spezifisch für Ihre App sein. Es wäre hilfreich, wenn Sie versuchen, Zahlen für eine Starter-App oder eine Ionenkonferenz-App bereitzustellen, damit die Zahlen vergleichbar sind.

Auch ein Upgrade auf Ionen-Winkel RC4 ist sinnvoll.

@danbucholtz Care, dieser Beitrag wird etwas länger:

Mein/Benutzerdefiniertes Projekt

npm run ionic:build --aot
image

ionic run android --prod --release
image

ionic build android --prod --release
image

Immer noch 10 Sekunden Ladezeit.

Starter-App

@astec Nach deiner
Und das gleiche hier gemacht.

  1. npm install -g ionic@latest
  2. ionic start o5 --v2
  3. ionic info
Your system information:

Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.4
Ionic CLI Version: 2.1.17
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.47
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 8.1
Node Version: v6.9.1
Xcode version: Not installed
  1. ionic platform add android
  2. npm run ionic:build --aot
    image
  3. ionic run android --prod --release
    image

  4. Mal:
    7.1 Hinweis 1 - Android 4.1 - Das Starter-Projekt dauerte etwa 5 bis 5,5 Sekunden
    7.2. Hinweis 2 - Android 7.0 (CM14) - Das Starterprojekt dauerte etwa 5,5 bis 6,5 Sekunden

Konferenz - App

Also beim nächsten Versuch habe ich mir die Starter-App heruntergeladen: https://github.com/driftyco/ionic-conference-app

  1. npm install
  2. ionic info
    image

-> Sieht so aus, als ob dieser nicht auf rc.4 ist, deswegen

  1. Ich habe die package.json wie im Changelog erwähnt geändert.
"dependencies": {
  "@angular/common": "2.2.1",
  "@angular/compiler": "2.2.1",
  "@angular/compiler-cli": "2.2.1",
  "@angular/core": "2.2.1",
  "@angular/forms": "2.2.1",
  "@angular/http": "2.2.1",
  "@angular/platform-browser": "2.2.1",
  "@angular/platform-browser-dynamic": "2.2.1",
  "@angular/platform-server": "2.2.1",
  "@ionic/storage": "1.1.6",
  "ionic-angular": "2.0.0-rc.4",
  "ionic-native": "2.2.11",
  "ionicons": "3.0.0",
  "rxjs": "5.0.0-beta.12",
  "zone.js": "0.6.26"
},
"devDependencies": {
  "@ionic/app-scripts": "0.0.47",
  "typescript": "2.0.9"
}
  1. gelöscht node_modules
  2. npm install
  3. ionic info
    image
  4. ionic platform add android
  5. npm run ionic:build --aot
    image
  6. ionic run android --prod --release
    image
  7. ionic build android --prod --release
    image
  8. Startzeiten
    11.1 Hinweis 1 – Android 4.1 – 7 – 8s
    11.2 Hinweis 2 - Android 7 (CM 14) - 7 - 8,5 s

Die Zeit wurde durch "klicken Sie auf das App-Symbol" gemessen, bis der Bildschirm mit Inhalten erschien
Selbst die Konferenz-App mit dem neuesten Release benötigt also 7-8 Sekunden, ist also kein Custom-Release-Projekt.
Trotzdem ist die Konferenz-App noch sehr klein ohne große Internetaktivitäten oder HTML-5-Dateisystem.

Hoffe das hilft.
Grüße
Graphefrucht

@jgw96 , können Sie das oben

Vielen Dank,
Dan

FWIW Ich habe Sony Compact Z3, das ist nicht wirklich alt und die Zeiten sind auf Android 6.x ziemlich gleich.

@jgw96 @danbucholtz Ich habe es jetzt auch auf meinem Google Pixel installiert - Startzeit der Konferenz-App - dauerte 3,5 bis 4 Sekunden.
Fun Fact: Ich hatte 10-mal Startzeiten auf 8-10 Sekunden - dann habe ich die App entfernt und wieder installiert, und die Zeit ging wieder auf 3,5 bis 4 Sekunden zurück.

@graphefruit ja, aber eine Neuinstallation kann nicht der richtige Weg sein. ;-)
Interessant (Profiling) wäre, wofür so viel Zeit aufgewendet wird und wie schnell andere (Angular-)Frameworks (Ionic 1, OnsenUI etc.) eine einfache "Hallo Welt"-App auf demselben Gerät starten.
Die Startzeit der RC4 conf App auf meinem (nicht zu alten) Moto G2 beträgt ca. 6 Sek. :-/

@mpaland Das ist wahr, es wird nicht der richtige Weg sein, aber manchmal ist es der beste Weg, alle Informationen
Wie ich bereits in einigen Beiträgen erwähnt habe - ich portiere meine Ionic1-App auf Ionic2, gab es eine Startzeit von 3 bis max. 4 Sekunden.
Das portierte Projekt dauert auf demselben Gerät 7-8 Sekunden.

HTC One M8 (Android 6.0 - Vanille)

Also nach Ihrem Vorschlag habe ich ein Ionic1-Projekt installiert:

  1. ionic start myproject
  2. ionic platform add android
  3. ionic build android
  4. Ionic1 - Die Startzeit auf dem HTC One M8 (Android 6.0) betrug etwa 2,5 Sekunden.
  5. Ionic 2 - Konferenz-App - Startzeit: 5 Sekunden
  6. Ionic 2- Starter App - Startzeit: 4 Sekunden
  7. Ionic 1 - Mein benutzerdefiniertes Projekt: 4 Sekunden
  8. Ionic2 - Mein benutzerdefiniertes Projekt: 7 Sek.

Schock! - Ignoriere diesen Satz.

Selbst mit der Starter-App in ionic 2 beträgt der Unterschied also noch etwa 1,5 Sekunden
Das HTC One M8 wurde im März 2014 veröffentlicht

Moto G (Android 5.1)

So und los gehts mit einem nächsten Gerät - Moto G - Android 5.1.

  1. Ionisch1 - 4,5 bis 5,5 Sek. Sek.
  2. Ionic 2- Konferenz-App: 8,5 bis 10,5 Sek.
  3. Ionic 2 - Starter-App: 6 bis 6,5 Sek.
  4. Ionic 1 - Mein benutzerdefiniertes Projekt - 5,5 - 6 Sek.
  5. Ionic 2 - Mein benutzerdefiniertes Projekt - 7-8 Sek.

Wie ihr seht, haben wir immer noch 1,5 Sek. Unterschied, die Konferenz-App brauchte viel mehr Zeit
Das Moto G wurde im November 2013 veröffentlicht

Also ich denke das sollte jetzt alle Fragen beantworten.

_Und ja: Jedes Projekt in ionic2 wurde mit RC4 und Appscripts 0.0.47 kompiliert - bevor jemand fragt_

Verwenden Sie die neueste Ionic-CLI? Wie groß ist dein Bündel? Können Sie es mit nur npm run ionic:build --aot kompilieren und überprüfen, dass platformBrowserDynamic NICHT drin ist? --aot sollte die Verkleinerung überspringen, Ihnen aber trotzdem den AoT-Build geben.

Vielen Dank,
Dan

@danbucholtz Ich prüfe es und gebe dir in 15 Minuten ein Update... - Vielleicht habe ich einen Fehler gemacht, in den letzten 2 Stunden zu viel für diesen Beitrag kompiliert =/ sorry

Denken Sie daran, dass platformBrowserDynamic grundsätzlich ngc im Browser ausführen muss, wenn die App gestartet wird. Unabhängig davon, ob Sie AoT verwenden oder nicht, verwenden Sie im Browser immer noch .ngfactory.js-Dateien. Es dauert ungefähr 20 Sekunden in Ihren vorherigen Posts. Also 20 Sekunden Kompilieren im Browser + 5 Sekunden Hochfahren = lange Zeit.

5 Sekunden sind immer noch sehr lang. Da stimmt etwas nicht.

Vielen Dank,
Dan

@danbucholtz Hallo nochmal dan! Es tut mir Leid. Ich habe die neuesten Skripte installiert, aber der npm-Lauf ionic:build --aot war in meinem benutzerdefinierten Projekt nicht verfügbar. - Ich habe meinen Beitrag oben bereits aktualisiert.

Also habe ich jetzt ein neues Projekt erstellt, kompiliert und signiert, und jetzt beträgt die Startzeit wieder 7 Sekunden.

_Ich möchte erwähnen, dass alle anderen Checks_ - Konferenz-/Starter-App alle mit ionic:build --aot waren und ich kann überprüfen, dass platformBrowserDynamic dort NOT ist.
Ich habe alle ZIPS extrahiert und mir main.js .

Entschuldigung nochmal.

@graphefruit großer Aufwand, um solche Statistiken auf verschiedenen Geräten zu erstellen 👍
@danbucholtz @jgw96 , wie abt Ionic Team die Produktionsversion der ionic-conference-app im Play Store veröffentlicht und wir können Ihnen einige Statistiken zum ersten Laden herunterladen.

Wenn unsere Ladezeiten nicht übereinstimmen, machen wir möglicherweise etwas falsch mit unserem Build, was ich wirklich bezweifle.

@danbucholtz Das ist seit RC.0 so, ich bezweifle, dass es jemandem gelungen ist, auf Android unter 5 Sekunden zu starten. Die Startzeiten von Ionic 1 sind besser als die von Ionic 2.

Könnten Sie sich das bitte ansehen und ein Profil erstellen?
Ich weiß, dass Sie zuerst versuchen, sicherzustellen, dass wir das richtige Verfahren zum Erstellen der App verwenden, aber dieses Problem hat sich in den letzten Monaten nicht viel bewegt und wenn mehrere Benutzer dies melden, wird es wahrscheinlich nicht verursacht durch eine schlechte Verwendung des Build-Skripts.
Fünf (und das ist hier das beste Szenario) oder mehr Sekunden zum Starten sind ein Show-Stopper für so ziemlich jede Android-App.

Meine Statistik:
Sony Z3 Compact Android 6.0.1 - AOT/Prod/minified build (2 MiB JS Bundle) dauert 6 Sekunden, um sowohl mit als auch ohne Crosswalk zu starten. Auf langsameren Geräten dauert es viel länger (10 und mehr Sekunden wurden von Benutzern gemeldet, die meine App getestet haben).

@danbucholtz Würde es Ihnen etwas

Hallo zusammen, vielen Dank für die ausführlichen Diagnose- und Testinfos. Dies ist derzeit unsere oberste Priorität, und während einige von uns hier einige der langen Ladezeiten nicht sehen, hängen andere vom Gerät / Betriebssystem / usw. ab. Wir grenzen es ein, alle zusätzlichen Informationen, die Sie haben, sind immer willkommen.

@mlynch Dies sind zwar nicht die fehlenden 5 Sekunden, aber es könnte sich vielleicht lohnen, etwas Zeit zu sparen

https://github.com/driftyco/ionic-storage/issues/54

Ich habe das Gefühl, dass eine der ionischen Bibliotheken (Speicher) zweimal initialisiert wird ..... (eher als einmal). Ich könnte mich sehr irren, aber dennoch, während ich nach Leistungssteigerungen beim Start suche, werfe ich dies in Betracht, besonders wenn es hier ein umfassenderes Problem gibt

Hallo,
Ich habe ein anderes Gerät getestet:

Nexus 7 (2012) - Android 4.1

Ionic 1 - Starter-App: 4 Sek.
Ionic 2- Konferenz-App: 7 Sek.
Ionic 2 - Starter-App: 5,5 Sek.
Ionic 1 - Mein benutzerdefiniertes Projekt - 5,5 Sek.
Ionic 2 - Mein benutzerdefiniertes Projekt - 8,5 Sek.

Vielleicht kann ich heute Abend noch einen Test von einem Ulefone-Metal mit Android 6.0 liefern.

Grüße
Graphefrucht

Nach dem Upgrade von Ionic auf 2.1.17 und dem Ausführen von ionic run android --prod hat sich die Leistung erheblich verbessert und meine App startet innerhalb von 2 bis 3 Sekunden. Weiß nicht was sich geändert hat aber ich bin sehr froh darüber. :smiley:

@PrithiviRajG Könnten Sie bitte weitere Informationen teilen?

  1. Wie groß ist Ihre App?
  2. ionic info - Informationen
  3. package.json - Informationen
  4. installierte Plugins / Bibliotheken von Drittanbietern
  5. Welches Gerät verwendest du?
  6. Kannst du es auch mit den starter-app und ionic conference app testen?
    Danke im Voraus
    Graphefrucht

@graphefruit

  1. Meine Apk-Größe beträgt 7 MB, die Größe des WWW-Ordners beträgt 7,88 MB, der Plugin-Ordner ist 67,1 MB, der Ressourcenordner ist 1,01 MB
  2. ionic info
 ordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.2
Ionic CLI Version: 2.1.17
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.39
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 7
Node Version: v6.7.0
Xcode version: Not installed

  1. package.json
{
  "name": "ionic-app-base",
  "author": "Ionic Framework",
  "homepage": "http://ionicframework.com/",
  "private": true,
  "scripts": {
    "build": "ionic-app-scripts build",
    "watch": "ionic-app-scripts watch",
    "serve:before": "watch",
    "emulate:before": "build",
    "deploy:before": "build",
    "build:before": "build",
    "run:before": "build"
  },
  "dependencies": {
    "@angular/common": "2.1.1",
    "@angular/compiler": "2.1.1",
    "@angular/compiler-cli": "2.1.1",
    "@angular/core": "2.1.1",
    "@angular/forms": "2.1.1",
    "@angular/http": "2.1.1",
    "@angular/platform-browser": "2.1.1",
    "@angular/platform-browser-dynamic": "2.1.1",
    "@angular/platform-server": "2.1.1",
    "@ionic/cloud-angular": "0.5.2",
    "@ionic/storage": "1.1.6",
    "angular2-swing": "^0.10.0",
    "ionic-angular": "2.0.0-rc.2",
    "ionic-native": "2.2.3",
    "ionicons": "3.0.0",
    "rxjs": "5.0.0-beta.12",
    "zone.js": "0.6.21"
  },
  "devDependencies": {
    "@ionic/app-scripts": "0.0.39",
    "typescript": "2.0.3"
  }
}

  1. Installierte Plugins
cordova-plugin-device
cordova-plugin-facebook4
cordova-plugin-googleplus
cordova-plugin-nativeaudio
cordova-plugin-splashscreen
cordova-plugin-statusbar
cordova-plugin-whitelist
ionic-plugin-keyboard
angular2-swing
  1. Geräteinformationen: MOTO G 1. Generation - Android 5.1

    1. testet in Kürze die Start-up-App und die ionic conference und gibt Bescheid.

@PrithiviRajG Vielen Dank für Ihre Informationen. es sieht so aus, als wärst du nicht auf dem neuesten Stand:

Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.2
Ionic CLI Version: 2.1.17
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.39
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 7
Node Version: v6.7.0
Xcode version: Not installed

-> Sie verwenden RC2 nicht RC4 - auch die ionischen Skripte sind jetzt auf 0.0.47.

Aber vielleicht ist dies ein Hinweis auf @jgw96 ?

Hallo,
Ich habe ein anderes Gerät getestet:

Ulefone Metal (Android 6.0)

Ionic 1 - Starter-App: 3,5 Sek.
Ionic 2- Konferenz-App: 5 Sek.
Ionic 2 - Starter-App: 4,5 - 4,7 Sek.
Ionic 1 - Mein benutzerdefiniertes Projekt - 5 Sek.
Ionic 2 - Mein benutzerdefiniertes Projekt - 7 Sek.

Grüße
Graphefrucht

@mlynch Aus Neugier möchte ich nur wissen, dass die Verbesserung der anfänglichen Ladezeit,
Wird es Teil der aktuellen Arbeit von @danbucholtz zum Thema Tree-Shaking sein ODER wird dies ein separater Android-spezifischer Fix sein?

Ich habe Dans Arbeit durch Besprechungsnotizen kennengelernt und liebe es, mit euch zusammenzuarbeiten. Ich kann nicht glauben, wie transparent das Team bei der Rahmenarbeit ist. :Herz:

@savanvadalia ,

Wir werden nie damit fertig sein, Ionic schneller zu machen.

Im Moment konzentrieren wir uns darauf, das richtige Tree-Shaking zum Laufen zu bringen und die Unterstützung für den Closure-Compiler zu erhalten. Closure kann deutlich kleinere JS-Bundles erzeugen als die Alternativen, was zu schnelleren Ladezeiten führt. Wir untersuchen derzeit auch das Aufteilen von Code, um die Zeit zu reduzieren, die zum Laden und Analysieren des Javascripts erforderlich ist.

Vielen Dank,
Dan

@danbucholtz Toll, das zu hören. Wie kann ich zu den immer schnelleren Funktionen beitragen?

Derzeit evaluiere ich Front-End- und Mobile-Technologien für neue langfristige Produktlinien im Bereich Consumer Finance. Die anfängliche Ladeleistung ist ein wesentlicher Entscheidungsfaktor.

Nach jüngsten Tests kleiner Apps ist die iOS/Android-Leistung akzeptabel. Die Browser-Ladeleistung ist auch in Ordnung: Ich werde später das serverseitige Rendering vorstellen. Die größte Sorge gilt der anfänglichen Ladeleistung, wenn wir beginnen, weitere Seiten und Module von Drittanbietern einzuführen.

Gibt es eine Möglichkeit, einen Begrüßungsbildschirm oder einen Fortschritt beim anfänglichen Laden der Ionic2/Webview-App anzuzeigen?

Sie durchschnittlich. Die Ladezeit der App beträgt bei mir etwa 10 Sekunden. Dies führt zu einer schlechten Benutzererfahrung, wenn die Benutzer etwa 10 Sekunden warten müssen, um die App zu laden. Meine App ist aber nicht groß.

Ich verwende npm run ionic:build --aot und ionic run android --prod , um auf dem Gerät zu laufen, und die Startzeit der Starter-App beträgt ungefähr 2 Sekunden, aber wenn ich mein eigenes Projekt verwende, kommt es

Nicht abgefangener Fehler: Kann Modul "./app.module.ngfactory" nicht finden

Ich habe node_modules und www entfernt, aber es funktioniert nicht.
Wenn ich gerade ionic run android ausführe, funktioniert mein Projekt, aber die Anfangszeit beträgt etwa 7-8 Sekunden

hier sind meine ionischen infos

Cordova CLI: 6.4.0
Ionic Framework-Version: 2.0.0-rc.4
Ionische CLI-Version: 2.1.18
Ionic App Lib Version: 2.1.9
Ionische App-Skripte Version: 0.0.48
ios-deploy-Version: Nicht installiert
ios-sim-Version: Nicht installiert
Betriebssystem: Windows 10
Knotenversion: v6.6.0
Xcode-Version: Nicht installiert

aktualisieren
Problem behoben durch Downgrade des Typoskripts auf "2.0.9"

Was auch immer ich tue, deviceready wird nach 5 Sekunden ausgelöst.

Alle,

Um ein Update zu geben, haben wir das Framework selbst erheblich verbessert, um das Verwackeln von Bäumen und das Entfernen von totem Code zu verbessern. Wir haben mit Code-Splitting und Closure-Compilern experimentiert und die Bundle-Größe in diesen Fällen drastisch reduziert. Experimentieren ist das Schlüsselwort und es wird noch ein bisschen dauern, bis wir alles für die Hauptsendezeit fertig haben. Wir arbeiten bei diesem Thema sehr eng mit dem Angular-Team zusammen.

Closure Compiler ist ein erstaunliches Tool, aber es kann viele Bibliotheken von Drittanbietern oder sogar Ihre eigene App zerstören, wenn Sie sich nicht an die Regeln halten. Daher arbeiten wir daran, eine einfache, aber robuste und flexible Entwicklererfahrung zu schaffen.

Die Verkleinerung der Bundle-Größe, Code-Splitting und die Verbesserung der Startgeschwindigkeit ist unsere oberste Priorität.

Vielen Dank,
Dan

@danbucholtz, das ist großartig! Ich habe dem Angular CLI-Team in der Vergangenheit einen Closure-Compiler vorgeschlagen. Möglicherweise könnte ein Schalter eingeführt werden, der die Kompilierung mit dem Closure-Compiler optional macht. Diejenigen, die über einen Compiler-freundlichen Code für Closures verfügen, der ihn aktivieren kann, können ihn auf Standardmethode kompilieren. Das Ionic-Team könnte sicherstellen, dass die Ionic-Kernbibliothek und Ionic native vollständig mit dem Closure-Compiler kompatibel sind. Übrigens, möchten Sie mitteilen, was die beste Startgeschwindigkeit ist, die Sie mit / ohne Closure-Compiler erreichen können?

http://hybridtonative.com , NativeScript ist noch unausgereift, wird jedoch immer attraktiver, da immer mehr Ionic-Probleme auftreten, offene Tickets bestehen bleiben oder wachsen und die Webview-Technologie sich nur um sich selbst dreht und Entwickler zwingt, an der Technologie zu arbeiten, anstatt zu arbeiten damit. Selbst grundlegende Aufgaben erfordern eine große Menge an Workarounds, das Ausgraben von Problemen, die eine Menge Code-Updates erfordern, Änderungen und Updates folgen, die die Produktion auf einer schlammigen Basis von endlosem Polieren zurücklassen, was eigentlich die Fehlerbehebung bei schlechten Designentscheidungen ist, die andere schlechte Designentscheidungen behebt. Am Ende des Tages zahlen wir den Preis und es wird vergleichbar mit der nativen Entwicklung von Apps auf iOS und Android.

@barocsi übertreibt viel? Ist Ihnen klar, dass Angular 2 und ionic auf dem neuesten Stand der Technik sind, mit denen sie arbeiten, und daran arbeiten, die bestmögliche Vorgehensweise für uns Entwickler zu finden? Denken Sie auch daran, dass v2 Stable noch nicht veröffentlicht wurde.

@barocsi Wenn Sie mit Ionic2 nicht zufrieden sind, verwenden Sie Ionic1 oder schreiben Sie Ihre eigene eckige Anwendung.
Selbst mit Ihrer eigenen eckigen Anwendung werden Sie über viele Probleme stolpern, die ionische Lösungen bereits in ihrem Rahmen haben.
Auch dieses Framework ist Open Source und Sie können dazu beitragen; Wenn Sie irgendwelche Probleme mit der Geschwindigkeit haben, arbeiten sie daran, oder Sie könnten es forken und Ihre eigene ionic2-Fork erstellen.
Ich möchte nicht streiten oder etwas vom Zaun brechen, auch wenn Ionic2 einen Release-Kandidaten hat, der gerade aus dem Beta-Release-Zyklus gekommen ist.
Also bitte geben Sie ihm etwas Zeit, und wenn Sie es kaum erwarten können, nehmen Sie ionic1 und nutzen Sie den Crosswalk, der sich bereits seit einigen Jahren auf diesem Markt etabliert hat

Danke für die Vorschläge, ich frage mich nach Alternativen für aktuelle und zukünftige Entscheidungen. Wir haben bereits einige robuste und schwere Ionic V1- und V2-Apps zusammen mit fast 1,5 Jahren Kämpfen und Beitragen zu Problemen in diesem Github-Repository. Auch wenn dies ein pro-ionischer Thread ist, müssen wir voraussehen, wohin diese Technologie führt, selbst wenn etwas von bedeutet dies nicht, dass es von der Community beharrlich ist und ehrlich bewertet und mit Geduld behandelt werden muss wie wir es tun, ist dieser Thread fast 6 Monate alt und befasst sich immer noch mit einem wesentlichen und produktionskritischen Problem.

Ich kann Ihre Bedenken verstehen, deshalb habe ich in meiner eigenen schweren Anwendung einfache Angularjs verwendet.
Das Problem ist, dass ich immer noch über viele Themen gestolpert bin, denn wenn man nicht alles selbst schreibt oder von Grund auf neu schreibt, kommt man früher oder später dorthin.
Ich hatte große Probleme mit Angular-Material V1 (Performance zB) und musste mich selbst in das Framework einarbeiten, den Rest habe ich selbst in anglejs geschrieben.
Aber selbst dort kam ich an den Punkt, an dem Performance-Probleme auftauchten.
Also musste ich Zeit mit meinem "eigenen" Framework verbringen, um sie zu finden und zu versuchen, sie zu reparieren.
So kann ich Ionic mit ihren Problemen verstehen, da ich selbst in diese Probleme hineingefallen bin.
Auch wenn sie ein großes/größeres Unternehmen sind, haben sie auch begrenzte Ressourcen.

Als nächstes ist Ionic2 nicht nur eine APP, es bietet auch eine Website, es unterstützt auch UWP (und das ist eine Menge Ärger) und es unterstützt auch PWA.
So viele neue Funktionen in einem Framework, das hauptsächlich für Apps verwendet wird, aber auch viele andere Dinge unterstützt.
Bei diesen Funktionen gibt es viele Abhängigkeiten und viele Probleme beim Eingraben.
Aber deine Bedenken sind berechtigt, aber ich sehe die Probleme eher in der komplett neuen Technologie, die auf den Markt geworfen wurde und die Ionic versucht, in sie einzudringen und eine Menge Abhängigkeiten damit bekommt.

@danbucholtz

Dan, sehr ermutigt durch Ihre Kommentare zum "Experimentieren" von Code-Splitting, Closure Compiler, Tree Shaking und dass die Startgeschwindigkeit die aktuelle Priorität Nr. 1 für ionic2 (4. Januar) ist. Die beispielhafte ionic2-Konferenz-App von Github ist eine gute einfache Benchmark-App, mit der alle Ihren Fortschritt vergleichen können. Ich hoffe, Ihre Arbeit kommt gut (und schnell) voran. Brauchen heutzutage wirklich eine Startzeit von <=3 Sekunden oder Benutzer werden wahrscheinlich "weggehen" - über 6 Sekunden und sie "gehen" definitiv für immer weg.

Mit --prod erstellt und auf meinem Nexus 7 (2013) Android 6.0.1 gestartet, dauert der Start der Konferenz-App derzeit ~8 Sekunden (durchschnittliche Zeit durch Stoppuhr über mehrere Starts).

Also, es ist noch ein langer Weg, ich wünsche Ihnen viel Erfolg !!! - zumal mir die Struktur und Ausstattung von ionic2 aus Sicht eines erfahrenen Entwicklers sehr gut gefällt.

Phil

@barocsi ich kann deine Situation verstehen und im Moment ist es auch für mich wirklich sehr enttäuschend.
Um es zusammenzufassen: Mein App-Projekt muss auf Android, iOS und Win10 (Desktop) laufen und schnell starten, 2 Sek. sind maximal - auch auf älteren (also 2 Jahren) Geräten.
Ich möchte in JS und HTML schreiben, aufgrund vieler Bibliotheken und Erfahrung. Dies schränkt das Feld auf WebView-Apps anstelle von nativen (Java, Obj C) ein.
Ich benötige einen bestimmten HW-Zugriff, daher ist Cordova eine gute Wahl. NativeScript, Appcelerator, OnsenUI w/o ng2 ... mag sein, aber die Idee gefällt mir überhaupt nicht.

Im Moment mache ich ng2 für diese enorme Codegröße verantwortlich und bin mir nicht sicher, ob ein ordnungsgemäßer Treeshaking- und Closure-Compiler die Startzeit bei einem größeren Projekt erheblich reduzieren wird (Faktor 4-5 erforderlich). Wir müssen abwarten und sehen...

@mpaland Hast du Ionic1 bereits verwendet?
Ich würde wirklich gerne sehen, wie Sie eine Startzeit von 2 Sekunden erhalten - auch auf älteren Geräten.
Mein benutzerdefiniertes Projekt ohne ionic1 benötigt auch eine Startzeit von ca. 3 Sekunden und hier gehe ich mit:

  1. index.html
  2. min.css
  3. min.js

Und das ist es.

Hast du mit Cordova (angular, etc) schon so eine schnelle Ladezeit erreicht?

@graphefruit , nein, ich habe Ionic 1 nicht ausprobiert und noch nichts anderes ausprobiert, weil ich Ionic 2 für mein Projekt am besten geeignet fand. Wie gesagt, ich werte nur die verschiedenen Optionen aus. Ein WebView mit JS ist IMHO immer noch _meine_ beste Option. Ich freue mich also auf die Fortschritte des ng- und ionic-Teams.

@graphefruit
Ich hoffe wirklich, dass ionic2 endlich einen Start von <=3 Sekunden erreicht, auch auf älteren Geräten. Das kann ich schon mit einem anderen Hybridframework + Cordova 'out of the box' erreichen. Ich würde jedoch viel lieber ionic2 verwenden, da es einen so guten Stammbaum hat, der auf angle2 aufgebaut ist, was ihm wiederum eine großartige Unterstützung, Dokumentation, Einrichtungen usw. bietet - alles Dinge, die ein erfahrener Entwickler wie ich sehr schätzt.

@philrob Extrem gespannt welches andere Hybrid Framework + Cordova (inkl. alles was man für sein Projekt braucht) unter 3 Sekunden bringt. Bitte sagen Sie es.

Lordgreg
Nicht wirklich ein geeigneter Ort, um andere Frameworks einzuführen. Ich hoffe nur, dass das ionic2-Team eine deutliche Verkürzung der Startzeit erreichen kann, die meinem Ziel von <=3 Sekunden näher kommt.

Hi
Meine ionic2-Anwendung braucht immer noch 10 Sekunden zum Starten. Aber die ionic1-Anwendung dauert nur 4 Sekunden. Wie kann man die anfängliche Ladezeit verbessern. Bitte schlagen Sie mir vor

@philrob Im Ernst, wenn Sie andere Kommentare überprüfen, werden Sie schnell feststellen, dass es immer Vergleiche gibt. Verdammt, sogar dieser Thread hat sie. Was Sie behaupten, ist keine Lüge, aber zu erklären, dass Ihre Hybrid-App, die nur jQuery (Beispiel) im Cordova-Container ausführt, in weniger als 3 Sekunden geöffnet wird, ist völlig absurd. Das Framework zu verwenden, das sich nicht um das Styling kümmert oder zumindest nicht so komplex ist wie Ionic oder auf keine andere riesige Bibliothek (Angular2) angewiesen ist, ist wie ein Vergleich von Tag und Nacht. Es macht keinen Sinn.

@mobinius-shreesha führt das Projekt als ionic build android --prod oder ionic run android --prod , um eine Startzeit von 5 Sekunden zu erhalten. Wird im Debug-Modus ionic run android , erhöht sich die Zeit auf mehr als 10 Sekunden

Lordgreg

Glauben Sie nicht, dass wir anderer Meinung sind. Aus diesem Grund habe ich mich bewusst dafür entschieden, die Konferenz-App von ionic2 von Github (erstellt mit --prod) zu verwenden, um mein Starttiming (~8 Sekunden) speziell für mein Nexus 7 (2013) Android 6.0.1 anzugeben. Wenn ein anderes Framework eine schnellere Startzeit auf derselben Ausrüstung erreichen kann und trotzdem die von mir benötigten Einrichtungen bietet (einschließlich gestylter mobiler UI-Widgets), dann ist es FÜR MICH relevant,

ICH WIEDERHOLE - Ich mag ionic2 aus all den anderen wichtigen Gründen, die ich zuvor genannt habe, ich möchte nur die deutlich verbesserte Startgeschwindigkeit sehen. Denke, wir müssen dem ionic2-Team die Zeit geben, die es braucht ...

Ich freue mich auch auf die Erhöhung der Bootzeit.

Ich denke, das Ionic-Team hat mit der Veröffentlichung von v1 von ionic-app-scripts letzte Woche großartige Arbeit geleistet. Dies hat die Bauzeit hier in meiner Umgebung massiv verbessert.

Ich bin mir sicher, dass sie das gleiche mit der App-Boot-Zeit tun werden.

Ich denke, das Problem liegt woanders: ionic v2 befindet sich im rc-Zustand. Das müssen die meisten Entwickler jedoch respektieren: Auf Seiten des Ionic-Teams suggeriert die ionic-Dokumentation jedem Neuling, dass v2 etwas ist, das serienreif ist. Widersprechen Sie nicht, dass es so ist. Sogar die Dokumente sind jetzt standardmäßig auf v2.

Dieses betrügerische Verhalten des Teams, ob freiwillig oder nicht, ist irgendwie das Ergebnis des Drucks der Industrie. Die alleinige Haltbarkeit von Ionics hängt davon ab, etwas Fortschrittliches mit einer großen Entwicklungsbasis (js + angular2) bereitzustellen, bevor die Community zu einer anderen aufkommenden Cross-Plattform-Technologie wechselt, zum Beispiel der von mir zuvor erwähnten: Nativescript

Das Ionic-Team muss also vorschlagen, dass v2 die De-facto-Version für Ionic ist. Aber der Preis kann in diesem Fall höher sein: Die Einführung eines Produkts mit kritischen Teilen in Fehlern ohne so schnell wie möglich Fixes führt zu Misstrauen gegenüber der Community, das manchmal gefährlicher ist, als ein paar Monate länger zu warten, bevor man das Produkt als Vorreiter positioniert ausgereiftes Haupt-Upgrade.

Entwickler müssen produzieren und jeder Schritt zurück oder das Fehlen von Fixes wird sie dazu bringen, sich anderen Lösungen zuzuwenden, um ihre eigene Zukunft und Stabilität gegenüber ihren Kunden abzusichern.

Irgendwelche Updates dazu? :)

@PrithiviRajG Vielen Dank für Ihre Antwort. Ich kann die App innerhalb von 10 Sekunden starten. Aber gibt es Updates für ionic2, um die Bootzeit zu verbessern. Wenn sie planen, die Vollversion von ionic2 zu veröffentlichen. Haben Sie eine Idee.

14,99 Sekunden Kaltstart mit den aktuell installierten Plugins und aktueller ionischer Version:

com-badrit-base64 0.2.0 "Base64"
com.synconset.imagepicker 2.1.7 "ImagePicker"
cordova-plugin-kamera 2.3.1 "Kamera"
Cordova-Plugin-Kompatibilität 1.1.0 "Kompatibel"
cordova-plugin-konsole 1.0.5 "Konsole"
cordova-plugin-device 1.1.4 "Gerät"
cordova-plugin-dialogs 1.3.1 "Benachrichtigung"
cordova-plugin-nativestorage 2.2.0 "NativeStorage"
cordova-plugin-secure-storage 2.6.3 "SecureStorage"
cordova-plugin-spinner-dialog 1.3.1 "SpinnerDialog"
cordova-plugin-splashscreen 4.0.1 "Splashscreen"
cordova-plugin-statusbar 2.2.1 "StatusBar"
Cordova-Plugin-Whitelist 1.3.1 "Whitelist"
ionic-plugin-tastatur 2.2.1 "Tastatur"

Ihre Systeminformationen:

Cordova CLI: 6.4.0
Ionic Framework-Version: 2.0.0-rc.1
Ionische CLI-Version: 2.1.18
Ionic App Lib Version: 2.1.9
Ionische App-Skripte Version: 0.0.48
iOS-Bereitstellungsversion: 1.9.0
ios-sim-Version: Nicht installiert
Betriebssystem: macOS Sierra
Knotenversion: v6.9.2
Xcode-Version: Xcode 8.2.1 Build-Version 8C1002

Die aktuelle ionische Version von @tryadelion ist rc4, nicht rc1.

Alle, lasst uns auf RC5 oder Release warten, da es diesbezüglich viele Änderungen geben sollte.

Wie erzwinge ich ein ionisches Update auf RC4? Gibt es eine andere veraltete Sache, die meine Verzögerung verursachen könnte?

Für mich war ein komplexes Projekt in ionic v1 1,8 MB build.js, mit v2 geht ein Basisprojekt main.js über 6,7 MB.
Das Hinzufügen oder Entfernen von Cordova-Plugins beeinträchtigt die Bootzeit nicht unbedingt.

Hallo allerseits! Wir werden dieses Thema schließen und den Thread vorerst sperren. An diesem Punkt haben wir viel daran gearbeitet, die Ladezeiten und die Geschwindigkeit des Frameworks zu verbessern und es überall zum Laufen zu bringen.

Dies wird immer ein bewegliches Ziel sein und etwas, worüber wir ständig nachdenken. Während dieses Problem anfangs hilfreich war, ist es seitdem entgleist und es ist kein klares Thema mehr, dem man folgen kann. Wenn Sie andere Probleme haben, öffnen Sie bitte ein neues mit allen Informationen, die wir benötigen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen