[JAVA] Überlegen Sie, wie Sie Ionic-Native, Hybrid und HTML5 für die Produktion mobiler Apps verwenden können

Wenn Ionic erstellt wird, wird es nicht in Swift konvertiert. Ich möchte die HTML5-Entwicklung von Ionic und die Native / Hybrid-Entwicklung als Produktionsmethode für mobile Anwendungen vergleichen.

Vergleich

HTML5-Entwicklung

Bezieht sich auf die mit "Single Page Application" entwickelte. Darin fällt auch Ionic.

Hybride Entwicklung

In diesem Artikel schließen wir HTML5-Apps aus und verweisen auf Xamarin in C # und NativeScript in JavaScript (ReactNative usw.).

Native Entwicklung

Für iOS bezieht es sich auf Swift / Objective-C und für Android auf diejenigen, die mit Kotlin / Java entwickelt wurden. In den meisten Fällen beziehen sich die Begriffe "Smartphone-App-Entwicklung" und "App-Rekrutierung" auf native Entwickler.

Vergleich kompatibler Geräte

Einfach ausgedrückt ist die HTML5 / Hybrid-Entwicklung ein Allrounder, und die native Entwicklung ist ein Ein-Punkt-Spezialisierungstyp.

Art WEB Smartphone App
HTML5 Kompatibel mit beiden
Hybrid Kompatibel mit beiden
Native Entweder iOS oder Android

Der Grund für die WEB-Nutzung von Hybrid ist △, weil es ein React Native Web Publishing-Projekt gibt.

https://github.com/necolas/react-native-web Demo http://necolas.github.io/react-native-web/storybook/

Da es jedoch viele Meinungen wie "Write in React on the WEB" gibt, wird es als △ geschrieben. Auf kompatiblen Geräten ist dies daher "HTML5> Hybrid> Native".

Großer Unterschied zwischen HTML5 und Native / Hybrid

Es ist zu beachten, dass "HTML5-Entwicklung native reproduziert". Beispielsweise lauten die Codes HTML5 (Ionic) und Native (Swift) zum Anzeigen von Warnungen wie folgt.

//In TypeScript geschriebener ionischer Code
dispAlert(){
   const alert = this.alertCtrl.create({
    title: 'Warnanzeige', buttons: ['schließen']
   });
   alert.present();
}
// Swift
@IBAction func dispAlert(sender: UIButton) {
    let alert: UIAlertController = UIAlertController(
      title: "Warnanzeige", message: "Botschaft", preferredStyle:  UIAlertControllerStyle.Alert
    )
    presentViewController(alert, animated: true, completion: nil)
}

Jede API wird aufgerufen, aber in HTML5 wird von dieser API "HTML angezeigt, das genau wie eine native Zeichnung aussieht". HTML5 reproduziert die native Bewegung von Warnungen und Ladebildschirmen, indem HTML in der Anwendung gezeichnet wird, in der WebView angezeigt wird. Auf der anderen Seite trifft Native / Hybrid auf die API des Smartphone-Betriebssystems selbst, sodass "OS-Warnung" angezeigt wird.

Dies hat sich erheblich auf die Leistung ausgewirkt. Vor zehn Jahren wurde gesagt, dass es aufgrund des langsamen Renderns von JavaScript und der geringen Spezifikationen von iOS / Android-Geräten "langsam mit HTML zu machen" sei, aber das liegt daran, dass es auf diese Weise "reproduziert" wird. ist. Als ich mich 2017 umsah, nahmen die Rendergeschwindigkeit von HTML5 und die Spezifikationen des Geräts erheblich zu, und jetzt heißt es, dass es so schnell wie Native sein wird.

Die Zeichengeschwindigkeit ist jedoch Native / Hybrid> HTML5.

Einfache Implementierung der Anwendung

"Einfach zu implementieren", mit anderen Worten, die Größe des Schmerzes. Dies ist eine andere Situation, daher werde ich einige Muster vorstellen.

Bei der Entwicklung nur iOS-Apps

Die native Entwicklung ist überwiegend einfach. Es ist nicht sinnvoll, HTML5 / Hybrid mit unerfahrenen Personen zu entwickeln.

Bei der Entwicklung von iOS- und Android-Apps

Hybrids Spezialität. Wenn Sie jedoch einen Swift / Java-Ingenieur haben, ist die native Entwicklung möglicherweise schneller als die anspruchsvolle Hybrid-Entwicklung. Ich denke, die HTML5-Entwicklung ist besser, wenn das Web-Produktionsteam eine App erstellt. Es hängt von den Teammitgliedern ab und das ist die richtige Antwort! Es gibt keine solche Sache.

Bei der Entwicklung von iOS / Android / Web-Apps

Wählen Sie für kleine Teams die HTML5-Entwicklung. Wenn es jedoch niemanden im Team gibt, der HTML schreiben kann, ist es möglicherweise besser, sich auf dem Gebiet der Spezialität zu entwickeln (in diesem Fall gibt es ein Problem mit der Verwendung der Webanwendung).

Daher denke ich, dass die einfache Implementierung einer Anwendung von den Anforderungen x Personal abhängt. "Silberkugeln gab es nicht" ist ein überstrapazierter Ausdruck, aber ** löst alles! Nun, das ist eine Lüge, nicht wahr?

Überlegen Sie, wie Sie Ionic verwenden

Nachteile der HTML5-Entwicklung

Da bei der HTML5-Entwicklung "das Native neu erstellt" wird, muss bei einer wesentlichen Änderung des Gerätedesigns ein Upgrade durchgeführt werden, um dem zu folgen. Die Tatsache, dass das "Cordova-Plug-In", das direkt auf native Funktionen zugreift, auch eine Zwischenschicht aufweist, führt zu einer Versionsabhängigkeit. Wenn sich das Betriebssystem destruktiv ändert, kann es schwierig sein, damit Schritt zu halten (dies gilt auch für die Hybrid-Entwicklung).

Native Development ist die leistungsstärkste mobile App, und egal wie viel HTML5-Entwicklung sich entwickelt, sie wird sie nicht umkippen.

Wachstumskurve auf Produktebene berücksichtigt

Was in der HTML5-Entwicklung häufig gesagt wird, ist der Reiz einer "Bereitstellung mehrerer Ressourcen für mehrere Ressourcen". Wenn Sie WEB / iOS / Android separat entwickeln, steigen nicht nur die anfänglichen Kosten, sondern auch geringfügige Designänderungen und Funktionsverbesserungen. In der Realität ist es schwierig, zu jeder Zeit so viele Mitarbeiter zu haben (und es besteht die Tendenz, dass einheimisches Personal für die Anwendungsentwicklung Mangelware ist).

Ein weiteres ernstes Problem ist, dass die Anzahl der Apps so viele wie die Anzahl der Sterne veröffentlicht wurde und die Download-Rate gesunken ist. Da sich die Zeiten geändert haben, seit eine bestimmte Anzahl von Apps nach der Veröffentlichung der App heruntergeladen wurde, besteht die allgemeine Methode darin, sie zu den niedrigsten Kosten freizugeben, die Hypothese schnell zu testen, zurückzuziehen, wenn sie nicht funktioniert, und weiter daran zu arbeiten, wenn sie funktioniert, um das Produkt zu vergrößern. Wurde ein Ziel.

In diesem Sinne ist es möglich, verschiedene Entwicklungsmethoden für den Hypothesentestprozess und den Wachstumsprozess anzuwenden. Es ist nicht das, was der HTML5 / Hybrid / Native-Entwicklung überlegen ist, aber die Überprüfung der Hypothese wird detailliert mit der HTML5-Anwendung durchgeführt. Wenn sie in einem bestimmten Maßstab wächst und monetarisiert werden kann, wird sie durch die Hybrid / Native-Entwicklung ersetzt, um die Benutzererfahrung weiter zu verbessern. Ich bin der Meinung, dass dies eine realistische Maßnahme geworden ist. Die Anzahl der Designer, die HTML schreiben können, hat zugenommen, und es ist gut, HTML5 als Modell zu entwickeln.

In diesem Sinne sehe ich oft einen Ton wie "Ionic (HTML5-Entwicklung) vs React Native (Hybrid-Entwicklung)", aber ich denke nicht, dass es eine Vergleichsachse sein kann. Es ist eine ganz andere Schicht.

Es ist ein Artikel, der keine Schlussfolgerungen zieht, sondern nur eine Perspektive bietet, aber ich hoffe, Sie finden ihn hilfreich. Wenn Sie an HTML5-Entwicklung und Ionic in diesem Artikel interessiert sind, erhalten Sie auch Einführung in die Erstellung mobiler Apps mit Ionic <Web / iPhone / Android-kompatibel>. Ich bin glücklich.

Wir sehen uns wieder.

Recommended Posts

Überlegen Sie, wie Sie Ionic-Native, Hybrid und HTML5 für die Produktion mobiler Apps verwenden können
So verwenden Sie das Font Awesome-Symbol für ul und li
Verfahren zum Übergeben von RealmObject an Fragment und zur Verwendung von Parceler
Verwendung von StringBurrer und Arrays.toString.
Verwendung von EventBus3 und ThreadMode
Wie man Gleichheit und Gleichheit benutzt (wie man Gleichheit benutzt)
Verwendung von \ t Escape-Sequenzen, die für Mac und Windows-Java unterschiedlich sind
Ich war neugierig, wie man Optional orElse () und orElseGet () richtig verwendet.
Verwendung von binding.pry für die Ansichtsdatei
Verwendung von OrientJS und OrientDB zusammen
So legen Sie verschiedene Quell- / Zielversionen für Produktionscode und Testcode fest
So richten Sie kapt ein und verwenden es
(Für Anfänger) [Rails] Zeitsparende Technik! So installieren und verwenden Sie slim
[Ruby] Wie man Slice für Anfänger benutzt
Verwendung von Teilzeichenfolgen und Substratmethoden
Verwendung von @Builder und @NoArgsConstructor zusammen
[Java] Verwendung der FileReader-Klasse und der BufferedReader-Klasse
[Ruby] Verwendung der gsub-Methode und der sub-Methode
So verwenden Sie ein Array für HashMap-Schlüssel
Verwendung von Segmented Control und zu notierenden Punkten
Verwendung der Scope- und Pass-Verarbeitung (Servist)
[Für Super-Anfänger] Verwendung des Autofokus: true
[Java] Verwendung der Kalenderklasse und der Datumsklasse
Erklärung von Ruby on Rails für Anfänger ④ ~ Informationen zu Benennungsregeln und zur Verwendung von form_Tag ~
So erstellen Sie die Docker + Springboot-App (für grundlegendes Lernen)
So verwenden Sie ein Array für den TreeMap-Schlüssel
Rails / Ruby: So erhalten Sie HTML-Text für Mail
Verwendung von Truth (Assertion Library für Java / Android)
[Für diejenigen, die Portfolios erstellen] Verwendung von Font-Awesome-Rails
Verwendung und Anwendung der JFrame / Canvas-Klasse von Java
Wie man GitHub für Super-Anfänger benutzt (Teamentwicklung)
So fügen Sie mit CircleCI ein weiteres Projekt als Maven-Bibliothek hinzu und verwenden es zum Erstellen
Wie benutzt man rbenv?
Verwendung mit_option
Verwendung von java.util.logging
Verwendung der Karte
Wie benutzt man Twitter4J
Wie benutzt man active_hash! !!
Verwendung von MapStruct
Verwendung von TreeSet
[Verwendung des Etiketts]
Wie man Identität benutzt
Wie man Hash benutzt
Verwendung von Dozer.mapper
Wie benutzt man Gradle?
Verwendung von org.immutables
Verwendung von java.util.stream.Collector
Verwendung von VisualVM
Verwendung von Map
Verwendung von SAS-Token für Azure Event Hubs (Java)
So verwenden Sie OpenCV 4 unter Android und zeigen die Kamera live an
[Ein Muss für einen Java-Ingenieurlehrling] Verwendung der Stream-API
[Für diejenigen, die Portfolios erstellen] Verwendung von Chart Kick
Aufrufen und Verwenden der API in Java (Spring Boot)