Ich verfolge diese Dinge nicht sehr genau, aber ich verstehe es. Wenn Sie eine native App für Android und iOS wünschen, wäre es sicherlich schön, sie nur einmal schreiben zu müssen, anstatt in zwei sehr unterschiedlichen Sprachen. Verdoppeln Sie ungefähr Ihre Reichweite, ohne die Arbeit zu verdoppeln. Immer mehr dieser Dinge reichen auch bis zum Desktop, was drei Ziele für eines bedeutet.
Sachen wie PhoneGap fallen mir ein. Sie sagen: "Nutzen Sie bestehende Webentwicklungsfähigkeiten, um schnell hybride Anwendungen zu erstellen, die mit HTML, CSS und JavaScript erstellt wurden." Das ist offensichtlich überzeugend für Webentwickler, die nur minimale neue Dinge lernen müssten. Mein Gehirn neigt eher zu: "Nun, wenn ich das Ding in HTML, CSS und JavaScript schreiben werde, warum lasse ich es nicht dabei?" Progressive Web Apps leisten großartige Arbeit. Dennoch bin ich neugierig, was die Flaggschiff-Apps von PhoneGap sind. Benutze ich großartige und weiß es nicht einmal?
Wenn Sie ein Framework aufsetzen, aber immer noch in der JavaScript-Welt bleiben, würde ich denken, dass der größte Akteur React Native ist. Ich höre, es wird heutzutage fast immer mit Expo verwendet, das anscheinend etwas hat, das React Native im Web funktionieren lässt. Außerdem gibt es buchstäblich React Native for Web.
In der React-Welt gibt es einen weiteren neuen Akteur: Ionic React. Es zielt direkt von Anfang an auf alle drei Plattformen (iOS, Android und Desktop) ab. Ionic ist jedoch nicht neu – es ist seit langem ein Framework, das dies in JavaScript (alternativ in Angular) tut und bald auch für Vue verfügbar sein wird. Überzeugend. Nader Dabit hat einen ersten Blick-Blogbeitrag, der ziemlich gut gemacht ist.
Das alles wird für mich langsam verwirrend, da Ionic unter der Haube anscheinend Cordova verwendet … genau wie PhoneGap? Oder so? Aber jetzt wechselt Ionic zu etwas Eigenem? Ich denke, es ist sinnvoll, dass es einige Low-Level-Interpreter-Dinge gibt, die Web-Primitive in native Primitive übersetzen und dass Leute Entwickler-Tools darauf aufbauen.
Google hat mit Flutter ein Interesse an diesem Spiel. Flutter zielt darauf ab, alle drei Ziele zu erreichen und Ihnen beim Aufbau der Benutzeroberfläche zu helfen. Material Design, Animation und Leistung sind allesamt erstklassige Bürger. Es ist jedoch alles in Dart. Dart kann zu JavaScript kompiliert werden (so dass es für Web-Sachen verwendet werden kann), aber es kompiliert auch zu Maschinencode. Ich stelle mir vor, dass Flutter-Apps für zusätzliche Leistung auf diese Weise kompiliert werden, wenn sie zu nativen Apps werden. Ich habe kein gutes Gefühl dafür, wie beliebt Dart ist, aber ich würde annehmen, dass Webentwickler es wirklich nicht interessiert, in was sie schreiben, wenn großartige Leistung auf allen drei Zielen das Ergebnis ist.
Noch weiter außerhalb meines Fachgebiets liegt Xamarin, die Antwort von Microsoft auf die Vereinheitlichung der Entwicklung auf mehreren Plattformen. Die beteiligten Sprachen sind .NET und C#. Es hat die gleichen Versprechungen wie alles andere: Bauen Sie damit und es funktioniert überall! Das ist für die Bequemlichkeit der Entwickler! Es ist schnell und Sie werden damit erstaunliche Dinge machen!
Ich bin bei all diesen Dingen immer zwiegespalten. Ein Teil von mir beneidet wirklich schöne native Apps. Die meisten meiner Lieblings-Apps auf meinem Handy fühlen sich sehr nativ an, obwohl ich nicht sicher bin, welches Framework sie erstellt hat, falls überhaupt. Zum Beispiel habe ich eine Dribbble-App auf meinem Handy und sie gefällt mir sehr gut. Sie ist einfach und nett. Ich öffne sie und bin angemeldet, was bei Web-Apps normalerweise nicht der Fall ist. Sie fühlt sich schnell an und hat all die In-Page-Animationen, die man von einer nativen App erwartet. Ich wünschte mir total, wir hätten eine solche App für CodePen. Vielleicht, wenn wir heute neu anfangen würden, würden wir sie mit einem plattformübergreifenden Framework schreiben, das alle drei Plattformen abdeckt und uns vielleicht einen coolen Wettbewerbsvorteil verschafft. Ein anderer Teil von mir denkt: Meh, ich bin absichtlich ein Web-Typ. Ich denke, das native offene Web ist der richtige Ort, um zu sein und hat die meiste Langlebigkeit. Eine Codebasis, die das gut bedient, wird im Laufe der Zeit am wenigsten bereut.
Gestern habe ich Material gesammelt, um einen Vortrag über Service Workers vorzubereiten. Ich bin natürlich zu Codepen gegangen, um zu sehen, ob es eines hat, weil das super genial gewesen wäre.
Früher war ich eifersüchtig auf native Apps, aber jetzt fühle ich mich tatsächlich privilegiert, denn mit JavaScript-Kenntnissen gibt es all diese Werkzeuge, mit denen man Apps auf allen Plattformen nur mit JavaScript erstellen kann, weil wir tatsächlich mehr Wert erhalten als eine nativ erstellte App, da wir eine Codebasis erstellen und auf allen Plattformen veröffentlichen können. Effizienz und kein Wiederholen. Ist das nicht das Wesen von Code überhaupt?
Ich habe gerade angefangen, Electron zu benutzen, mit dem man plattformübergreifende Desktop-Apps in JavaScript erstellen kann, und ich bin begeistert von den Ergebnissen. Besonders als ich herausfand, dass Slack und Skype JavaScript-Apps waren, die auf Electron basierten. Wir haben eine macOS-App in JavaScript erstellt. Jetzt sehe ich die Ähnlichkeiten zwischen der von uns erstellten App und Slack.
Nachdem ich mich nun ein wenig mehr in dieses Meer vorgewagt habe, habe ich ehrlich das Gefühl, dass dies ehrlich gesagt der ideale Weg zum Coden sein sollte. Eine Codebasis, die auf mehreren Plattformen verteilt ist, ist tatsächlich die effizienteste Methode. Und das macht JavaScript wieder zum König in Bezug auf seine Portabilität und Vielseitigkeit. Ich liebe es, ein natives Produkt auf Mac OS und Windows nur mit JavaScript ausliefern zu können.
Und ehrlich gesagt denke ich, dass das Programmieren auf diese Weise Ihnen als Entwickler erlaubt, sich noch mehr darauf zu konzentrieren, wie Sie eine App intuitiv, zugänglich und benutzerfreundlich gestalten, und sich von den technischen Aspekten zu lösen. Die App ist nicht gut, weil sie nativ ist. Es gibt viele Müll-Apps, die in nativen Sprachen für die Plattform geschrieben sind. Die App ist gut, je nachdem, wie Sie sie erstellen.
Meiner Meinung nach sollten die Plattformen selbst wirklich einen Weg schaffen, damit Entwickler mit JavaScript erstellen können, ohne auf ein Framework zurückgreifen zu müssen.
Sicherlich, je nachdem, wie viel Funktionalität Sie benötigen, um nativ zu werden, aber vieles kann mit JavaScript gemacht werden. Ich bin super dankbar für diese Frameworks, die die Reichweite von JavaScript erweitert haben.
Sie haben vergessen, https://www.nativescript.org/ zu erwähnen, was auch sehr vielversprechend ist. Aber im Moment würde ich sagen, dass Flutter das vielversprechendste Framework ist
Es ist sicherlich eine komplizierte Landschaft! Hier ist meine Erklärung (und ich weiß, dass ich das einige vereinfache).
Soweit ich weiß, verwendet Ionic Cordova unter der Haube, unabhängig davon, ob Sie Angular oder React verwenden. Sie entwickeln eine eigene Cordova-ähnliche Lösung namens Capacitor, aber soweit ich mich erinnere, ist das noch nicht, was sie standardmäßig verwenden https://capacitor.ionicframework.com/. Der Hauptunterschied hier ist, dass diese Lösungen (genannt Hybrid) alle in der WebView rendern. Das bedeutet, dass Sie die Benutzeroberfläche mit HTML/CSS erstellen können, was großartig ist, aber es bringt auch einige Einschränkungen und Leistungsprobleme mit sich.
Auf der anderen Seite gibt es Tools wie React Native und NativeScript. Diese Tools rendern tatsächlich native Benutzeroberflächen unter iOS und Android, aber unter der Haube verwenden sie JavaScript, das in einer gepackten JavaScript-VM ausgeführt wird, um die gesamte Geschäftslogik zu erledigen. Der Vorteil sind native UI-Elemente und eine bessere Leistung als bei Hybrid, aber der Nachteil ist eine steilere Lernkurve und Sie müssen ein anderes UI-HTML/CSS lernen. Die Hauptunterschiede zwischen den Frameworks sind größtenteils die Frameworks – React für React Native und Angular, Vue oder kein Framework für NativeScript.
Xamarin und Flutter passen in eine andere Kategorie, da sie beide, soweit ich weiß, cross-kompiliert sind. Xamarin nimmt .NET und wandelt es in natives iOS und Android um. Flutter tut dasselbe, aber mit Dart. Der Vorteil ist in diesem Fall bei Xamarin, die Nutzung einer Sprache, die Sie bereits kennen, und bei beiden erhalten Sie echte native Leistung und Benutzeroberfläche, da der Code letztendlich nativ ist.
Zur vollständigen Transparenz: Ich habe früher für Progress gearbeitet, die hinter NativeScript stehen, aber ich glaube, dies ist eine unvoreingenommene Übersicht. Außerdem bearbeite ich Mobile Dev Weekly, wo wir viel davon behandeln https://mobiledevweekly.com/
Ich hoffe, das ist hilfreich.
Ja, das war hilfreich :)
Flutter ist nicht cross-kompiliert, es zeichnet einfach alles UI-bezogene von Grund auf mit der Skia-Zeichen-Engine auf Android und iOS.
Danke, Omar. Mein Fehler.
Das kommt mir wie ein ungebildeter Hirngespinst vor.
Das Web hat Bedenken, die nicht auf Apps übertragen werden, wie Semantik, Zugänglichkeitsbedenken des DOM-Baums usw.
Ich sehe keine Möglichkeit, wie eine Software mit dem gesamten versteckten Text, Skip-Links, Tab-Reihenfolge-Navigation, die wir im Web tun, umgehen kann und gleichzeitig funktioniert es auch in nativen App-Umgebungen…
Hallo Chris, wenn Sie auch einige Enterprise-Entwickler in diesem Publikum haben, könnten sie die tiefergehende Betrachtung von Plattformen wie Xamarin, Telerik, Alpha, Kony mögen. Heutzutage werden immer mehr mobile Apps für Unternehmensoperationen und sogar für Endkunden mit Unternehmensplattformen für eine gemeinsame Entwicklererfahrung erstellt.
https://www.outsystems.com/blog/posts/enterprise-cross-platform-mobile-app-development-tools-compared/
Zur vollständigen Transparenz: Ich arbeite für OutSystems, aber nicht für Stanley oder Gartner von den 1.000 Kunden, die Peer Reviews durchführen, wo einige der Links bereitgestellt werden, also kann es anderen helfen :)
Chris, Sie haben es auf den Punkt gebracht mit "Ich denke, das native offene Web ist der richtige Ort, um zu sein und hat die meiste Langlebigkeit. Eine Codebasis, die das gut bedient, wird im Laufe der Zeit am wenigsten bereut."
Ionic konzentriert sich zu 100 % auf das offene Web: Wählen Sie Ihr bevorzugtes JavaScript-Framework (oder Vanilla!) und fügen Sie sofort unsere UI-Komponenten hinzu. Wenn Sie bereit sind, die App für Mobilgeräte, Desktops und darüber hinaus bereitzustellen, verwenden Sie Capacitor, unsere moderne Native-App-Runtime. Ionic-Apps sind Web-Apps – es gibt nichts Maßgeschneidertes oder Proprietäres zu lernen, was bedeutet, dass sich Web-Entwickler wohlfühlen, um loszulegen, und wissen, dass diese Fähigkeiten sie noch lange begleiten werden.
(Haftungsausschluss: Ich arbeite für Ionic.)
Hey Chris, ich glaube, das beste Beispiel für eine Cordova/Ionic-App ist Untappd.
Untappd wurde ursprünglich mit Cordova ohne Ionic für die Benutzeroberfläche erstellt. Irgendwann haben sie Ionic für die Benutzeroberfläche verwendet (es hat Cordova aber immer verwendet). Ich denke, sie wechseln aber jetzt vielleicht zu React Native.
Meine Präferenz ist das Web und ich habe etwa 7 Jahre Erfahrung mit Cordova und ein paar Jahre Erfahrung mit React Native.
Ich glaube, Apple hat die mobile Web-Erfahrung absichtlich daran gehindert, sich weiterzuentwickeln, damit sie vom App Store und ihrem eigenen kontrollierten Ökosystem profitieren können. Wenn wir Push-Benachrichtigungen und Touch/Face-ID-Unterstützung im Browser hätten, dann gäbe es für die meisten Hybrid-Apps wirklich keinen Bedarf mehr.
Langfassung: Ich denke, das Web wird gewinnen.