Maison >interface Web >js tutoriel >Au-delà de Next.js : Exploration des cadres de composants alternatifs du serveur React
Lorsque fin 2020, l'équipe React a introduit le concept de « composants de serveur React de taille zéro », de nombreuses personnes ont eu et ont encore du mal à le comprendre. Aucun des frameworks existants ne prenait en charge le nouveau concept et les prototypes ne fournissaient pas une base utilisable pour créer des applications réelles.
Aujourd'hui, plus de 4 ans plus tard, la version requise de React est toujours en version bêta et n'est pas publiée pour la production et le seul framework important et bien connu qui la prend en charge est composé d'anciens membres de l'équipe React. C'est une situation très triste pour les quelques développeurs qui ont essayé de proposer des frameworks alternatifs basés sur RSC.
Le React normal est une bibliothèque qui vise uniquement à fournir une solution déclarative rapide pour créer une application dans le navigateur. Les applications du navigateur ont toujours besoin d'un serveur pour récupérer et stocker leur état. Sur la base de ce fait, un grand nombre de solutions ont été développées et existent dans l'écosystème client React. Lorsque de plus en plus de personnes ont commencé à créer leur backend avec Typescript, la tendance suivante a été une renaissance du RPC avec des interfaces typées qui ont créé les points finaux de l'API en arrière-plan.
En regardant le RSC avec ces exigences, il devient rapidement clair que tout cela faisait partie du champ d'application des RSC car ils fournissent :
Cela permet aux développeurs d'applications d'utiliser React pour définir tous les composants utilisant React indépendamment de leur rendu sur le client ou sur le serveur. Cet environnement intégré réduit la complexité des applications modernes et supprime la redondance de la logique métier dupliquée dans le backend et le frontend.
Comme la bibliothèque React est officielle, encore en version bêta, aucune d'entre elles ne devrait être considérée comme prête pour la production :
Actuellement, seul Next.js est quelque peu utilisable pour la production. Leur version 15 est la 4ème itération sur RSC qui a débuté fin 2021 avec la version 12.
Au-delà du framework répertorié, voici quelques référentiels supplémentaires avec des plans pour créer un framework RSC - utilisez-les si vous souhaitez en savoir plus sur les composants internes :
Si vous connaissez d'autres frameworks, veuillez fournir des liens vers eux dans les commentaires.
La transcription et le regroupement, basés sur les excellents bundles existants d'une application client React, sont simples. Il existe plusieurs options pour ce faire et l'une des plus utilisées consiste à utiliser ViteJs comme serveur de développement et bundler. Les frameworks qui fournissaient une pile frontend et backend JavaScript devaient encore fournir leur propre solution pour gérer la dactylographie et le regroupement en développement et en production.
Avec RSC, un bundler doit gérer au moins trois pipelines de transcription et de regroupement :
Jusqu'à la sortie de la version 6 de Vite, cela nécessitait beaucoup de code spécial pour fournir une solution fonctionnelle. Next.js vient de passer à Turbopack dans la version 15 pour corriger les retards qu'ils ont obtenus en fonction de la complexité et de l'utilisation de webpack qui n'a jamais été conçu pour gérer ce genre de problèmes.
Les nouvelles fonctionnalités de Vite 6 ciblent de nombreux auteurs de framework et fournissent une excellente solution avec leur nouvelle API environnementale.
Sur la base du fait que les composants sont désormais rendus dans un environnement complètement différent, chaque bibliothèque de réaction doit être construite pour gérer les restrictions de chacun de ces environnements en fournissant un contenu alternatif. Actuellement, la plupart des bibliothèques peuvent gérer le rendu sur le serveur pour créer du contenu SSR, là où de nombreuses API spécifiques aux navigateurs manquent. Le rendu des composants RSC apporte une limitation supplémentaire avec une bibliothèque de serveur de réaction différente qui, par exemple, ne prend pas en charge le contexte de réaction et les bibliothèques d'état et de rupture qui en ont besoin pour fournir une thématique à tous les composants enfants. Et les bibliothèques ont besoin d'une option d'exportation appropriée dans packages.json et ESM-Modules pour la bibliothèque et toutes les sous-bibliothèques associées.
La deuxième pièce non fournie par la bibliothèque React pour RSC est le routeur. Sans un routeur qui gère le routage client et serveur, le composant serveur React ne sait pas quel état afficher sur le serveur. C'est la raison pour laquelle chacun des frameworks est livré avec sa propre implémentation de routeur et jusqu'à ce que l'API correspondante soit standardisée, les composants serveur et clients développés pour un framework devront être modifiés pour fonctionner avec un autre framework.
plus de détails sur les composants du serveur React peuvent être trouvés dans la documentation officielle de React.
Exigences facultatives pour les méta-frameworks :
Sur la base du fait que Next.js 15 est le framework RSC le plus spécialisé, pourquoi devrais-je avoir besoin de rechercher des frameworks alternatifs ?
Les raisons de faire cela sont toujours basées sur l'objectif à atteindre, mais je vais essayer d'énumérer quelques raisons pour lesquelles il est logique d'examiner les autres options :
Veuillez garder à l'esprit que cet article se concentre uniquement sur les alternatives qui fournissent RSC, mais il existe de nombreux autres frameworks qui fournissent des fonctionnalités presque similaires à RSC et pourraient être de bien meilleures alternatives que les frameworks RSC répertoriés dans cet article.
Développé par Daishi Kato :
Waku (wah-ku) ou わく signifie « cadre » en japonais. En tant que framework React minimal, il est conçu pour accélérer le travail des développeurs des startups et des agences créant des projets React de petite et moyenne taille. Il s'agit notamment des sites Web de marketing, du commerce électronique léger et des applications Web.
Nous recommandons d'autres frameworks pour les applications lourdes de commerce électronique ou d'entreprise. Waku est une alternative légère apportant une expérience de développement amusante à l'ère des composants serveur. Oui, rendons le développement de React à nouveau amusant !
Démarrer un nouveau projet avec Waku est simple et vous obtiendrez un modèle de démarrage configuré avec tailwind :
npm créer waku@latest
Toutes les exigences de base sont couvertes sauf le renvoi des mises à jour des composants côté client en une seule requête lors de l'utilisation d'actions de serveur en mutation. Actuellement, toute mutation du serveur nécessite une actualisation du routeur client avec router.reload() dans le composant client, ce qui conduit à une deuxième requête au serveur pour charger les données mises à jour sous forme de flux RSC.
Les exigences facultatives suivantes sont encore en développement :
Prend en charge de nombreuses cibles de déploiement : Vercel, Netlify, Cloudflare, PartyKit, Deno, AWS Lambda, NodeJS
En raison de la complexité du regroupement, préparez-vous à avoir des problèmes avec de nombreuses bibliothèques tierces :
https://github.com/dai-shi/waku/issues/423
Développé par Viktor Lázár :
J'ai créé @lazarv/react-server parce que je voulais utiliser les composants React Server et les actions serveur à l'aide de Vite ❤️. Pour la plupart des petites applications, Next.js était trop lourd, trop lourd et trop lent. Je voulais avoir la même expérience lorsque vous exécutez un simple fichier JavaScript à l'aide de node.js. Ce cadre essaie d'être autant que possible sans opinion. Vous pouvez réaliser éventuellement tout ce que vous voulez. La seule restriction est qu'il utilisera sa propre version de React. Vous n'avez même pas besoin d'installer React dans votre projet. Tout est inclus dans le cadre. J'espère que vous apprécierez utiliser ce framework autant que j'ai aimé le créer et l'utiliser également pour créer cette documentation. - lazarv
Apprendre les composants du serveur React est un jeu d'enfant avec ce framework ! Un seul fichier avec un composant de serveur React valide et l'exécution de la commande sont tout ce dont vous avez besoin :
./App.jsx
export default function App() { return <h1>Hello, World!</h1> }
npx @lazarv/react-server ./App.jsx
Il existe une bonne documentation sur la façon de démarrer et quelques exemples de projets dans la section tutoriel.
Toutes les exigences de base sont couvertes sauf le renvoi des mises à jour des composants côté client en une seule requête lors de l'utilisation d'actions de serveur en mutation.
Comme le runtime dépend des API NodeJS, d'autres runtimes, par ex. (AWS Lambda@Edge, Cloudflare) ne sont actuellement pas pris en charge.
De plus, la fonctionnalité suivante existe :
Cibles de déploiement : NodeJS, Vercel - Adaptateurs en développement : Netlify, Cloudflare, sst
Prend en charge Tailwind CSS, TanStack Query, Mantine UI, Material UI.
Fourni par Tom Preston-Werner :
Redwood est le framework d'application JavaScript full-stack.
Batteries, backend, React, conventions et opinions inclus.
Toujours en développement et fonctionne uniquement avec Node v20 et Yarn 4 :
export default function App() { return <h1>Hello, World!</h1> }
Vous devrez ensuite activer quelques fonctionnalités expérimentales :
npx @lazarv/react-server ./App.jsx
Enfin, construisez et servez :
npx -y create-redwood-app@canary -y ~/rsc_app cd ~/rsc_app
Dans le cadre de la commande setup-rsc, une application RSC barebones est créée pour vous, démontrant le rendu d'un composant client à l'intérieur d'un composant serveur
Cibles de déploiement : Vercel, Netlify, Render, GCP ou AWS via Coherence, AWS via Flightcontrol, NodeJS
Next.js | WAKU | React-server | RedwoodJS | |
---|---|---|---|---|
DEV-Environment / Bundling | Turbopack | Vite 5 | Vite 6 | Vite |
Rendering | SSR, ISR, SSG, CSR | SSR, SSG, CSR | SSR, SSG, CSR, Micro-Frontends | SSR, SSG, CSR |
Caching Layers | Yes | No | Yes | ?? |
Deployment Target | Vercel, NodeJS | Vercel, Netlify, Cloudflare, Deno, AWS Lambda, PartyKit, NodeJS | Vercel, NodeJS, sst (AWS Lambda) | Vercel, Netlify, AWS, NodeJS |
Community | Very Big | Tiny | Just Starting | Small |
Open Source Financing | Vercel | Donations | Donations | Privately Funded by a Rich Guy |
Récapitulatif des principaux points à retenir :
Essayez les frameworks pour trouver celui qui convient le mieux à votre projet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!