@ atlas.jsConstruit avec ❤️ à strv
Atlas.js est une plate-forme principalement conçue pour réutiliser des pièces de code parmi plusieurs projets et pour réduire le chauffeur d'application commun comme les séquences de démarrage et d'arrêt d'une application Node.js standard. Vous écrivez des composants (ou utilisez la nôtre) qui fournissent des fonctionnalités (comme un composant de base de données), les mettent dans une instance Atlas et l'atlas s'occupera du reste. À l'aide d'ATLAS, vous réduisez votre séquence d'initialisation et d'arrêt de l'application dans un objet de configuration et une ligne de code.
Voici une liste de composants entretenus par Strv.
| Composant | Version | Informations |
|---|---|---|
| @ atlas.js / atlas | Le paquet principal avec tout ce dont il faut pour faire rouler | |
| @ atlas.js / CLI | Un utilitaire CLI pour gérer votre application Atlas | |
| @ atlas.js / générateur-atlas | Yeoman Generator pour échafauner rapidement votre nouvelle application Atlas | |
| @ atlas.js / aws | Pour l'interfaçage avec AWS | |
| @ atlas.js / Braintree | Pour l'interfaçage avec les paiements Braintree | |
| @ Atlas.js / Firebase | Pour l'interfaçage avec les services de base | |
| @ atlas.js / koa | Service et crochets pour la mise en œuvre des API HTTP basée sur KOA | |
| @ Atlas.js / Mongoose | Service et crochets pour travailler avec des modèles MongoDB et Mongoose | |
| @ atlas.js / objection | Service et crochets pour travailler avec objection.js | |
| @ atlas.js / séquelle | Service et crochets pour travailler avec séquelle | |
| @ atlas.js / nodemailer | Service de messagerie générique avec support pour plusieurs fournisseurs | |
| @ atlas.js / | Un composant pour tomber dans une coque interactive avec Atlas chargé | |
| @ atlas.js / modèles | Action pour le rendu des modèles en chaînes HTML à l'aide de consolider.js |
Vous n'avez pas trouvé ce que vous cherchiez? Écrivez le vôtre! Vérifiez les tutoriels liés ci-dessous.
Besoin d'aide? Consultez le dossier Tutorials pour ... eh bien ... tutoriels. ?
La section suivante parle des motivations derrière l'existence d'Atlas.js.
Lorsque vous vous familiarisez avec Atlas.js et les composants fabriqués par STRV, vous commencerez à voir et même que beaucoup d'efforts ont été consacrés à vous assurer que vous pouvez partager beaucoup de code entre les projets. Dans la mesure du possible, Atlas.js essaiera de vous guider de telle manière que vous devriez pouvoir écrire beaucoup de code d'une manière qui n'est pas spécifique à l'entreprise et de le publier simplement sur NPM en tant que module et plus tard lorsque vous en avez besoin sur un autre projet, installez-le simplement et tout fonctionne.
La gestion de la séquence de démarrage n'est pas toujours facile. Parfois, il n'est même pas clair pourquoi quelqu'un devrait se soucier d'une séquence de démarrage correcte d'une application - de nos jours de nombreuses bibliothèques qui nécessitent une initiation asynchrone prennent en charge une sorte de mise en cache de demande où vous commencez simplement à utiliser la bibliothèque et il fournira les résultats lorsqu'il est prêt.
Cela a plusieurs problèmes:
Certains services pourraient être démarrés plus tôt que d'autres
Lorsque vous démarrez un serveur HTTP avant d'avoir une connexion de base de données prête, il pourrait arriver que vous receviez du trafic que vous n'êtes pas encore prêt à servir. Pour les petites charges, ce n'est peut-être pas un problème, mais pour les sites de trafic élevé, cela pourrait signifier plusieurs secondes de retards et vous pourriez même épuiser votre mémoire disponible simplement en mettant en cache les demandes en attente trop longtemps. Dans le cas où ce type de mise en cache de demande n'est pas pris en charge, il est même possible que votre application ne se bloque.
Certains services pourraient être arrêtés plus tôt que d'autres
Qu'arrive-t-il à votre application lorsque vous fermez votre connexion de base de données avant de fermer le serveur HTTP? Bien sûr, il est facilement gérable avec seulement deux services, mais que se passe-t-il si vous en avez plus? Peut-être que vous avez un serveur Redis quelque part là-dedans, peut-être une connexion de cluster Elasticsearch et d'autres WhatNots - cela pourrait devenir assez compliqué. Avec Atlas, vous fournissez intuitivement la commande et c'est fait - Atlas arrêtera les services un par un.
Certains développeurs s'en fichent et ne process.exit() la chose
Certains développeurs ne veulent pas être dérangés par le nettoyage correct de leurs ressources comme des délais d'attente, des prises, des auditeurs, etc. Et le moment venu, ils ne font que forcer le processus. Cependant, cela pourrait entraîner la résiliation de certaines demandes des clients avant de fournir une réponse, entraînant des erreurs étranges, des pages vides, des données incomplètes, etc.
Lorsque vous décidez de tout faire sur ce que Atlas.js propose et utilisez les composants au maximum, vous vous rendrez bientôt à compte qu'il est très facile de naviguer dans une base de code complètement inconnue avec une facilité relative - vous savez ce qui est où et où chercher une fonctionnalité spécifique. Lorsque vous travaillez pour une entreprise comme STRV, il n'est pas rare de changer de projets tous les quelques mois environ. Lorsque vous pouvez réduire le temps nécessaire pour embarquer un nouveau gars / fille à votre équipe, toutes les parties impliquées seront plus heureuses.
Ceci est un exemple d'utilisation complet. Les applications du monde réel diviseraient au moins la partie de configuration en son propre module au lieu de l'écrire en ligne comme ceci.
En outre, vous souhaiterez peut-être consulter
Atlas.init(), qui initialise tous les composants pour vous en fonction de la disposition des fichiers / dossiers que vous spécifiez. ?Si vous souhaitez prendre la route facile, consultez notre générateur Yeoman pour générer rapidement la structure de dossiers de base et installer toutes les choses nécessaires.
// We start by importing the required components...
import { Atlas } from '@atlas.js/atlas'
import * as Koa from '@atlas.js/koa'
// Now we need an instance of Atlas, so let's make one
const atlas = new Atlas ( {
// We MUST specify the root folder where our app resides
// This should usually point to the folder where your package.json resides
root : __dirname ,
// Setting env is optional and it fallbacks to NODE_ENV, of course
env : process . env . NODE_ENV ,
// This is where all the configuration data should be specified, for all the components
config : {
// Configuration for services
services : {
// The `http` configuration will be given to the service which we will name as `http`
// (see the `atlas.service()` call below)
http : {
// This goes to the `listen()` function call
listen : {
port : 3000 ,
} ,
// Any properties which Koa supports can be set here
koa : {
proxy : true ,
} ,
} ,
} ,
// Configuration for actions
actions : { } ,
// ...aaand configuration for hooks
hooks : { } ,
} ,
} )
// We need to add the components we want to use to the application
// The first argument is the component's name - it will be used to locate the component's
// configuration and also the service will be exposed on that property:
// `atlas.services.http`
atlas . service ( 'http' , Koa . Service )
// Great, we can finally start the app!
atlas . start ( )
. then ( ( ) => console . log ( 'ready!' ) )
. catch ( err => console . error ( err ) )
export default atlasLes options de configuration que chaque composant acceptent sont documentées dans leur propre référentiel / dossier de package.
Vous avez donc une application avec un service KOA configuré et en cours d'exécution ... super! Mais vous vous demandez probablement où définir vos middleware et vos itinéraires et toutes les autres choses importantes? Vous devriez consulter le dossier Tutorials pour beaucoup plus d'informations!
Voir le fichier de licence pour plus d'informations.