@atlas.jsConstruido con ❤️ en STRV
Atlas.js es una plataforma hecha principalmente para reutilizar piezas de código entre múltiples proyectos y para reducir la calderera de aplicaciones comunes como las secuencias de inicio y apagado de una aplicación Node.js estándar. Usted escribe componentes (o usa el nuestro) que proporcionan funcionalidad (como un componente de la base de datos), los coloca en una instancia de Atlas y Atlas se encargará del resto. Usando ATLAS, reduce la secuencia de inicialización y apagado de su aplicación en un objeto de configuración y una línea de código.
Aquí hay una lista de componentes mantenidos por STRV.
| Componente | Versión | Información |
|---|---|---|
| @atlas.js/atlas | El paquete principal con todo lo necesario para rodar | |
| @atlas.js/cli | Una utilidad de CLI para administrar su aplicación Atlas | |
| @atlas.js/generador-atlas | El generador de yeoman para andamiar rápidamente su nueva aplicación Atlas | |
| @atlas.js/AWS | Para interactuar con AWS | |
| @atlas.js/Braintree | Para interactuar con los pagos de Braintree | |
| @atlas.js/firebase | Para interfactar con Firebase Services | |
| @atlas.js/koa | Servicio y ganchos para implementar API HTTP basadas en KOA | |
| @atlas.js/mangosta | Servicio y ganchos para trabajar con modelos MongoDB y Mongoose | |
| @atlas.js/objeción | Servicio y ganchos para trabajar con objeción.js | |
| @Atlas.js/Secelize | Servicio y ganchos para trabajar con SECLELIZE | |
| @atlas.js/nodemailer | Servicio de correo electrónico genérico con soporte para múltiples proveedores | |
| @atlas.js/replica | Un componente para caer en una carcasa interactiva con atlas cargado | |
| @atlas.js/plantillas | Acción para la representación de plantillas en cadenas HTML usando consolidate.js |
¿No encontró lo que estabas buscando? ¡Escribe la tuya! Consulte los tutoriales vinculados a continuación.
¿Necesitar ayuda? Mira la carpeta de tutoriales para ... bueno ... tutoriales. ?
La siguiente sección habla sobre las motivaciones detrás de la existencia de Atlas.js.
Cuando se familiarice con Atlas.js y los componentes hechos por STRV que comenzará a ver e incluso siente que se ha puesto un gran esfuerzo para asegurarse de que puede compartir mucho código entre los proyectos. Siempre que sea posible, Atlas.js intentará guiarlo de tal manera que pueda poder escribir bastante código de una manera que no sea específica del negocio y simplemente lo publique a NPM como un módulo y más tarde cuando lo necesite nuevamente en un proyecto diferente, simplemente instale nuevamente y todo solo funciona.
Administrar la secuencia de inicio no siempre es fácil. A veces ni siquiera está claro por qué alguien debería molestarse con una secuencia de inicio correcta de una aplicación; hoy en día, muchas bibliotecas que requieren una inicialización de asíncea admiten algún tipo de solicitud de almacenamiento en caché donde simplemente comienza a usar la biblioteca y entregará los resultados cuando esté listo.
Esto tiene varios problemas:
Algunos servicios podrían iniciarse antes que otros
Cuando inicia un servidor HTTP antes de tener una conexión de base de datos lista, podría ocurrir que recibirá tráfico al que aún no está listo para servir. Para cargas pequeñas, esto puede no ser un problema, pero para los sitios de alto tráfico podría significar varios segundos de retrasos e incluso puede agotar su memoria disponible simplemente almacenando en caché las solicitudes pendientes durante demasiado tiempo. En caso de que este tipo de solicitud de almacenamiento en caché no sea compatible, es posible que su aplicación se bloquee.
Algunos servicios podrían detenerse antes que otros
¿Qué le sucede a su aplicación cuando cierre la conexión de su base de datos antes de cerrar el servidor HTTP? Claro, es fácilmente manejable con solo dos servicios, pero ¿qué pasa si tiene más? Tal vez tenga algún servidor Redis en algún lugar allí, tal vez una conexión de clúster de Elasticsearch y otros demás, podría ser bastante complicado bastante rápido. Con Atlas, usted proporciona intuitivamente el pedido y está hecho: Atlas detendrá los servicios uno por uno.
A algunos desarrolladores no les importa y solo process.exit() la cosa
Algunos desarrolladores no quieren molestarse con la limpieza adecuada de sus recursos, como tiempos de espera, enchufes, oyentes, etc. y cuando llegue el momento, simplemente forjan el proceso. Sin embargo, esto podría resultar en que las solicitudes de algunos clientes se finalicen antes de entregar una respuesta, lo que resulta en errores extraños, páginas vacías, datos incompletos, etc.
Cuando decida entrar en lo que ofrece Atlas.js y usar los componentes al máximo, pronto se dará cuenta de que es muy fácil navegar por una base de código completamente desconocida con relativa facilidad: usted sabe qué es y dónde buscar una funcionalidad específica. Cuando trabaja para una empresa como STRV, no es raro cambiar proyectos cada pocos meses más o menos. Cuando pueda reducir el tiempo necesario para incorporar a un nuevo chico/chica a su equipo, todas las fiestas involucradas serán más felices.
Este es un ejemplo de uso completo. Las aplicaciones del mundo real dividirían al menos la parte de la configuración en su propio módulo en lugar de escribirlo en línea como este.
Además, es posible que desee consultar
Atlas.init(), que inicializa todos los componentes para usted en función del diseño de archivo/carpeta que especifique. ?Si desea tomar el camino fácil, consulte nuestro generador Yeoman para generar rápidamente la estructura de carpeta básica e instalar todas las cosas necesarias.
// 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 atlasLas opciones de configuración que cada componente acepta se documentan en su propio repositorio/carpeta de paquetes.
Así que tienes una aplicación con un servicio KOA configurado y en ejecución ... ¡Genial! ¿Pero probablemente te preguntes dónde definir tu middleware y rutas y todas las otras cosas importantes? ¡Debería consultar la carpeta Tutorials para obtener mucha más información!
Consulte el archivo de licencia para obtener información.