@atlas.jsGebaut mit ❤️ bei Strv
Atlas.js ist eine Plattform, die hauptsächlich zur Wiederverwendung von Codestücken zwischen mehreren Projekten und zur Reduzierung der gemeinsamen Anwendungskesselplatte wie die Start- und Stilldown-Sequenzen einer Standard-Node.js-App hergestellt wurde. Sie schreiben Komponenten (oder verwenden unsere), die Funktionen (wie eine Datenbankkomponente) liefern, sie in eine Atlas -Instanz einfügen, und Atlas kümmert sich um den Rest. Mit Atlas reduzieren Sie Ihre Anwendungsinitialisierung und Herunterfahren -Sequenz in ein Konfigurationsobjekt und eine Codezeile.
Hier finden Sie eine Liste der von STRV-gepflegten Komponenten.
| Komponente | Version | Info |
|---|---|---|
| @Atlas.js/Atlas | Das Hauptpaket mit allem, was zum Rollen benötigt wird | |
| @atlas.js/cli | Ein CLI -Dienstprogramm zur Verwaltung Ihrer Atlas -App | |
| @Atlas.js/Generator-Atlas | Yeoman Generator, um Ihre neue Atlas -App schnell zu senken | |
| @atlas.js/aws | Für die Vernetzung mit AWS | |
| @Atlas.js/Braintree | Für die Vernetzung mit Braintree -Zahlungen | |
| @Atlas.js/Firebase | Für die Vernetzung mit Firebase Services | |
| @atlas.js/koa | Service und Hooks zur Implementierung von KOA-basierten HTTP-APIs | |
| @atlas.js/mongoose | Service und Haken für die Arbeit mit MongoDB- und Mongoose -Modellen | |
| @atlas.js/Einwand | Service und Haken für die Arbeit mit Einspruch.js | |
| @atlas.js/sequelize | Service und Haken für die Arbeit mit Folgen | |
| @atlas.js/nodeMailer | Generischer E -Mail -Service mit Unterstützung für mehrere Anbieter | |
| @atlas.js/repl | Eine Komponente, die in eine interaktive Hülle mit geladenem Atlas fallen kann | |
| @atlas.js/templates | Aktion zum Rendern von Vorlagen in HTML -Zeichenfolgen mit Consolided.js |
Haben Sie nicht gefunden, wonach Sie gesucht haben? Schreiben Sie Ihre eigenen! Überprüfen Sie die unten verlinkten Tutorials.
Benötigen Sie Hilfe? Schauen Sie sich den Ordner Tutorials für ... na ja ... Tutorials an. ?
Der folgende Abschnitt spricht über die Motivationen hinter der Existenz von Atlas.js.
Wenn Sie sich mit Atlas.js und den von STRV-hergestellten Komponenten vertraut machen, werden Sie anfangen zu sehen und sogar zu der Meinung, dass viel Anstrengungen in die Lage versetzt wurden, sicherzustellen, dass Sie viel Code zwischen Projekten teilen können. Wenn möglich, wird Atlas.js versuchen, Sie so zu führen, dass Sie in der Lage sein sollten, eine Menge Code auf eine Art und Weise zu schreiben, die nicht geschäftsspezifisch ist, und es einfach als Modul an NPM veröffentlichen und später, wenn Sie es für ein anderes Projekt benötigen, einfach erneut installieren und alles einfach funktioniert.
Das Verwalten der Startsequenz ist nicht immer einfach. Manchmal ist nicht einmal klar, warum sich jemand mit einer korrekten Startsequenz einer App stören sollte - heutzutage viele Bibliotheken, für die eine asynchronisierte Initialisierungsunterstützung eine Art Anfrage -Caching erfordern, bei der Sie einfach die Bibliothek verwenden, und die Ergebnisse liefern, wenn sie fertig ist.
Dies hat mehrere Probleme:
Einige Dienste konnten früher begonnen werden als andere
Wenn Sie einen HTTP -Server starten, bevor Sie über eine Datenbankverbindung fertig sind, kann es geschehen, dass Sie den Datenverkehr erhalten, den Sie noch nicht bereit sind. Bei kleinen Lasten ist dies möglicherweise kein Problem, aber für hochverkehrsbedingte Websites kann dies mehrere Sekunden Verzögerungen bedeuten und Sie können sogar Ihren verfügbaren Speicher ausschöpfen, indem Sie die anstehenden Anfragen zu lange zwischengespeichert werden. Falls diese Art von Anfrage nicht unterstützt wird, ist dies auch möglich, dass Ihre App nur zum Absturz ist.
Einige Dienste könnten früher als andere gestoppt werden
Was passiert mit Ihrer Anwendung, wenn Sie Ihre Datenbankverbindung schließen, bevor Sie den HTTP -Server schließen? Sicher, es ist mit nur zwei Diensten leicht zu handhaben, aber was ist, wenn Sie mehr haben? Vielleicht haben Sie irgendwo einen Redis -Server, vielleicht eine Elasticsearch -Clusterverbindung und andere soNots - es könnte ziemlich kompliziert werden. Mit Atlas geben Sie intuitiv die Bestellung an und sie ist erledigt - Atlas wird die Dienste nacheinander stoppen.
Einige Entwickler kümmern sich nicht darum und process.exit() das Ding
Einige Entwickler möchten sich nicht darum bemühen, ihre Ressourcen wie Auszeitüberschreitungen, Steckdosen, Zuhörer usw. richtig aufzuräumen, und wenn die Zeit kommt, zwingen sie den Prozess nur. Dies kann jedoch dazu führen, dass einige Kundenanfragen beendet werden, bevor eine Antwort abgeliefert wird, was zu seltsamen Fehlern, leeren Seiten, unvollständigen Daten usw. führt.
Wenn Sie sich entscheiden, sich mit dem, was atlas.js bietet, zu beschließen, und die Komponenten in vollem Umfang zu verwenden, werden Sie bald feststellen, dass es sehr einfach ist, eine völlig unbekannte Codebasis mit relativer Leichtigkeit zu navigieren - Sie wissen, was dort ist und wo Sie nach einer bestimmten Funktionalität suchen müssen. Wenn Sie für ein Unternehmen wie Strv arbeiten, ist es nicht ungewöhnlich, alle paar Monate oder so Projekte zu wechseln. Wenn Sie die Zeit verkürzen können, die benötigt wird, um einen neuen Mann/ein neues Mädchen in Ihr Team zu blockieren, sind alle beteiligten Partys glücklicher.
Dies ist ein vollständiges Nutzungsbeispiel. Real World Apps würden mindestens den Konfigurationsteil in ein eigenes Modul aufteilen, anstatt es so in der Linie zu schreiben.
Möglicherweise möchten Sie
Atlas.init()ansehen, in dem alle Komponenten für Sie basierend auf dem von Ihnen angegebenen Datei-/Ordnerlayout initialisiert werden. ?Wenn Sie die einfache Straße nehmen möchten, lesen Sie unseren Yeoman -Generator, um schnell die Grundordnerstruktur zu generieren und alle benötigten Dinge zu installieren.
// 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 atlasDie Konfigurationsoptionen, die jede Komponente akzeptiert, werden in ihrem eigenen Paket -Repository/-ordner dokumentiert.
Sie haben also eine App mit einem KOA -Dienst konfiguriert und ausgeführt ... großartig! Aber Sie fragen sich wahrscheinlich, wo Sie Ihre Middleware und Routen und alle anderen wichtigen Dinge definieren können? Sie sollten sich im Ordner Tutorials für viel mehr Informationen ansehen!
Informationen finden Sie in der Lizenzdatei.