Erfahren Sie, wie Sie das Phoenix Framework verwenden, um mit Spaß Echtzeit- Web-/Mobil-Apps zu erstellen
die für „ Endbenutzer “ schnell , zuverlässig , skalierbar , wartbar und ( leicht ) erweiterbar sind!
Als Web-/Mobile-App-Entwickler müssen wir die Arbeit anderer ( wirklich kluger ) Menschen nutzen
anstatt ständig Dinge „ von Grund auf “ aufzubauen; Deshalb verwenden wir Frameworks, um unsere Apps zu erstellen!
Siehe: „ Die 10 wichtigsten Gründe, warum Phoenix “ ( weiter unten auf dieser Seite! )
Es stehen viele Frameworks zur Auswahl ( einige „beliebte“ werden unten im Abschnitt „ Fragen “ erwähnt ).
Aber wenn wir uns an dem orientieren, was „ populär “ ist, wären wir immer noch überall auf Pferden ( und Karren ) unterwegs und es gäbe keine Fortschritte .
Hinweis : Alle „ Warum “-Gründe für Elixir gelten auch für Phoenix !
Schauen Sie sie sich an: https://github.com/dwyl/learn-elixir#why
Ein Webanwendungs-Framework ohne Kompromisse !
Die größte „ Einschränkung “ bei jedem Technologieprojekt sind die Menschen . Ein „Unternehmer“/„Gründer“ oder „Produktbesitzer“ kann alle guten Ideen der Welt haben. Wenn er nicht in der Lage ist, die Idee in die Realität umzusetzen, ist sie bedeutungslos .
Natürlich sollten Sie Ihre eigenen Benchmarks auf Ihrer eigenen Hardware/Cloud ausführen und fundierte Entscheidungen auf der Grundlage der Anforderungen Ihrer App/Ihres Produkts treffen, aber ... wenn wir die Statistiken darüber lesen , wie viele gleichzeitige Benutzer eine Phoenix-App verarbeiten kann ( mit live WebSocket-Verbindungen ) waren wir überwältigt ! Das bedeutet, dass wir unsere Echtzeit-App(s) mit 90 % weniger Ressourcen erstellen können.
All dies bedeutet, dass Sie deutlich weniger Geld für Hardware/Cloud-Infrastruktur ausgeben , sodass Ihre App/Ihr Unternehmen einen Kostenvorteil erzielen kann.
Wenn Sie in der glücklichen Lage sind, für Ihr nächstes Projekt etwas viel Besseres in Betracht zu ziehen, sind Sie bei Phoenix genau richtig!
Lesen Sie mehr: http://www.phoenixframework.org
Viele Menschen/Teams/Unternehmen nutzen bereits Erlang/Elixir und Phoenix und sehen phänomenale Ergebnisse!
Einschließlich: Adobe, BBC, Spotify, Pinterest, Discord (Gamer-Chat-App), Groupon (Fave), Lonely Planet, Brightcove, Slack ...
Siehe: https://github.com/doomspork/elixir-companies
Sie können keine Phoenix-App erstellen, ohne Elixir zu kennen.
Wenn Sie neu bei Elixir sind, setzen Sie ein Lesezeichen für this
Repo ( damit Sie morgen darauf zurückgreifen können ).
und gehen Sie dann zu: github.com/dwyl/ learn-elixir, lernen Sie Elixir, bis Sie das Gefühl haben, die Syntax zu verstehen, und kommen Sie dann zurück und lernen Sie Phoenix!
Konkret sollten Sie sich auf das Erlernen der Elixier-Grundlagen konzentrieren:
Phoenix verwendet Node.js, um Assets wie JavaScript- und CSS-Dateien zu kompilieren ( mithilfe von Webpack).
Stellen Sie einfach sicher, dass Sie Node.js installiert haben. https://nodejs.org
Sie müssen Node nicht kennen, um Phoenix verwenden zu können.
Wenn Sie sich bereits mit Elixir vertraut gemacht und Node.js installiert haben, ist die Installation der erste Schritt zum Einstieg in Phoenix!
Die Phoenix-Dokumentation ist großartig, daher empfehlen wir, die offiziellen Phoenix-Installationsanweisungen zu befolgen!
Sie müssen auch PostgreSQL installieren. Eine Anleitung dazu finden Sie im oben verlinkten Phoenix-Installationshandbuch. Sie können sich aber auch unser learn-postgresql
Repo ansehen, um Anweisungen zu erhalten, und bei Problemen ein Problem melden !
Während ein grundlegendes Verständnis von JavaScript manchmal nützlich sein kann , müssen Sie nicht wissen, wie man Node verwendet, um Phoenix zu verwenden.
Wenn Sie neugierig sind, warum sie sich für Brunch.io gegenüber „ Alternativen “ entschieden haben,
Die kurze Antwort lautet: Einfachheit und Geschwindigkeit! siehe: http://brunch.io/docs/why-brunch
Hinweis : Phoenix v1.4 ( zum Zeitpunkt des Verfassens dieses Artikels noch nicht veröffentlicht ) verwendet WebPack für die Asset-Kompilierung, siehe: CHANGELOG.md
Machen Sie sich mit dem ( offiziellen ) Leitfaden „Up and Running“ vertraut : https://hexdocs.pm/phoenix/up_and_running.html#content
Sobald Sie Phoenix installiert und die offizielle Anleitung zur Inbetriebnahme befolgt haben,
Kommen Sie zurück und probieren Sie diese anfängerfreundlichen Beispiele aus:
Wir empfehlen den Leuten, das Buch von @chrismccord zu kaufen ( oder auszuleihen ): „Programming Phoenix“
siehe: https://pragprog.com/book/phoenix14/programming-phoenix-1-4
Die Autoren sind einzeln beeindruckend und gemeinsam decken sie Phoenix umfassend ab, wie es kein anderer kann ! Chris hat Phoenix geschaffen , José hat Elixir geschaffen und Bruce ist ein äußerst erfahrener technischer Autor mit vielen erfolgreichen Büchern auf seinem Namen!
( Das heißt: Das Buch ist die offensichtliche Wahl, um Phoenix zu lernen! )
https://youtu.be/MD3P7Qan3pw
https://youtu.be/srtMWzyqdp8
„ Phoenix bietet die Produktivität von Ruby-on-Rails
mit der Parallelität und Fehlertoleranz von Erlang .
Phoenix verwendet die Programmiersprache Elixir , was bedeutet, dass Ihre App auf der Erlang Virtual Machine „BEAM“ kompiliert und ausgeführt wird.
Erlang ist eine kampferprobte, äußerst fehlertolerante VM, die von vielen Telekommunikationsunternehmen verwendet wird
WebSockets („ Kanäle “) sind in das Framework integriert, was bedeutet, dass das Erstellen von Apps mit „Echtzeit“-Kommunikation und -Interaktion viel einfacher ist als praktisch jedes andere Framework/jede andere Plattform! ( Kein magic
von Drittanbietern erforderlich! Alles, was Sie brauchen , ist bereits vorhanden und steht Ihnen zur Verfügung, um Millionen von Menschen zu bedienen!! )
siehe: http://www.phoenixframework.org/docs/channels
Einfache Asynchronität , da die gesamte Programmierung in Phoenix ( Elixir ) funktionsfähig ist! Dies bedeutet, dass es wirklich einfach ist, nützliche Funktionen wie Anforderungsauthentifizierung, Protokollierung und Verarbeitung in „ Piplines “ zu abstrahieren, die für Menschen leicht lesbar sind! ( Kein async
Modul eines Drittanbieters erforderlich! Keine „Versprechen“, „Generatoren“ oder „Observablen“ zur Verwaltung!! )
Die Einstellung zu Sicherheit und Widerstandsfähigkeit ist die default
. Verschlüsselung (SSL) ist in Phoenix/Elixir einfach und sowohl die Abschwächung von SQL-Injection , Cross-Site Scripting ( XSS ) als auch der CSRF-Schutz sind integriert ( default
aktiviert ), sodass es für einen „ Neuling “-Programmierer praktisch unmöglich ist, diesen Typ einzuführen eines Sicherheitsfehlers.
Prägnanter Code ist nicht zu unterschätzen ! Wir können viel weniger Zeilen schreiben als in der entsprechenden Node.js/Java/Rails/Go-App, das bedeutet, dass Entwickler produktiver sind und weniger Code gewartet werden muss !
Testbarkeit durch funktionale Programmierung aller Controller!
Einfache Bereitstellung : https://hexdocs.pm/phoenix/heroku.html
Die Bereitstellung ohne Ausfallzeiten ist kostenlos ! ( wieder wegen Erlang ). Erlang verwaltet den Übergang von „ lebenden/aktiven “ Benutzern von der alten zur neuen Version Ihrer App, ohne dass diese überhaupt bemerken , dass sie aktualisiert/aktualisiert wurde!!
Dank der integrierten Überwachung/Verwaltung Ihrer App durch Erlang-Supervisor wissen Sie genau , wie Ihre App funktioniert, welche Teile abgestürzt/neu gestartet sind und warum! Dies ist eine Funktion, für die wir in anderen Frameworks ( viel ) bezahlen , und hier ist sie kostenlos !!
Können Sie sich einen weiteren Grund vorstellen, warum die Verwendung von Phoenix großartig ist?!
Bitte teilen Sie Ihre Gedanken in diesem Thread mit: #13
before
ich Phoenix ausprobiere/nutze?Ja . Siehe: https://github.com/dwyl/learn-elixir
NEIN . Sie können noch heute mit dem Erlernen/Verwenden von Elixir beginnen und bei Bedarf Erlang-Funktionen aufrufen.
aber Sie müssen Erlang nicht beherrschen, before
Sie Phoenix verwenden können!
Es gibt viele Webanwendungs-Frameworks, aus denen Sie/wir wählen können: https://en.wikipedia.org/wiki/Comparison_of_web_frameworks
Warum sollte jemand ein Framework wählen, das in einer Programmiersprache geschrieben ist, die nicht zum „ Mainstream “ gehört?
Das sind Fehlinformationen . Wir verwenden Hapi.js immer noch für eine Reihe von Projekten, bei denen es sinnvoll ist.
Dazu gehören mehrere Kundenprojekte und interne Dwyl-Apps/Tools.
Aus diesen einfachen Gründen haben wir uns für Phoenix für unsere neuen Projekte entschieden :
#LessIsMore
#LessButBetter
#SmallIsBeautiful
#SyntaxMatters
Für unsere neuen Projekte brauchen wir Multi-Datacenter-Fehlertoleranz !
Wir bekommen das „ kostenlos “, indem wir Erlang -> Elixir -> Phoenix verwenden !!
Unserer Meinung nach ist Hapi.js immer noch „ das beste “ Node.js-Framework und wir werden es continue
verwenden und empfehlen
für Menschen, die einfache Apps benötigen, die skalierbar und leicht zu warten sind.
siehe: https://github.com/dwyl/learn-hapi
Außerdem verwenden wir weiterhin JavaScript für alle unsere AWS Lambda Micro-Services, das wird sich nicht ändern.
Sie sind einfach, effizient und lassen sich wirklich gut skalieren!
siehe: https://github.com/dwyl/learn-aws-lambda
Die ursprünglichen „ produktiven “ Web-Frameworks waren „Ruby-on-Rails“ und „Django“ ( Python ) im Jahr 2005!
(Wir haben beides zeitweise auf unserer „ Reise “ genutzt und können über die Vorteile jedes einzelnen davon sprechen!)
Es ist „ nichts falsch “ daran, Rails oder Django zu verwenden.
Wir glauben, dass es für beide Frameworks noch viele Anwendungsfälle gibt.
Wir wissen nur, dass es ( viel ) einfacher ist, „in Echtzeit“ zu erstellen.
mit Phoenix, weil „Kanäle“ ( WebSockets ) eingebaut sind,
und die Elixir/Erlang-Parallelität ist ein ganz anderes Ballspiel!
Erlang (und damit Phoenix) kann Millionen gleichzeitiger Benutzer auf einem einzigen Server verwalten.
wohingegen ein Rails/Django-Server nur ein paar Tausend ( bestenfalls !) verarbeiten kann.
Wenn Ihre App nur ein paar tausend Menschen gleichzeitig bedient, dann ist alles in Ordnung!!
Wir lieben die Tatsache, dass Erlang „ leichte, langlebige “ Prozesse verwendet,
Das bedeutet, dass wir Millionen von ( IoT- )Geräten verbinden können ... Für IoT ist Erlang ( zweifellos ) die Antwort!
Für einfachere Web-Apps, bei denen Sie nur wenige Benutzer pro Tag erwarten, sind Rails/Django immer noch sinnvoll.
Aber warum Kompromisse eingehen , wenn es nicht nötig ist ?
Wenn Sie einen Tesla zum „Preis“ eines Ford Focus haben können, warum sollten Sie das nicht tun ?!?
Warum sich mit dem Guten zufrieden geben , wenn man leicht das Beste haben/nutzen kann?
Ja , GitHub verwendet immer noch Rails für seine Web-App/Site.
Aber fragen Sie jemanden aus dem Kernteam von GitHub, ob er sich (wenn er die Chance hätte, von vorne zu beginnen ) für Rails entscheiden würde
2017 GitHub zu erstellen und zu sehen, wie viele von ihnen „ Ja, natürlich “ sagen ( mit ernstem Gesicht... )!
Außerdem führt GitHub im Hintergrund viele Dinge mit Scale Rails durch.
Und viele ihrer neueren ( clientseitigen ) Funktionen sind in JavaScript geschrieben! siehe: https://github.com/github
Das Fazit lautet: Mit „DevOps“ kann alles maßstabsgetreu gemacht werden.
Aber Phoenix wirddefault
maßstabsgetreu erstellt , weil Erlang maßstabsgetreu erfunden wurde!
„ Es gibt zwei Arten von Programmiersprachen – solche, die niemand nutzt, und solche, über die sich alle lustig machen “ ~ Bjarne Stroustrup ( Erfinder von
C++
)
Go ist sehr beliebt. Vor allem aufgrund der Tatsache, dass Google es „ sponsert “.
Es sollte C++
und Java in Google vereinfachen ( ersetzen ) ...
und im Großen und Ganzen ist es gelungen!
Wir mögen Go wirklich . Bei der Auswahl der Programmiersprache war es unsere „Nummer zwei“.
( nach Elixir ) in unserem „Post-JS-Stack“ ... Die Entscheidung , elixir
anstelle von etwas else
zu verwenden , war einfach :
Weiterführende Literatur:
Play
Framework verwenden ...? Wenn Sie es bereits gewohnt sind, Java zu schreiben oder auf der JVM bereitzustellen, ist das Play Framework eine hervorragende Wahl: https://www.playframework.com
Scala ist eine gute Programmiersprache und jeder sollte sie lernen! https://www.scala-lang.org/what-is-scala.html
Wir haben Play ein paar Mal verwendet ( bevor wir Node.js eingeführt haben ) und es hat uns sehr gut gefallen!
Aber Scala ist eine „Küchenspüle“-Programmiersprache ( Multi-Paradigma ), die es Menschen ermöglicht, „ ganz Java “ zu verwenden ...
Wir glauben, dass die „Java-Interoperabilität“ von Scala bedeutet, dass es „zu einfach“ ist, Komplexität in Ihre Codebasis zu integrieren. Speziell „OOP-Mutation“ ...
Warum nutzen wir (DWYL) „Play“ nicht mehr für neue Projekte? Erstens sind wir vor ein paar Jahren auf Hapi.js ( Node.js ) umgestiegen, weil es „ leichtgewichtiger “ war und es uns ermöglichte, winzige Programme zu schreiben, die nur ein paar Megabyte RAM verbrauchten ( wobei unsere Play-Apps sehr ressourcenintensiv waren). .! Haben Sie schon einmal versucht, eine Scala-App auf einem „einfachen“ Laptop wie einem Chromebook auszuführen?
Zusammenfassung der „Gründe“ für Phoenix statt Play:
Wir sind einfach der Meinung, dass das Parallelitätsmodell von Erlang für unsere Projekte besser funktioniert und der Funktionscode, der unveränderliche Daten umwandelt, einfacher zu testen und zu warten ist .
Wenn Sie Beweise dafür haben, dass „ Scala einfacher ist “, würden wir uns freuen , von Ihnen zu hören!
Sagen Sie es uns: https://github.com/dwyl/learn-phoenix-web-development/issues
Wenn Ihnen Functional Programming ( FP ) so gut gefällt, warum nutzen Sie dann nicht Haskell?