Nuxt comme Framework Full-Stack dans NuxSaaS
Ce document explique comment NuxSaaS exploite Nuxt.js en tant que framework full-stack, en détaillant les avantages et les implémentations spécifiques qui en font un choix puissant pour les applications web modernes.
Pourquoi Nuxt.js pour le développement Full-Stack ?
Nuxt.js, traditionnellement connu pour ses capacités à construire des applications Vue.js rendues côté serveur (SSR), a évolué vers un framework full-stack polyvalent. NuxSaaS utilise cette évolution pour créer une expérience de développement cohérente, de l’interface utilisateur frontend à la logique API backend.
Principaux avantages :
- Codebase unifiée : Le code frontend et backend peut coexister dans la même structure de projet, simplifiant les flux de travail de développement et réduisant le changement de contexte.
- Logique côté serveur avec Nitro : Le moteur serveur de Nuxt, Nitro, permet la création de points de terminaison API, de middlewares serveur et d’utilitaires côté serveur directement dans le projet Nuxt. Cela se retrouve dans les dossiers
server/api/
etserver/middleware/
de NuxSaaS. - Code isomorphe/universel : Les composables et fonctions utilitaires peuvent souvent être partagés entre le serveur et le client, favorisant la réutilisation du code et la cohérence. Par exemple, la logique de validation ou les fonctions de transformation de données peuvent être définies une seule fois et utilisées des deux côtés.
- Déploiement simplifié : Les applications Nuxt peuvent être déployées sur diverses cibles, y compris des serveurs Node.js, des plateformes serverless (comme Cloudflare Workers, comme le montrent les fichiers
wrangler.example.toml
et les configurationsNUXT_NITRO_PRESET
de NuxSaaS), et de l’hébergement statique. - Écosystème riche et modules : Nuxt dispose d’un écosystème dynamique de modules qui étendent ses fonctionnalités, couvrant des aspects comme l’authentification, l’internationalisation et le SEO, dont beaucoup sont utilisés dans NuxSaaS (par exemple,
@nuxtjs/i18n
,@nuxtjs/seo
,better-auth
).
Comment NuxSaaS implémente Nuxt Full-Stack
NuxSaaS démontre une mise en œuvre pratique de Nuxt comme solution full-stack :
Points de terminaison API : Le dossier
server/api/
contient les routes API backend. Par exemple, les points de terminaison liés à l’authentification (server/api/auth/
) et les fonctionnalités spécifiques à l’admin (server/api/admin/
) y sont définis. Ceux-ci sont automatiquement enregistrés par Nuxt et accessibles au frontend.typescript// Exemple : server/api/auth/user.get.ts export default defineEventHandler(async (event) => { // ...logique pour obtenir les données utilisateur })
Middleware serveur : Le dossier
server/middleware/
contient les middlewares qui s’exécutent sur le serveur pour chaque requête ou pour des routes spécifiques. Cela sert à des tâches comme la journalisation des requêtes, les vérifications d’authentification ou la modification des en-têtes de requête/réponse.typescript// Exemple : server/middleware/0.common.ts export default defineEventHandler((event) => { // ...logique commune à toutes les requêtes })
Intégration de la base de données : NuxSaaS s’intègre à une base de données PostgreSQL via Drizzle ORM. Le schéma de la base est défini dans
server/database/schema/
et les migrations sont gérées pardrizzle-kit
(voir les scriptspackage.json
commedb:generate
etdb:migrate
). La logique côté serveur dans les routes API et les utilitaires serveur interagit avec la base de données.Configuration à l’exécution : Les configurations sensibles et les paramètres spécifiques à l’environnement sont gérés via la configuration runtime de Nuxt (
nuxt.config.ts
etserver/utils/runtimeConfig.ts
). Cela permet d’avoir différentes configurations pour le développement, la préproduction et la production sans reconstruire l’application.Gestion de l’authentification : La bibliothèque
better-auth
est intégrée pour l’authentification, avec une logique côté serveur pour la gestion des sessions, les callbacks OAuth et la vérification des utilisateurs (par exemple,server/utils/auth.ts
,app/plugins/auth.server.ts
).Flexibilité de déploiement : Comme mentionné, NuxSaaS est configuré pour être déployé comme une application Node.js standard ou sur des plateformes serverless comme Cloudflare Workers, démontrant l’adaptabilité de Nuxt. La variable d’environnement
NUXT_NITRO_PRESET
contrôle ce comportement.
Conclusion
En adoptant Nuxt.js comme framework full-stack, NuxSaaS bénéficie d’un processus de développement rationalisé, de performances accrues grâce au rendu côté serveur et à une logique serveur optimisée, ainsi que de la flexibilité pour se déployer sur divers environnements. Cette approche permet aux développeurs de construire efficacement des applications SaaS modernes et robustes avec une stack technologique cohérente.