Apprenez à utiliser Phoenix Framework pour vous amuser en créant des applications Web/mobiles en temps réel
rapides pour les " utilisateurs finaux " , fiables , évolutifs , maintenables et ( facilement ) extensibles !
En tant que développeurs d'applications Web/mobiles, nous devons tirer parti du travail effectué par d'autres personnes ( très intelligentes ).
au lieu de construire constamment des choses « à partir de zéro » tout le temps ; c'est pourquoi nous utilisons des frameworks pour créer nos applications !
Voir : « Les 10 principales raisons pour lesquelles Phoenix » ( plus bas sur cette page ! )
Il existe de nombreux frameworks parmi lesquels choisir ( quelques-uns « populaires » sont mentionnés ci-dessous dans la section « Questions » ).
Mais si nous nous en tenons à ce qui est « populaire », nous continuerions à monter à cheval ( et en charrette ) partout et aucun progrès ne serait réalisé.
Attention : toutes les raisons " Pourquoi " d' Elixir s'appliquent également à Phoenix !
consultez-les : https://github.com/dwyl/learn-elixir#why
Un framework d'application web sans compromis !
La plus grande « contrainte » dans tout projet technologique, ce sont les personnes . Un « Entrepreneur »/« Fondateur » ou « Product Owner » peut avoir toutes les bonnes idées du monde, s'il est incapable de transformer une idée en réalité , cela n'a aucun sens .
Évidemment , vous devez exécuter vos propres tests de performance sur votre propre matériel/cloud et prendre des décisions éclairées en fonction des exigences de votre application/produit, mais... lorsque nous lisons les statistiques sur le nombre d'utilisateurs simultanés qu'une application Phoenix peut gérer ( avec live Connexions WebSocket ), nous avons été époustouflés ! Cela signifie que nous pouvons créer nos applications en temps réel avec 90 % de ressources en moins.
Tout cela signifie que vous dépensez considérablement moins d'argent en infrastructure matérielle/cloud, afin que votre application/entreprise puisse bénéficier d'un avantage concurrentiel en termes de coûts .
Si vous avez la chance d’ envisager d’utiliser quelque chose de bien meilleur pour votre prochain projet, ne cherchez pas plus loin que Phoenix !
Lire la suite : http://www.phoenixframework.org
De nombreuses personnes/équipes/entreprises utilisent déjà Erlang/Elixir et Phoenix et constatent des résultats phénoménaux !
Y compris : Adobe, BBC, Spotify, Pinterest, Discord (Gamer Chat App), Groupon (Fave), Lonely Planet, Brightcove, Slack...
Voir : https://github.com/doomspork/elixir-companies
Vous ne pouvez pas créer une application Phoenix sans connaître Elixir.
Si vous êtes nouveau sur Elixir, "star" ( favori ) this
dépôt ( afin que vous puissiez y revenir demain )
puis allez sur : github.com/dwyl/ learn-elixir apprenez l'élixir jusqu'à ce que vous ayez l'impression de comprendre la syntaxe, puis revenez et apprenez Phoenix !
Plus précisément, vous devez vous concentrer sur l’apprentissage des « bases » de l’Elixir :
Phoenix utilise Node.js pour compiler des actifs tels que des fichiers JavaScript et CSS ( à l'aide de Webpack).
Assurez-vous simplement que Node.js est installé . https://nodejs.org
Vous n'avez pas besoin de connaître Node pour utiliser Phoenix.
Si vous avez déjà appris Elixir et installé Node.js, alors la première étape pour démarrer avec Phoenix est l'installation !
La documentation de Phoenix est incroyable, nous vous recommandons donc de suivre les instructions d'installation officielles de Phoenix !
Vous devrez également installer PostgreSQL, il y a un tutoriel expliquant comment procéder dans le guide d'installation de Phoenix lié ci-dessus, mais vous pouvez également consulter notre dépôt learn-postgresql
pour obtenir des instructions et soulever un problème si vous rencontrez des problèmes. !
Bien qu'une compréhension de base de JavaScript puisse parfois être utile, vous n'avez pas besoin de savoir comment utiliser Node pour utiliser Phoenix.
Si vous êtes curieux de savoir pourquoi ils ont choisi Brunch.io plutôt que les " alternatives ",
la réponse courte est : Simplicité et rapidité ! voir : http://brunch.io/docs/why-brunch
Remarque : Phoenix v1.4 ( inédit au moment de la rédaction ) utilise WebPack pour la compilation des actifs, voir : CHANGELOG.md
Familiarisez -vous avec le guide "Up and Running" ( officiel ) : https://hexdocs.pm/phoenix/up_and_running.html#content
Une fois que vous avez installé Phoenix et suivi le guide officiel « opérationnel »,
revenez et essayez ces exemples adaptés aux débutants :
Nous recommandons aux gens d'acheter ( ou d'emprunter ) le livre de @chrismccord : "Programming Phoenix"
voir : https://pragprog.com/book/phoenix14/programming-phoenix-1-4
Les auteurs sont individuellement impressionnants et collectivement, ils couvrent globalement Phoenix comme personne d'autre ne peut le faire ! Chris a créé Phoenix, José a créé Elixir et Bruce est un auteur technique ultra-expérimenté avec de nombreux livres à succès à son actif !
( c'est-à-dire : le livre est le choix évident pour apprendre Phoenix ! )
https://youtu.be/MD3P7Qan3pw
https://youtu.be/srtMWzyqdp8
" Phoenix offre la productivité de Ruby-on-Rails
avec la concurrence et la tolérance aux pannes d' Erlang .
Phoenix utilise le langage de programmation Elixir , ce qui signifie que votre application est compilée et exécutée sur la machine virtuelle Erlang « BEAM ».
Erlang est une machine virtuelle hautement tolérante aux pannes et utilisée par de nombreuses entreprises de télécommunications.
Les WebSockets (« canaux ») sont intégrés au framework, ce qui signifie que créer des applications avec une communication et une interaction « en temps réel » est beaucoup plus facile que pratiquement n'importe quel autre framework/plateforme ! ( aucun module magic
tiers n'est nécessaire ! Tout ce dont vous avez besoin est déjà là, prêt à servir des millions de personnes !! )
voir : http://www.phoenixframework.org/docs/channels
Asynchronisme facile car toute la programmation dans Phoenix ( Elixir ) est Fonctionnelle ! Cela signifie qu'il est très simple d'abstraire des fonctionnalités utiles telles que l'authentification, la journalisation et le traitement des demandes dans des " piplines " facilement lisibles par l'homme ! ( aucun module async
tiers requis ! pas de « promesses », de « générateurs » ou d'« observables » à gérer !! )
La mentalité de sécurité et de résilience est la default
. Le cryptage (SSL) est simple dans Phoenix/Elixir et l'atténuation de l'injection SQL , le Cross-site Scripting ( XSS ) et la protection CSRF sont intégrés ( activés par default
), il est donc pratiquement impossible pour un programmeur « novice » d'introduire ce type. de bug de sécurité.
Un code concis ne peut pas être sous-estimé ! Nous pouvons écrire beaucoup moins de lignes que dans l'application équivalente Node.js/Java/Rails/Go, cela signifie que les développeurs sont plus productifs et qu'il y a moins de code à maintenir !
Testabilité grâce à la programmation fonctionnelle de tous les contrôleurs !
Déploiement facile : https://hexdocs.pm/phoenix/heroku.html
Le déploiement sans temps d'arrêt est gratuit ! ( encore une fois à cause d'Erlang ). Erlang gère la transition des utilisateurs « live/actifs » de l'ancienne vers la nouvelle version de votre application sans même qu'ils se rendent compte qu'elle a été mise à niveau/mise à jour !!
La surveillance/gestion intégrée de votre application via les superviseurs Erlang signifie que vous savez exactement comment votre application fonctionne, quelles parties ont planté/redémarré et pourquoi ! C'est une fonctionnalité pour laquelle nous payons ( beaucoup ) dans d'autres frameworks et ici c'est gratuit !!
Pouvez- vous penser à une autre raison pour laquelle utiliser Phoenix est génial ?!
S'il vous plaît partagez vos réflexions dans ce fil : #13
before
d’essayer/utiliser Phoenix ?Oui . Voir : https://github.com/dwyl/learn-elixir
Non . Vous pouvez commencer à apprendre/utiliser Elixir aujourd'hui et appeler les fonctions Erlang si nécessaire,
mais vous n'avez pas besoin de connaître Erlang before
de pouvoir utiliser Phoenix !
Il existe de nombreux frameworks d'applications Web parmi lesquels vous pouvez/nous pouvons choisir : https://en.wikipedia.org/wiki/Comparison_of_web_frameworks
Alors pourquoi choisirait -on un framework écrit dans un langage de programmation qui n'est pas " mainstream "... ?
C'est une désinformation . Nous utilisons toujours Hapi.js pour un certain nombre de projets lorsque cela est approprié .
Cela inclut plusieurs projets clients et applications/outils internes dwyl.
Nous avons décidé d'utiliser Phoenix pour nos nouveaux projets pour ces raisons simples :
#LessIsMore
#LessButBetter
#SmallIsBeautiful
#SyntaxMatters
Pour nos nouveaux projets, nous avons besoin d'une tolérance aux pannes multi-datacenters !
nous obtenons cela " gratuitement " en utilisant Erlang -> Elixir -> Phoenix !!
À notre avis, Hapi.js reste " le meilleur " framework Node.js et nous continue
à l'utiliser et à le recommander .
aux personnes qui ont besoin d’applications simples , évolutives et faciles à maintenir.
voir : https://github.com/dwyl/learn-hapi
De plus, nous utilisons toujours JavaScript pour tous nos micro-services AWS Lambda, cela ne va pas changer.
Ils sont simples, efficaces et évolutifs très bien !
voir : https://github.com/dwyl/learn-aws-lambda
Les frameworks Web « productifs » d'origine étaient « Ruby-on-Rails » et « Django » ( python ) en 2005 !
(Nous avons utilisé les deux à certaines périodes de notre " voyage " et pouvons parler des avantages de chacun d'eux !)
Il n'y a " rien de mal " à utiliser Rails ou Django.
Nous pensons qu'il existe encore de nombreux cas d'utilisation pour les deux frameworks.
Nous savons juste qu'il est ( beaucoup ) plus facile de construire "en temps réel"
avec Phoenix parce que les "Channels" ( WebSockets ) sont intégrés,
et la concurrence Elixir/Erlang est un tout autre jeu de balle !
Erlang (et donc Phoenix) peut gérer des millions d' utilisateurs simultanés sur un seul serveur,
alors qu'un serveur Rails/Django ne peut en gérer que quelques milliers ( au mieux !)
si votre application ne sert que quelques milliers de personnes à la fois, alors tout va bien !!
Nous aimons le fait qu'Erlang utilise des procédés " légers et de longue durée ",
ce qui signifie que nous pouvons connecter des millions d'appareils ( IoT )... Pour l'IoT, Erlang est ( incontestablement ) la réponse !
Pour les applications Web plus simples où vous n'attendez que quelques utilisateurs par jour, Rails/Django sont toujours viables.
Mais pourquoi faire des compromis si ce n'est pas nécessaire ?
Si vous pouvez avoir une Tesla pour le « prix » d’une Ford Focus, pourquoi pas ?!?
Pourquoi se contenter du bien quand on peut facilement avoir/utiliser le meilleur ?
Oui , GitHub utilise toujours Rails pour son application/site Web.
Mais demandez à n'importe quel membre de l'équipe principale de GitHub si ( avec la chance de recommencer ) il choisirait Rails.
construire GitHub en 2017, et voyez combien d'entre eux disent " oui, bien sûr " ( avec un visage impassible... ) !
De plus, GitHub fait beaucoup de choses pour mettre à l'échelle Rails en arrière-plan.
Et bon nombre de leurs fonctionnalités les plus récentes ( côté client ) sont écrites en JavaScript ! voir : https://github.com/github
L'essentiel est le suivant : tout peut être adapté à l'échelle en utilisant "DevOps",
mais Phoenix est fait à l'échelle pardefault
parce qu'Erlang (a été) inventé (à) l'échelle !
" Il existe deux types de langages de programmation : ceux que personne n'utilise et ceux dont tout le monde se plaint " ~ Bjarne Stroustrup ( créateur du
C++
)
Go est très populaire. En grande partie dû au fait que Google le « sponsorise ».
Il visait à simplifier ( remplacer ) C++
et Java dans Google...
et pour l’essentiel, c’est réussi !
Nous aimons vraiment Go. C'était notre choix "numéro deux" pour décider quel langage de programmation
( après Elixir ) dans notre "stack post JS"... La décision d' utiliser elixir
à la place de toute else
a été facile :
Lectures complémentaires :
Play
Framework à la place ... ? Si vous êtes déjà habitué à écrire du Java ou à déployer sur la JVM, Play Framework est un excellent choix : https://www.playframework.com
Scala est un bon langage de programmation et tout le monde devrait l'apprendre ! https://www.scala-lang.org/what-is-scala.html
Nous avons utilisé Play plusieurs fois ( avant d'adopter Node.js ) et nous l'avons vraiment apprécié !
Mais Scala est un langage de programmation "d'évier de cuisine" ( multi-paradigme ) qui permet aux gens d'utiliser " tout Java "...
Nous pensons que « l'interopérabilité Java » de Scala signifie qu'il est « trop facile » d'autoriser la complexité dans votre base de code. Plus précisément "Mutation POO"...
Alors pourquoi nous (DWYL) n'utilisons-nous plus « Play » pour de nouveaux projets ? Premièrement, nous sommes passés à Hapi.js ( Node.js ) il y a quelques années car il était plus « léger » et nous permettait d'écrire de petits programmes qui n'utilisaient que quelques Mo de RAM ( alors que nos applications Play étaient très gourmandes en ressources. .! avez-vous déjà essayé d'exécuter une application Scala sur un ordinateur portable "de base" comme un Chromebook... )
Résumé des « raisons » pour Phoenix au lieu de Play :
Nous pensons simplement que pour nos projets, le modèle de concurrence d'Erlang fonctionne mieux et la transformation du code fonctionnel Les données immuables sont plus faciles à tester et à maintenir .
Si vous avez la preuve que « Scala est plus simple », nous serions ravis de vous entendre !
Dites-nous : https://github.com/dwyl/learn-phoenix-web-development/issues
Si vous aimez tellement la programmation fonctionnelle ( FP ), pourquoi ne pas utiliser Haskell ?