Catégories
Astuces et Design

Qu'est-ce que RedwoodJS? – Magazine Smashing

Nous parlons de RedwoodJS. Que signifie exactement être un framework Jamstack à pile complète? Drew McLellan s'entretient avec le champion communautaire Anthony Campolo pour le savoir.

Nous parlons de RedwoodJS. Que signifie exactement être un framework Jamstack à pile complète? J'ai parlé au champion communautaire Anthony Campolo pour le savoir.

Afficher les notes

Mise à jour hebdomadaire

Transcription

Photo d'Anthony CampoloDrew McLellan: Il est étudiant à l’école Lambda, étudiant le développement Web complet et contributeur à RedwoodJS. Quelque chose d'un champion de la communauté, il a récemment écrit une série d'articles en 12 parties intitulée Un premier regard sur RedwoodJS qui aide à expliquer les origines et les motivations de Redwood, ainsi que de nombreux concepts différents que le cadre introduit. Nous savons donc qu’il est un expert chez RedwoodJS, mais saviez-vous qu’il n’a jamais vu de chien? Mes amis fracassants, veuillez souhaiter la bienvenue à Anthony Campolo.

A dessiné: Salut Anthony. Comment allez-vous?

Anthony Campolo: Bonjour. Je fracasse, merci beaucoup de m'avoir invité.

A dessiné: Je voulais vous parler aujourd'hui, et c'est probablement évident dès l'introduction, à propos de RedwoodJS. Pour ceux qui n’ont jamais entendu parler de RedwoodJS, à un niveau élevé, qu’est-ce que c’est?

Anthony: Je pense qu'il y a plusieurs façons de le décrire en fonction de la provenance des gens, mais la définition canonique est qu'il s'agit d'un framework sans serveur complet pour le Jamstack. Ainsi, il combine le développement Web complet avec des éléments de type AWS Lambda sans serveur et le Jamstack, ce qui est une grande chose de nos jours.

A dessiné: C'est donc un framework full stack qui tente de rassembler un grand nombre d'idées autour d'un écosystème de développement Jamstack? Est-ce correct?

Anthony: Oui, cela repousse les limites de ce qu'une application Jamstack peut être, donc en l'appelant full stack, Jamstack, il s'agit de savoir comment aller au-delà du simple front-end pour avoir le même type de paradigme de déploiement de simplement être poussé, obtenir votre tout code déployé. Comment pouvons-nous obtenir cela, mais aussi avec notre back-end, et tout connecter?

A dessiné: Maintenant, avant d’aller trop loin, je pense que c’est assez intéressant d’entendre qu’il s’agit d’une équipe assez chevronnée, non? Les gens derrière Redwood, ce ne sont pas des poulets de printemps. Pour ne pas dire qu'ils sont vieux, mais ils ont fait le tour du bloc, n'est-ce pas, en termes de développement Web?

Anthony: Ils sont chevronnés. Oui, j'ai en fait consacré beaucoup de temps à écrire sur l'histoire du framework et les idées qui y ont conduit, et Tom Preston-Werner est le créateur, et il est donc également connu comme le créateur de Jekyll, qui est un générateur de site statique très influent. Il a également fait TOML, le langage du fichier de configuration. Et il était le PDG de GitHub à l'origine. Donc, son travail avec les pages Jekyll et GitHub et ce genre de choses, je pense, a vraiment conduit à ce que nous considérons maintenant comme le Jamstack. Beaucoup de gens diraient: «Oh, le Jamstack est nouveau. Ils font ça depuis toujours. » C’est ainsi que nous avons parlé de la façon dont il s’agit d’une extension de ces anciennes idées, les générations de sites statiques, mais avec GraphQL et sans serveur et ces idées sur la façon d’utiliser le code glue et les API pour faire fonctionner votre application.

A dessiné: Donc, cela vient certainement de gens qui sont très intégrés dans cette communauté? Je veux dire, le PDG de GitHub, vous n’êtes vraiment pas plus intégré dans le genre de communauté open source que cela. Donc, Redwood est un framework full stack et je suppose que cela signifie que vous avez du code Redwood en cours d'exécution dans le front-end et dans le back-end. Est-ce correct?

Anthony: Ouais, c’est la première chose que j’aime expliquer aux gens quand je leur montre un projet Redwood, c’est que c’est un monorepo. Ainsi, vous avez votre front-end et votre backend dans le même référentiel, puis chacun d'entre eux vit dans ses propres dossiers. Vous disposez d'un dossier Web, qui est votre frontal, et il est assez similaire à ce que vous obtiendriez d'une application Create React. Ensuite, vous avez le dossier API, qui est votre back-end, et c'est là que toutes vos fonctions sont essentiellement placées dans un gros gestionnaire GraphQL qui est déployé sur AWS Lambda via Netlify.

A dessiné: D'accord, donc en commençant par l'avant, comme vous le dites, c'est basé sur React. Est-ce React plus un tas de code Redwood, ou est-ce simplement React? Quel est le solde?

Anthony: C’est beaucoup de choses. C'est vraiment React dans le sens où vous n'introduisez pas beaucoup de bibliothèques de gestion d'état, vous n'introduisez même pas de routeur en fait. Ils ont leur propre routeur qu'ils ont écrit et ils utilisent beaucoup de trucs GraphQL. Ainsi, lorsque les gens parlent de React, GraphQL et de leurs amis, c'est un peu ce qui se passe ici, c'est que cela vous donne beaucoup d'intégrations par défaut pour que React parle à votre GraphQL. Parce que nous avons maintenant beaucoup de conventions sur la façon d'utiliser React, mais la récupération des données est toujours un énorme problème.

A dessiné: Donc, c'est React configuré avec un tas d'autres outils qui fonctionnent bien avec React pour vous donner un écosystème fonctionnel pour effectuer ce type de tâche particulier. Est-ce une description juste?

Anthony: Ouais, non, ouais, c’est une excellente façon de le dire. La façon dont Tom l'a dit est qu'il existe toutes ces meilleures solutions de race qui existent, ainsi que des outils et des technologies vraiment sophistiqués que nous pouvons utiliser, mais il est vraiment difficile de les exploiter parce que vous avez un coût de démarrage si énorme et que vous devez les apprendre. , devoir trouver comment les intégrer. Donc, ils mettent le slogan comme: "Nous faisons votre configuration Webpack pour vous."

A dessiné: Je pense que c'est un problème commun que vous entendez de la part de beaucoup de gens lorsqu'ils essaient de se lancer dans le cadre de développement moderne avec des applications JavaScript côté client et la configuration du pack Web, la configuration de toutes les différentes choses, les processus de construction, les étapes de construction . Cela peut être tout un champ de mines, n'est-ce pas, pour que tout soit connecté et fonctionne? Et il reste encore beaucoup de temps avant d’arriver à "Hello, World!". Alors, Redwood nous donne tout ce préconfiguré?

Anthony: Ouais, c’est vraiment une convention sur l’idée du type de configuration, parce que vous avez… Tom était, comme il a construit GitHub avec Ruby on Rails et Rob, l’un des autres contributeurs principaux, il a toujours été un développeur Rails. Ils ont beaucoup d'idées avec lesquelles ils s'alignent philosophiquement en termes de Rails, mais ils veulent prendre ces conventions sur les idées de configuration, les idées de cadre complet, et les implémenter avec toute la technologie moderne dont nous disposons actuellement.

A dessiné: Donc, vous avez mentionné que Redwood vous donne un routeur ou un routeur, comme nous le disons de ce côté de l'étang, est-il livré avec des éléments tels que des composants par défaut et tout ce genre de choses dans React, ou êtes-vous juste à mettre en œuvre tout ça toi-même?

Anthony: Oui, le routeur est très sophistiqué. Il fait la plupart des choses que vous obtiendriez uniquement du routeur React, il a juste des idées différentes quant à la façon dont elles devraient être implémentées, car ensuite, ils ont également leur propre routeur, et il n'est toujours pas vraiment compris comment nous souhaitez que le routage de notre application sur une seule page fonctionne. À cause de Suspense, vous avez beaucoup de ce genre de questions sur où vont les choses asynchrones? Nous avons avec Redwood, cette idée de cellule, et c'est ce que vos données récupèrent vraiment pour vous.

A dessiné: Alors, peut-être pourrions-nous entrer un peu dans cela? Qu'est-ce qu'une cellule en termes de séquoia?

Anthony: Oui, donc une cellule est un moyen par défaut d'écrire une requête GraphQL, puis de faire en sorte que votre page dise si vous récupérez les données, si vous obtenez une erreur, si vous êtes dans un état de chargement ou si … Il y a encore un état, j'oublie. Mais oui, cela vous donne les différents états dans lesquels vous pouvez vous trouver en fonction du fait que vous recevez vos données ou non. Il est configuré avec Apollo sous les couvertures. Donc, si vous utilisez Redwood, vous utilisez Apollo comme client GraphQL, mais vous n’avez jamais à y penser. Vous n'avez jamais à écrire d'Apollo ni même à y penser, tout est intégré. Il vous permet simplement d'écrire des requêtes GraphQL, ce qui était vraiment le rêve de savoir pourquoi les gens voulaient GraphQL, c'est que c'était ce langage de requête très simple que les développeurs frontaux pourrait utiliser. Mais ensuite, vous deviez comprendre comment configurer un serveur GraphQL, vous deviez comprendre toutes ces autres choses et comment faire pour que tout cela soit câblé. Donc, il fait toute l'intégration de GraphQL pour vous afin que vous puissiez simplement écrire GraphQL, vous n'avez pas à penser à la façon dont j'implémente même GraphQL.

A dessiné: Donc, je suppose que l'un des travaux classiques d'un cadre est de prendre tout le code de plaque de chaudière que vous pourriez écrire vous-même et de l'implémenter pour vous, et de ranger le chemin dans les coulisses pour que vous n'ayez plus jamais à regarder cette plaque de chaudière. , et vous pouvez simplement écrire le code qui est unique à votre situation. Je suppose que c’est ce qui se passe avec une cellule, non? Il n’y a rien de révolutionnaire ici, c’est quelque chose que vous pouvez configurer un composant React pour avoir tous ces états différents et vous pouvez accrocher à Apollo et vous pouvez faire tout cela vous-même, mais c'est en fait beaucoup de travail et c'est un modèle commun. Donc, Redwood a rangé dans un joli motif réutilisable que vous pouvez simplement commencer à utiliser sans avoir à y penser. Est-ce une bonne description?

Anthony: Oui, ils ont trouvé le nom, mais ils reconnaissent définitivement que c'était une pratique qu'ils voyaient fréquemment et qu'ils ont vu beaucoup de gens le coder eux-mêmes, et ils ont décidé qu'ils voulaient un moyen déclaratif de récupérer vos données. C'est pourquoi vous avez cette configuration, car elle vous permet d'avoir vos différents états et vous n'avez pas à faire si / alors la logique pour comprendre, vous devez le faire si cela se produit. Il s'agit donc simplement de disposer d'une seule façon de déclarer tous les différents états dans lesquels vos données pourraient se trouver lorsque vous les chargez.

A dessiné: C'est l'une des caractéristiques de React, n'est-ce pas, que React n'essaie pas de vous donner une architecture pour votre projet, il vous permet de décider comment vous allez structurer les choses. Cela, bien sûr, a des avantages et des inconvénients. Mais, il semble que Redwood vous impose une partie de cette structure pour que vous n'ayez pas à y penser et pour qu'il puisse mettre la plomberie pour vous et reprendre en quelque sorte là où React s'est arrêté en termes de vous donner ce genre de structure.

Anthony: Oui, et je pense que c'est vraiment intéressant que nous ayons vu plusieurs tentatives différentes pour résoudre ce problème, parce que je veux dire que vous avez des gens qui le disent depuis toujours: «Pourquoi n'y a-t-il pas de Rails pour JavaScript ou un Rails pour React? » Il y a une excellente interview de la radio Full Stack entre Michael Chan et Adam Wathan intitulée React is Not a Rails concurrent. C'est l'un des différents cadres.

Anthony: Les autres sont BlitzJS qui a eu beaucoup de buzz, puis Bison est en quelque sorte un nouveau et à venir. Ils ont tous une pile similaire, mais ils utilisent des pièces différentes. Vous aurez une requête React au lieu d'Apollo, ou vous aurez Chakra au lieu de Tailwind. Les gens qui rassemblent toutes ces pièces dans leurs piles, toutes ces piles sont en quelque sorte, ils se battent, c'est une compétition très amicale. En fait, c’est une chose que j’apprécie vraiment, c’est que nous collaborons tous aussi entre les frameworks. Il n’y a pas d’animosité.

A dessiné: Donc, nous avons mentionné Apollo et GraphQL, Redwood utilise beaucoup GraphQL comme l’une des pièces maîtresses, n’est-ce pas, du framework? Nous pouvons probablement dédier un épisode de podcast entier à GraphQL, mais pour ceux qui ne sont pas familiers, que fait GraphQL ici, quel problème résout-il dans ce contexte?

Anthony: Ouais, c'est une excellente question. Lorsque je dis aux gens ce qu'ils doivent savoir pour bien démarrer avec Redwood, je dirais que vous auriez dû utiliser l'application Create React, juste si vous avez créé une application Create React et que vous l'avez déployée sur Netlify ou Vercel, ça vous donnera un bon départ. Ensuite, connaissez au moins un peu GraphQL car il est très central. Ainsi, GraphQL est la façon dont votre front-end parlera à votre back-end. Ils disent que c'est un langage de requête pour les API, l'idée étant qu'il est censé être une alternative aux méthodes API RESTful, et qu'au lieu de faire cette chose RESTful, vous envoyez des requêtes qui spécifient exactement la structure de données hiérarchique que vous souhaitez recevoir en retour. la base de données. Donc, il faut un peu plus de temps de démarrage pour que votre serveur GraphQL parle aux deux pièces. Ensuite, une fois que vous l'avez là, les développeurs front-end ont la possibilité d'obtenir des données de manière beaucoup plus flexible. Vous n'avez pas besoin de tous ces différents points de terminaison d'API que vos responsables back-end doivent continuer à créer.

A dessiné: Donc, s'il y a des changements dans les exigences du front-end, vous pouvez vraisemblablement simplement modifier votre requête GraphQL et vous n'avez pas besoin de l'aide de quelqu'un qui travaille sur le back-end pour effectuer ce changement pour vous?

Anthony: Je veux dire, le vrai rêve est que vous puissiez lancer un client mobile, que ce soit finalement aussi flexible que cela devienne, vous pouvez avoir plusieurs clients qui parlent tous à votre seule API. Votre API GraphQL devient votre source de vérité, c'est là que toute votre logique est centralisée. Ensuite, vous pouvez créer toutes ces différentes couches de vue par-dessus.

A dessiné: Donc, nous avons GraphQL là-bas qui nous permet d'interroger une sorte de back-end. Dans Redwood, quel est le back-end?

Anthony: Ouais. Il existe plusieurs façons de créer votre back-end. Voici comment vous sortirez de la boîte avec le didacticiel, qui consiste à utiliser la base de données Postgres déployée sur Heroku, super facile, super simple. Ensuite, votre application Redwood lui parle avec Prisma. Je ne sais pas si vous connaissez du tout Prisma, mais c'est comme un O / RM. Ils disent spécifiquement que ce n’est pas un O / RM, c’est un générateur de requêtes, qui est un peu plus bas. Mais, dans le but de simplement l'expliquer aux gens, Prisma est ce qui vous permet de parler à votre base de données. Il effectue vos migrations et configure vos tables. Il fait tout le truc SQL pour que vous n'ayez pas à écrire du SQL. Pour moi, cela ressemble à un O / RM. Vous n'avez pas nécessairement besoin d'utiliser Prisma pour utiliser Redwood.

Anthony: En fait, j'ai créé une application de preuve de concept dans laquelle nous avons utilisé FaunaDB à la place. FaunaDB, ils ont leur propre API GraphQL, vous pouvez donc simplement envoyer l'API GraphQL directement à Fauna, puis effectuer les mutations de votre base de données de cette façon. Vous perdez une grande partie des fonctionnalités de la CLI de Prisma, mais Prisma est vraiment un facteur de commodité pour travailler très facilement avec votre base de données relationnelle. Mais vraiment, tout ce à quoi vous pourriez penser, vous pourriez comprendre comment le connecter à Redwood, c'est ce que j'ai découvert simplement parce qu'il est construit autour de GraphQL et que le but est de pouvoir parler à toutes ces différentes pièces.

A dessiné: Ainsi, Prisma est essentiellement une sorte de couche d'abstraction entre votre code et le magasin de données que vous utilisez, vraisemblablement, que Prisma prend en charge, est-ce que… ou fait-il des choses plus intelligentes que cela?

Anthony: Ouais, donc vous écrivez un schéma, donc vous créez un fichier schema.Prisma, et il aurait un post de modèle, puis il aurait un id et un entier et une incrémentation automatique, comme le titre sting, la chaîne de corps, créé à la date, à l'heure. Donc, vous créez essentiellement ce que vous voulez être dans votre base de données avec les types, puis il s'occupe de la base de données pour vous afin que vous n'ayez pas à interagir avec la base de données.

A dessiné: Donc, vous utilisez Prisma pour définir je suppose à quel type de base de données ou à quel type de magasin de données vous parlez. Ensuite, là-dedans, vous exposez vos différents modèles de mvc pour utiliser ce langage. Alors, lorsque votre application communique avec les magasins de données, elle utilise en quelque sorte une instance d'un client Prisma, n'est-ce pas? Est-ce que c'est ce qui se passe?

Anthony: Oui. Ouais, c’est exactement ça. Ainsi, dans le dossier API de votre back-end, vous avez un dossier lib avec un db.js, et par défaut, votre client Prisma est configuré. Donc, c'est tout ce que vous sortez de la boîte, et comme vous l'avez dit, Prisma peut travailler avec différentes bases de données. Il peut basculer entre SQLite pour le développement et Postgres pour la production, ce genre de chose. Il s'agit principalement de relations relationnelles pour le moment, mais la feuille de route contient des éléments comme Mongo et Fauna.

A dessiné: C'est donc très utile si vous pouvez configurer et utiliser SQLite dans votre environnement de développement local au fur et à mesure que vous mettez les choses en marche, puis passez à la production avec quelque chose comme MySQL.

Anthony: C’est exactement ainsi que le didacticiel est mis en place, c’est le flux de travail qu’il vous montre.

A dessiné: C'est assez intéressant, n'est-ce pas, de voir une approche très moderne d'un framework puis de se rabattre sur certaines de ces bases de données plus traditionnelles comme MySQL. Je connais très bien MySQL. Je l'adore pour sa stabilité et j'adore la manière relationnelle de stocker les données. Je pense que cela fonctionne si bien pour tant de choses. Souvent, vous voyez le bébé jeté qui était l’eau du bain en ce qui concerne les nouveaux types de magasin de données, il est donc très intéressant de voir Redwood par défaut prendre en charge ces bonnes et anciennes bases de données relationnelles.

Anthony: Oui, non, c’est un très bon point, car je dis que pour toutes les nouvelles choses que Redwood combine, il y a des choses qui disent que l’ancienne méthode éprouvée est en fait la meilleure. Donc, ils sont vraiment gros sur les bases de données relationnelles. Cela vient de l'expérience de Tom avec l'utilisation de Rails et avec un back-end relationnel. Active Record était la couche O / RM que Prisma entendait rapprocher.

A dessiné: Je suppose que nous parlons ici d'une architecture sans serveur avec Redwood, et nous avons parlé à Chris Coyier, je pense, il y a deux ou trois épisodes, tous sur l'utilisation sans serveur d'API, la fonction cloud et autres. Donc, en prenant du recul, si vous deviez penser en termes de framework basé sur un serveur, comme nous l'avons mentionné Ruby on Rails ou quelque chose comme Laravel dans le monde PHP. Même avec un frontal React, votre demande d'API exécuterait du code qui est du code Rails ou du code Laravel, plus votre code utilisateur et votre configuration. Est-ce la même chose avec Redwood? Existe-t-il un code de serveur Redwood qui s'exécute, ou est-ce simplement plus d'outils, de structure et de colle qui vous permettent d'implémenter le vôtre?

Anthony: Ouais, donc dans le back-end, il y a un fichier spécifiquement qui est un moyen de prendre votre SDL, donc vous avez votre langage de définition de schéma, puis vous avez ce que l'on appelle vos services, qui sont comme vos méthodes pour parler à votre back-end . Ensuite, tout cela est assemblé dans un gestionnaire GraphQL qui est déployé sur une seule fonction Lambda. Il est donc optimisé spécifiquement pour Lambda. En fait, nous avons récemment demandé à quelqu'un de le faire avec le framework sans serveur, et certaines personnes travaillent sur Azure et Google Cloud. Ce n’est pas la fonction Google Cloud, c’est celle qui s’ajoute à cela. Mais oui, il est donc actuellement essentiellement optimisé pour déployer votre back-end en tant que fonction GraphQL dans un AWS Lambda. C’est tout ce qui se passe de façon magique dans le code que je ne comprends pas, mais c’est l’explication de haut niveau.

A dessiné: Donc, il existe des outils de déploiement qui prennent tout le code que vous avez écrit, le regroupent en une sorte de boule de code magique qui peut être exécutée dans le cloud et le mettre sur AWS ou avez-vous encore gérer vous-même ce processus?

Anthony: Oui, donc tout est fait via Netlify si vous suivez le tutoriel. Vous n’avez pas vraiment à vous soucier des fonctions sans serveur. Les éléments qui connectent votre back-end pour le pousser dans AWS Lambda, tout cela est géré, vous n'avez pas à toucher à aucun de ce code. Tout cela est généré dès le départ en fonction de vos conventions sur vos configurations afin que vous n'ayez pas vraiment à réfléchir à la façon de le rendre sans serveur. Il est sans serveur par défaut. C’est vraiment une chose difficile à comprendre. Il m'a fallu un certain temps pour m'envelopper la tête.

A dessiné: Oui, parce que c’est un point important, ce n’est pas parce qu’il y a maintenant plusieurs domaines différents que nous suivons ici. Nous avons, je pense, trois domaines différents. Nous avons notre application frontale React, qui s'exécute dans le navigateur, puis nous avons une API basée sur GraphQL, fonctionnant comme une fonction cloud, et qui répond à nos requêtes, mais qui interagit ensuite avec un magasin de données. qui utilise Prisma. Et ce magasin de données est quoi et où, parce que vous ne pouvez pas exécuter un serveur MySQL sur Netlify, n'est-ce pas?

Anthony: Oui, c'est là qu'intervient Heroku. Donc, dans la toute dernière partie du didacticiel, vous déployez votre front-end sur Netlify, puis vous déployez votre back-end sur Heroku Postgres et vous récupérez simplement vos variables de configuration de Heroku, branchez-le dans Netlify . Faire en sorte que votre frontal Netlify communique avec votre back-end Postgres est une chose vraiment très simple. Ils voulaient aller avec ce qui allait être le plus facile à faire pour quiconque, mais ils avaient toujours une bonne technologie stable et testée au combat. À la fin, ce que vous sortez de la boîte en suivant simplement les instructions est vraiment incroyable.

A dessiné: Les passionnés de Jamstack seront familiarisés avec des services tels que FaunaDB que vous avez mentionné et qui fournit un magasin de données en tant qu'API, AWS a DynamoDB, Google a Cloud SQL, et ainsi de suite. Donc, vous avez mentionné que Redwood envisage d’intégrer, ou je suppose que Prisma est le composant ici qui cherche à s’intégrer avec ces types de services plus tard?

Anthony: Ouais, c'est une bonne question. C'est quelque chose dont je parle en fait avec Ryan Chenkie chez Prisma pour aider, est-ce que quel est le genre d'histoire de base de données pour Redwood pour des choses qui ne fonctionnent pas nécessairement avec Prisma? Serait-il préférable de trouver un moyen de faire en sorte que Redwood fonctionne directement avec lui comme je l'ai fait avec Fauna ou serait-il plus logique d'implémenter un pilote pour Prisma? Il existe donc différentes manières de l'aborder. Il y a manifestement un million de bases de données différentes que tout le monde souhaite utiliser maintenant, c'est pourquoi vous êtes motivé pour y installer votre stockage de données. Il y a beaucoup de contributions de la communauté là-dedans.

A dessiné: Donc, parce que Prisma comprend votre modèle et sait comment les interroger, est-il capable de générer une sorte de migration ou des choses comme ça pour vous aider à configurer cette base de données?

Anthony: C’est exactement ce que vous perdez lorsque vous devez retirer Prisma et récupérer vos données, c’est que vous perdez toutes les fonctions de migration. Il a une CLI vraiment avancée qui fait une tonne de choses pour vous, vous pouvez donc parcourir tout le didacticiel Redwood et entrer les commandes Prisma et vous n'avez aucune idée de ce qu'il fait, cela fonctionne simplement. C’est un très bon outil pour faire tout ce genre de choses de type base de données que vous voulez vous assurer que vous faites correctement et que vous voulez vous assurer que cela est fait correctement.

A dessiné: Il semble qu'avoir un très bon outil autour des frameworks soit une tendance assez moderne, n'est-ce pas? Ne pas simplement dire: "Voici tout ce que ce framework peut faire, mais voici peut-être quelques outils CLI qui vont en faire tout un tas pour vous." Redwood a-t-il des outils pour des choses comme les générateurs CLI et d'autres choses pour vous permettre de démarrer rapidement?

Anthony: C'est probablement la plus grande caractéristique clé que vous obtenez de Redwood, c'est que vous obtenez un ensemble complet de générateurs très sophistiqués. Pour tous ceux qui ont déjà vu la démo originale de Ruby on Rails, que DHH a donnée, il crée un blog en 15 minutes environ et il fait tout avec Rails, et les gens se disent: "Whoa, c'est incroyable." C’est l’effet de Redwood. Ils veulent que vous puissiez tout faire tourner très rapidement afin que vous puissiez générer des pages, vous pouvez générer des mises en page, vous pouvez générer vos cellules, dont je parlais, et vous pouvez faire une commande d'échafaudage qui va créer votre ensemble Interface CRUD. J'ai une section entière, la quatrième partie de la série de blogs, explique simplement tout le code que l'échafaudage vous donne. Cela vous donne tellement de code. Il y a un générateur hors tension, il y a même un générateur Tailwind qui configure votre vent arrière pour vous.

A dessiné: C’est incroyable. Je me souviens avoir vu la démo de DHH de Rails. Je veux dire, c'était probablement quoi, il y a 15 ans maintenant, quand il a fait cet échafaudage pour la première fois et qu'il vous a montré, et vous obtenez un panneau de contrôle assez rudimentaire mais fonctionnel essentiellement pour vous permettre de créer de nouveaux éléments, de les modifier, de les supprimer, et cetera . Cela peut être inestimable dans un projet, en particulier dans une sorte d'environnement dynamique où, d'accord, vous allez peut-être implémenter de meilleurs outils à l'avenir pour éditer ce contenu, mais cela signifie être capable de faire tourner quelque chose rapidement, vous pouvez obtenir testez les données ou vous pouvez même les remettre à une équipe de contenu qui pourrait commencer à travailler pendant que vous travaillez sur le front-end, ce qui est vraiment utile.

A dessiné: Si vous vouliez simplement déployer cela et l'avoir en production, vous pouvez probablement simplement le déployer avec votre code frontal, mais vous auriez besoin d'un moyen de sécuriser cet aspect, ces racines dans votre application.

Anthony: Oui, il existe plusieurs options d’authentification. Vous pouvez utiliser l'identité Netlify. C’est la valeur par défaut si vous suivez le didacticiel, puis vous pouvez également utiliser Auth0, puis celle que je ne connais pas, appelée Magic.Link, et il y en aura probablement quelques autres à l’avenir. Mais oui, donc il y a déjà quelques solutions intégrées là-bas, et c'est la toute dernière chose que vous faites pour que la toute dernière partie de ma série de blogs en 12 parties soit celle d'Auth. Je ne pense pas avoir jamais compris Auth avant d’utiliser Redwood. C’est difficile et ils ont vraiment fait du bon travail avec.

A dessiné: Est-ce que cela s'intègre au niveau de l'itinéraire, ou au niveau de l'itinéraire, désolé, comment sécurisez-vous les choses?

Anthony: Ouais, donc une partie de la façon dont ils ont leur propre routeur, ils ont aussi… Vous pouvez faire des routes privées, donc ils ont un composant de route privée. Ensuite, votre formulaire de connexion réel, c'est ce que vous obtenez de l'identité Netlify pour que vous n'ayez pas à créer un formulaire et à gérer votre état avec cela, c'est là que de nombreux problèmes entrent en jeu. En supprimant les éléments vraiment clés, vous pouvez simplement implémenter un accès basé sur les rôles. Nous avons ajouté un contrôle d'accès basé sur les rôles qui a été fait au cours des dernières semaines par David T. Donc, il y a beaucoup de travail en cours pour créer d'autres façons de le faire, mais ce qu'ils ont maintenant, c'est déjà … ça marche, ça ' vous rendra fonctionnel.

A dessiné: Les gens disent toujours à propos de la cryptographie de hachage des algorithmes de sécurité, que vous ne devriez jamais écrire la vôtre car elle ne sera jamais aussi bonne que les choses qui existent. De plus en plus, je pense que c’est également vrai pour l’authentification à un niveau supérieur; cette authentification est un domaine tellement complexe de nos jours que les gens veulent non seulement se connecter à votre site avec des informations d'identification uniques, mais ils peuvent vouloir s'authentifier à l'aide de Google, ou ils peuvent vouloir s'authentifier à l'aide d'un appareil Apple, ou ils peuvent vouloir une authentification à deux facteurs , ou ils peuvent souhaiter l'intégrer à un service d'authentification unique qu'ils utilisent depuis une entreprise. Toutes ces choses sont un tel casse-tête si vous essayez de l'implémenter vous-même et tant d'opportunités de se tromper et d'exposer des failles de sécurité dans votre application, que l'utilisation d'un service d'authentification me semble presque une évidence à ce stade. Donc, le simple fait de pouvoir insérer quelque chose avec essentiellement quelques lignes de code et d'être opérationnel semble être une façon vraiment productive de travailler et de garder les choses en sécurité.

A dessiné: Il semble que le déploiement à la fois des aspects front-end et serveur, les fonctions sans serveur, soit naturellement adapté au déploiement sur Netlify. Êtes-vous lié à cela avec Redwood? Je veux dire, nous avons mentionné que Tom Preston-Werner est l’un des principaux promoteurs de ce cadre, il est également membre du conseil d’administration de Netlify. Pensez-vous qu'il existe un potentiel de couplage trop étroit si vous deviez choisir Redwood comme base d'un projet?

Anthony: Ouais, c’est quelque chose dont Tom est vraiment conscient. Il a investi dans de nombreuses entreprises qui flottent. Il a investi dans Prisma et Fauna. Il veut simplement fabriquer les outils qu'il veut utiliser. Il ne s’agit pas de vouloir vous enfermer dans cette chose, mais ce que Netlify a construit, selon lui, est la meilleure option, c’est pourquoi ils ont construit autour de cela. Mais, ils ne veulent pas qu'il soit verrouillé sur une seule cible de déploiement, et c'est pourquoi nous avons du travail sur des choses comme le framework sans serveur et certaines personnes ont parlé de Begin. Nous voulons être pragmatiques, nous voulons que cela fonctionne quel que soit le cas d’utilisation de quelqu'un. Donc, nous vous assurons 90% du chemin et il vous suffit ensuite de câbler les deux dernières choses pour que cela fonctionne avec les serveurs de votre choix.

A dessiné: Je suppose que même Netlify utilise AWS Lambda pour les fonctions des serveurs, donc c'est vraiment la partie de déploiement qui est prise en charge par Redwood là-bas, et en fait vous pouvez déployer cela vous-même sur Lambda. Publier votre front-end n'est que des fichiers, n'est-ce pas, le reste est basé sur CDN? Donc, il y a beaucoup de flexibilité là-bas sans être trop lié.

Anthony: Ouais, il y a en fait un terme dont Tom parle comme l'idée philosophique fondamentale derrière Redwood, à savoir que nous voulons arriver à une machine de déploiement universelle. C’est un peu l’idée, c’est que vous pouvez simplement déployer des éléments et vous n’avez pas à y penser du tout. Il parle de cette idée depuis des années, des années et des années, et c'est ce dont Jekyll parlait même à l'époque. Quand vous entendez ça maintenant, vous vous dites: "Oh, tu veux dire comme Netlify?" C’est essentiellement ce que Netlify est pour la plupart des personnes qui travaillent sur le front-end. Ils ne pensent même plus à déployer, ce n’est même pas une pensée.

A dessiné: Voici mon application dans un Git Repo, ce répertoire est le front-end, ce répertoire est le back-end, voici ma base de données, et c'est à peu près autant de configuration que vous auriez peut-être besoin pour n'importe quel service pour le prendre et le construire et l'héberger il.

Anthony: Oui, et une chose que je dois également souligner, nous venons tout juste de configurer le déploiement par défaut de Vercel Redwood, donc lorsque vous déployez sur une application côté serveur, vous pouvez dire: «Oh, j'ai l'application Gatsby», et il sait exactement comment créer une application Gatsby par rapport à une NextApp. Nous l'avons maintenant pour Vercel. Donc, il existe également de très bonnes options non-Netlify, si vous êtes plus intéressé par cela.

A dessiné: Donc, si je voulais commencer et créer une application et la mettre en production cette semaine, est-ce que Redwood est prêt pour cela? Est-ce mature?

Anthony: Ouais, nous avons environ une demi-douzaine d’applications actuellement en production. Le premier s'appelait Predict COVID, sorti en mars, et c'est comme une application de visualisation de données en temps réel. Ensuite, nous avons repeater.dev est fait par Rob, c'est comme un travail cron comme pour Jamstack. Ensuite, il y a Tape.sh, Duoflag je pense en est un autre. Donc, il y en a au moins une poignée. Si vous optez pour un excellent repo Redwood, vous pouvez voir une liste de tous. Si vous allez sur les forums de la communauté, vous pouvez également en trouver des articles, car les gens les ont mis en production et ont en quelque sorte dit comment cela s'est passé. Jusqu'à présent, ils ont tous réussi et personne n'a dit: «Je ne m'en servirai plus jamais.»

A dessiné: Mais, c'est très nouveau. Je suppose qu’il n’ya pas d’échappatoire à cela, mais en termes de maturité, Redwood est assez récent, il obtient un bon suivi.

Anthony: Eh bien, c’est drôle, c’est et ce n’est pas le cas. Il a été annoncé en mars. À ce moment-là, il avait été travaillé pendant environ un an par Tom et Peter. Donc, ils avaient déjà mis une tonne de travail initial dans ce domaine, donc ce n'était pas comme si j'allais annoncer ce projet avec un Lisez-moi, puis commencer à le construire. Au moment où ils l’ont annoncé, ce n’était pas… Ce n’est pas une version 1.0 maintenant, mais c’est assez proche de ce que les gens attendent d’une version 1.0. Mais, Tom est très contre ce que nous appelons le développement basé sur le type, donc il se trompe toujours en disant qu’il n’est pas prêt. Nous disons donc qu’il n’est pas prêt pour la production même s’il est en production.

A dessiné: Je pense qu'une chose sur laquelle les gens sont parfois brûlés en utilisant des frameworks est qu'ils vont construire un projet autour du framework, puis ce framework passera très rapidement à une autre version majeure qui avait des incompatibilités en arrière, et ils se retrouveront alors avec un gros projet pour tout mettre à jour sur la nouvelle version du framework. Est-ce quelque chose qui est susceptible de se produire avec Redwood? Je veux dire, aucun d’entre nous n’a de boule de cristal, mais juste avec les technologies impliquées et la façon dont elles sont structurées, pensez-vous que c’est un grand danger ou un petit danger?

Anthony: Oui, c'est une préoccupation très valable et certainement quelque chose à laquelle l'équipe a réfléchi. L'interface de ligne de commande a une commande de mise à niveau, de sorte que vous pouvez fondamentalement chaque fois qu'il y a un changement de version, il vous suffit de faire une commande et cela vous augmente la version. Je me suis un peu occupé de ça juste à cause de la série que j'ai écrite, je l'ai commencée quand elle était sur la version 11 ou 0.11, c'est comme 0.17 ou quelque chose maintenant. Donc, je l'ai répété lentement au fur et à mesure, mais rien ne se brise. C'est tout, vous obtenez lentement des choses, ou comme "Oh, c'est une sorte de petite touche agréable que vous avez ici", mais c'est à peu près gravé dans la pierre architecturale. Redwood tel qu'il est structuré, l'avant ou l'arrière ne va pas du tout changer. C'était très bien pensé en termes de ce qu'ils veulent sur le plan architectural. C’est pourquoi ils l’ont construit, afin d’obtenir quelque chose de structuré comme celui-ci.

A dessiné: Je suppose qu'avec le développement Web moderne, il y a un certain point où vous n'allez jamais vous éloigner de la dépendance à l'égard des dépendances qui se mettent à jour et changent. Je veux dire, même en utilisant React, React subit autant de changements différents qu'autre chose.

Anthony: C’est exactement pourquoi Tom a inventé le versionnage sémantique.

A dessiné: Je suppose que de l'autre côté de cette médaille, si Redwood a effectivement disparu, ce que nous considérons toujours lors du choix d'un cadre, si le développement s'est arrêté d'une manière ou d'une autre, je suppose que l'impact sur une application particulière n'est peut-être pas trop grand car il est tellement fortement construit sur d'autres projets existants autour. Est-ce-

Anthony: Eh bien, certains diraient qu'un arbre séquoia peut survivre beaucoup, il survit très longtemps. C’est peut-être la raison pour laquelle on l’appelle ainsi, c’est que vous pouvez simplement créer un site et le déployer et il ne va pas se briser, cela va simplement fonctionner. Alors oui, maintenabilité, durabilité, tout ce genre de choses, c'est énorme. Étant conçu par des gens qui ont essayé de faire évoluer les applications Rails, j'imagine qu'ils ont beaucoup réfléchi à cela. Mais en ce qui concerne le départ, cela va toujours être un danger avec tout projet open source, donc je pense que ce que vous devez rechercher, c'est à quel point la communauté est enthousiaste à continuer sans l'équipe si cela se produit. Je ne pense pas que vous ayez même à vous en soucier parce que Tom est un milliardaire et qu’il a une entreprise de financement en capital-risque qui finance une partie du développement. C'est un projet open source qui est en fait bien financé. Il compte quatre membres à temps plein, Tom, Rob, David et Peter. Allez simplement sur les forums, vous pouvez voir l'activité qui se passe, donc je ne m'inquiéterais pas trop à ce sujet.

A dessiné: Bien sûr.

Anthony: Au-delà des soucis open source normaux qui accompagnent ces choses.

A dessiné: À quoi ressemble la communauté? Vous avez mentionné la communauté, y a-t-il beaucoup de gens qui l'utilisent et contribuent à la base de code ou est-ce principalement l'équipe principale qui fait le développement?

Anthony: Oui, c'est très structuré pour être une chose communautaire. Ils veulent obtenir le plus d'adhésion possible de la communauté, et cela vient de la lignée, comme vous l'avez dit. Il y a peu de gens avec plus de crédibilité open source que Tom, donc il a fait un très bon travail pour amener les gens dans le giron. Je pense que mon histoire en général est une grande victoire pour la communauté parce que je suis arrivé, je suis un étudiant du camp d'entraînement, j'apprends tout cela au fur et à mesure. Je ne transmets pas de code au dépôt, je fais des corrections de documents et j'écris des articles de blog et d'autres choses, mais ils m'ont quand même invité à la réunion des principaux contributeurs parce qu'ils ont vu ce que je faisais et qu'ils pensaient que cela ajoutait de la valeur. Oui, il y a vraiment beaucoup de choses dans leur approche du renforcement de la communauté que j’ai beaucoup de respect, et c’est pourquoi j’y ai tant investi et m’y mets tellement.

A dessiné: Certains cadres ont ce genre de penchant naturel pour certains types de projets. Par exemple. Le framework Python, Django est issu de la publication d'actualités en ligne, et c'est donc un très bon choix si vous souhaitez publier rapidement du contenu comme vous le feriez dans une organisation de presse. Redwood penche-t-il dans une direction particulière en ce qui concerne le type de projets? Convient-il à la publication de contenu ou à la création d'applications Web ou-

Anthony: Il est fait pour être assez indépendant de cela. Il veut être un outil que vous utilisez pour beaucoup de choses. D'abord, avant qu'il ne s'appelle Redwood, il s'appelait Hammer, l'idée étant que vous faites beaucoup de choses avec un marteau. Mais, il y a certainement une sorte de sweet spot, qui, je pense, sont les applications de type multi-client. Donc, si vous savez que vous commencez avec un front-end Web mais que vous êtes presque sûr que vous allez également vous retrouver avec un client mobile, alors c'est un très bon choix pour cela, car cela commence dans un manière que vous allez pouvoir étendre à avoir plusieurs clients avec GraphQL, dont nous avons en quelque sorte parlé un peu. Donc, je dirais que ce serait probablement la première chose que je dirais est son sweet spot. Mais, il est censé fonctionner pour autant de choses que possible.

A dessiné: Redwood a-t-il publié une feuille de route indiquant où il va? À quoi pouvons-nous nous attendre dans un proche avenir?

Anthony: Heureux que vous ayez demandé. Nous venons de publier une feuille de route vers la version 1.0 il y a moins d'un mois, c'était probablement il y a deux ou trois semaines. Il détaille en quelque sorte les choses sur lesquelles nous travaillons, les choses sur lesquelles nous pensons être proches, les choses que nous pensons avoir encore beaucoup de chemin à parcourir. Cela aide la communauté à voir où puis-je contribuer. C’est l’une des choses sur lesquelles nous sommes vraiment formidables: ce sont les choses sur lesquelles il faut encore travailler. Ils visent 1,0 d'ici la fin de l'année. Nous verrons où nous en arriverons, mais c'est la trajectoire sur laquelle nous nous trouvons actuellement.

A dessiné: L'une des beautés d'un Jamstack et d'une approche sans serveur, je pense toujours, c'est que c'est cette idée de beaucoup de pièces vaguement jointes qui nous a si bien servies en informatique jusqu'à présent. Il devrait être très facile de mettre à l'échelle un projet Jamstack et sans serveur, car vous pouvez ajouter plusieurs frontaux ou vous pouvez consacrer plus de ressources à l'exécution de vos fonctions, et vous pouvez développer une grande équipe d'ingénierie en faisant travailler des gens sur différentes petites pièces. Y a-t-il un danger en adoptant un cadre autour de tout cela, que vous preniez une architecture distribuée et que vous créiez une liaison plus serrée que ce que vous auriez pu autrement? Redwood pourrait-il devenir le monolithe qui agit comme un goulot d'étranglement dans vos efforts d'ingénierie?

Anthony: Ouais, c'est quelque chose auquel je pense beaucoup parce que lorsque j'ai appris le développement Web, je prenais… Je suis dans un camp d'entraînement qui est censé être un développement complet, mais vous apprenez chaque élément de manière isolée. Nous apprenons essentiellement la pile PERN, mais vous apprenez React, puis nous avons appris Express. Nous n'avons jamais parlé de la façon dont cela fonctionne réellement ensemble. Donc, je pense qu'il y a certainement un danger de ne pas être en mesure de comprendre dans votre projet à cause de la façon dont tout est câblé. Donc, ce que j'ai vraiment aimé à propos de Redwood, c'est que cela avait du sens. C'était un modèle mental de la façon de penser à l'ensemble de mon application et à toutes les pièces et comment elles s'emboîtent d'une manière qui me semble vraiment logique. Mais ce que j'ai été surpris de constater que faire le projet Fauna, c'est qu'il est beaucoup plus modulaire que vous ne le pensez basé sur… Vous en parlez, et comme vous l'avez dit, cela ressemble à un truc monolithique, mais vous pouvez déchirer des morceaux et remplacez-les par d'autres pièces et elles peuvent toujours fonctionner. Il s’agit donc d’une solution entièrement intégrée, mais pas d’une solution étroitement couplée, car c’est un bon moyen d’intégrer toutes ces technologies ne signifie pas que vous devez les coupler étroitement pour bien les intégrer.

A dessiné: Ouais, cela semble une manière très prometteuse de structurer les choses, et ce sera vraiment excitant de voir ce qui se passe avec Redwood à mesure qu’il arrive à la version 1.0. Y a-t-il autre chose que nous devrions savoir à ce sujet dont nous n’avons pas parlé?

Anthony: Non. Je veux dire, si vous êtes intéressé, jetez un œil au didacticiel sur YouTube, le didacticiel RedwoodJS. Ils ont ce qu'ils appellent le développement piloté par des tutoriels, qui est une sorte de jeu sur le développement piloté par Read Me, qui est une autre chose que Tom a inventée, que vous devriez commencer par un Read Me, puis créer votre code pour donner un sens à ce que votre Read Me était. C'est l'idée de créer un tutoriel, puis d'écrire votre framework pour que le tutoriel fonctionne. C’est la raison pour laquelle c’est un moyen très simple de se familiariser avec elle, car elle a été conçue pour donner un sens au processus d’apprentissage. Ils ont vraiment réfléchi à la manière de s'intégrer dans un cadre massif avec toutes ces différentes pièces et toutes ces nouvelles technologies différentes. Ils vous le révèlent progressivement au fur et à mesure. La série que j'ai écrite en est très fortement influencée. J'ai essentiellement construit le même projet, mais j'écris mes propres trucs au fur et à mesure et je fais référence aux documents. Donc, si vous souhaitez simplement apprendre Redwood, commencez par le tutoriel proprement dit, puis regardez ma série.

A dessiné: Alors, j’ai tout appris sur Redwood, qu’avez-vous appris?

Anthony: Ouais, alors j’ai appris à connaître les CMS, et j’étais vraiment curieux de savoir ce que vous en pensez parce que j’imagine que vous avez fait le tour du bloc, vous connaissez beaucoup de CMS. De toute évidence, vous savez que vous avez votre WordPress, votre Drupal, mais ce qui est vraiment intéressant avec quelque chose comme Redwood, c'est que puisque vous avez ce truc GraphQL intégré, il a le CMS, c'est tellement naturel. Alors, j'essaie de comprendre, quels sont les CMS sans tête intéressants à découvrir? Lesquels ont une intégration GraphQL? Lesquels ont des points forts différents? Si je voulais prendre un CMS pour créer une application avec RedwoodJS, que recommanderiez-vous?

A dessiné: C’est une bonne question et je ne suis pas sûr d’avoir une réponse immédiate. J'ai examiné de nombreux CMS différents, pas particulièrement en vue de GraphQL. Je n’ai pas encore travaillé avec GraphQL moi-même, donc ce n’était pas…

Anthony: Oh mec, tu dois rejoindre le club, mec.

A dessiné: Ouais, non, je suis définitivement en train de monter à bord. Mais oui, j'ai une exigence au travail qui va peut-être arriver à en savoir un peu plus sur GraphQL, donc c'est certainement l'une des choses que j'ai besoin d'apprendre.

Anthony: J'ai en fait appris GraphQL grâce à Redwood. Je ne connaissais pas vraiment GraphQL, et je dirais que vous devriez en savoir un peu plus avant d’entrer dans le vif du sujet, et j’avais une très, très petite connaissance de base. Vous pouvez réellement apprendre ce qu'est un langage de définition de schéma et ce genre de jargon GraphQL. Vous apprendrez beaucoup de choses et vous l'apprendrez au fur et à mesure avec Redwood.

A dessiné: Ouais, je devrais certainement monter à bord et peut-être que faire du Redwood est le moyen de le faire. Peut-être que j'ai besoin de ramasser un projet et de commencer avec Redwood et de voir où cela me mène.

Anthony: Ouais, au moins je dirais qu’il suffit de vérifier, juste parce que c’est intéressant. Je trouve que ce n'est qu'une expérience de réflexion vraiment fascinante sur la façon dont nous développons des applications Web modernes différemment et de manière plus cohérente.

A dessiné: Si vous, cher auditeur, souhaitez en savoir plus sur Anthony, vous pouvez le trouver sur Twitter à ajcwebdev. Sa série complète d'articles sur la mise en route de Redwood se trouve sur le site de la communauté Redwood, auquel nous allons renvoyer à partir des notes de l'émission. Bien sûr, vous pouvez trouver tout sur Redwood et commencer à RedwoodJS.com. Merci de vous joindre à nous aujourd'hui, Anthony. Avez-vous des mots d'adieu?

Anthony: Si vous êtes intéressé par l'un de ces éléments, n'hésitez pas à nous contacter. Mes DM sont toujours ouverts. La communauté est très ouverte en général. Je me ferai un plaisir de vous expliquer, de vous expliquer ou de vous préparer à tout ce que vous devez savoir pour commencer.

Éditorial fracassant(il)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *