Back

Val Town : JavaScript Serverless dans le Navigateur

Val Town : JavaScript Serverless dans le Navigateur

Si vous avez déjà eu besoin d’un endpoint webhook rapide, d’une récupération de données planifiée ou d’une API légère—mais sans vouloir déployer un serveur, configurer des rôles IAM ou toucher à un pipeline de déploiement—Val Town a été conçu exactement pour cette situation.

Val Town est une plateforme basée sur le navigateur permettant d’écrire et de déployer du JavaScript et TypeScript serverless. Vous écrivez du code dans le navigateur, et il s’exécute sur un runtime Deno géré dans le cloud. Votre code ne s’exécute jamais dans le navigateur de l’utilisateur final—c’est une distinction importante. Le navigateur n’est que l’éditeur. L’exécution se produit côté serveur, dans un environnement Deno isolé entièrement géré par Val Town.

Points Clés

  • Val Town est une plateforme basée sur le navigateur pour écrire et déployer du JavaScript/TypeScript serverless sur un runtime Deno géré
  • Le code est organisé en vals—des unités versionnées et instantanément déployables, déclenchées par des requêtes HTTP, des planifications cron ou des emails entrants
  • Les services intégrés comme SQLite, le stockage blob, l’email et un client OpenAI éliminent le besoin d’infrastructure externe pour les petits projets
  • Val Town est idéal pour les API légères, les webhooks, les tâches planifiées et le code de liaison, mais pas pour les charges de travail longues ou gourmandes en calcul

Qu’est-ce qu’un Val ? L’Unité de Base du JavaScript Serverless de Val Town

Tout dans Val Town s’organise autour des vals—des unités de code versionnées et déployables. Considérez un val comme une petite fonction ou un service autonome. Chaque val est stocké, versionné et instantanément déployé au moment où vous l’enregistrez.

Les vals supportent trois types de déclencheurs :

  • HTTP : Répond aux requêtes web. Votre val reçoit un objet Request et renvoie une Response—sémantique standard de l’API Fetch, familière à quiconque a utilisé Cloudflare Workers.
  • Cron : S’exécute selon un planning utilisant la syntaxe cron ou des planifications simples basées sur des intervalles. Utile pour les tâches périodiques comme l’envoi de rapports ou la synchronisation de données.
  • Email : Se déclenche lorsqu’un email est reçu à une adresse Val Town. Pratique pour créer des automatisations légères pilotées par email.

Le Runtime Deno de Val Town : Sur Quoi Vous Exécutez Réellement

Val Town utilise Deno comme runtime, pas Node.js. Cela a des implications pratiques. Vous importez des modules via URL ou depuis des spécificateurs npm: plutôt que d’utiliser package.json. De nombreuses API spécifiques à Node.js (fs, path) se comportent différemment ou ne sont pas disponibles.

L’avantage : le modèle de permissions et le système de modules de Deno sont bien adaptés à un environnement isolé et multi-locataire. Le compromis : certains packages npm qui dépendent des composants internes de Node ne fonctionneront pas sans ajustement.

Capacités Intégrées pour le Développement Backend Léger

Val Town inclut une bibliothèque standard de services hébergés afin que vous n’ayez pas besoin de configurer une infrastructure externe pour les besoins courants :

  • SQLite — Stockage de données structurées et persistantes par val. Adapté aux petits ensembles de données, compteurs et états.
  • Blob Storage — Stockage et récupération de données arbitraires : fichiers JSON, images, texte.
  • Email — Envoi d’emails directement depuis un val avec un simple appel de fonction.
  • OpenAI — Un client OpenAI préconfiguré, prêt à l’emploi sans avoir à gérer les clés API dans votre code.

Voici un val HTTP minimal pour illustrer le principe :

export default async function handler(req: Request): Promise<Response> {
  const data = { message: "Hello from Val Town", timestamp: Date.now() }
  return new Response(JSON.stringify(data), {
    headers: { "Content-Type": "application/json" },
  })
}

Enregistrez-le, et il est immédiatement accessible via une URL publique. Pas d’étape de build, pas de commande de déploiement.

Quand Utiliser Val Town—et Quand Ne Pas l’Utiliser

Val Town convient bien lorsque vous avez besoin de :

  • Une API serverless rapide ou un récepteur de webhook sans configuration d’infrastructure
  • Des tâches planifiées qui s’exécutent selon un planning cron
  • Du code de liaison connectant des services tiers
  • Un prototypage rapide de logique backend

Il est moins adapté pour :

  • Les processus de longue durée (des limites de temps d’exécution s’appliquent)
  • Les charges de travail gourmandes en calcul
  • Les applications nécessitant des packages Node.js spécifiques avec des liaisons natives
  • Les architectures multi-services complexes où une plateforme complète (AWS, GCP) est plus pertinente

Développement Local et Outillage

Le développement basé sur le navigateur est pratique, mais Val Town supporte également les workflows locaux. La CLI Val Town vous permet d’éditer et de déployer des vals depuis votre terminal. Il existe également un guide MCP pour le développement assisté par LLM, et un SDK JavaScript pour l’accès programmatique via l’API REST.

Conclusion

Val Town occupe une niche spécifique et utile : le développement serverless basé sur le navigateur pour les petits services, automatisations et API. Il élimine pratiquement toute friction de déploiement pour les types de tâches backend légères dont les développeurs frontend ont régulièrement besoin. Si votre cas d’usage correspond à son modèle d’exécution et au runtime Deno, c’est l’un des moyens les plus rapides de passer de l’idée à un endpoint fonctionnel.

FAQ

Oui, mais avec des réserves. Val Town s'exécute sur Deno, vous importez donc les packages npm en utilisant la syntaxe de spécificateur npm: plutôt que de les installer via package.json. La plupart des packages npm en pur JavaScript fonctionnent correctement. Cependant, les packages qui dépendent des composants internes de Node.js ou de liaisons natives C++ peuvent ne pas fonctionner correctement dans l'environnement Deno isolé.

Val Town propose une offre gratuite avec des limites sur les exécutions et les fonctionnalités. Par exemple, l'envoi d'emails à des destinataires externes et des limites d'utilisation plus élevées sont réservés aux plans payants. Des plans payants sont disponibles pour des limites accrues, des temps d'exécution plus longs et des fonctionnalités supplémentaires comme les vals privés. Consultez la page de tarification de Val Town pour les détails actuels sur les limites et les coûts des plans.

Val Town fournit un gestionnaire de secrets intégré où vous pouvez stocker des clés API et des valeurs sensibles. Ces secrets sont accessibles dans vos vals en tant que variables d'environnement via Deno.env.get ou process.env, gardant les identifiants hors de votre code source. Les secrets sont limités à votre compte et ne sont pas visibles par les autres utilisateurs.

Val Town impose des limites de temps d'exécution qui varient selon le plan. Les vals de l'offre gratuite ont généralement une fenêtre de timeout plus courte, tandis que les plans payants offrent des temps d'exécution étendus. Ces limites rendent Val Town inadapté aux processus en arrière-plan de longue durée, mais parfaitement adéquat pour les gestionnaires d'API, les tâches planifiées et les automatisations rapides.

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay