@atlas.jsПостроен с ❤ на STRV
Atlas.js-это платформа, в основном созданная для повторного использования деталей кода среди нескольких проектов и для уменьшения общего приложения, таких как последовательности запуска и выключения стандартного приложения Node.js. Вы пишете компоненты (или используете наши), которые обеспечивают функциональность (например, компонент базы данных), помещаете их в экземпляр Atlas, а Atlas позаботится об остальных. Используя атлас, вы уменьшаете последовательность инициализации приложения и выключения в объект конфигурации и одну строку кода.
Вот список компонентов, занимающих STRV.
| Компонент | Версия | Информация |
|---|---|---|
| @atlas.js/atlas | Основной пакет со всем необходимым для прокатки | |
| @atlas.js/cli | Утилита CLI для управления вашим приложением Atlas | |
| @atlas.js/generator-atlas | Йоман генератор, чтобы быстро разбираться с новым приложением Atlas | |
| @atlas.js/aws | Для взаимодействия с AWS | |
| @atlas.js/braintree | Для взаимодействия с платежами Braintree | |
| @atlas.js/Firebase | Для взаимодействия с службами Firebase | |
| @atlas.js/koa | Сервис и крючки для реализации HTTP API на основе KOA | |
| @atlas.js/mongoose | Обслуживание и крючки для работы с моделями MongoDB и Mongoose | |
| @atlas.js/возражение | Сервис и крючки для работы с возражением.js | |
| @atlas.js/sedizize | Сервис и крючки для работы с продолжением | |
| @atlas.js/nodemailer | Общая служба электронной почты с поддержкой нескольких провайдеров | |
| @atlas.js/Repl | Компонент для падения в интерактивную оболочку с загруженным атласом | |
| @atlas.js/шаблоны | Действие шаблонов рендеринга в строки HTML с использованием consolidate.js |
Не нашли то, что вы искали? Напишите свой собственный! Проверьте учебники, связанные ниже.
Нужна помощь? Проверьте папку учебных пособий для ... ну ... учебные пособия. ?
В следующем разделе рассказывается о мотивах существования Atlas.js.
Когда вы узнаете с компонентами Atlas.js и составляющими Strv, вы начнете видеть, и даже почувствуете, что были приложены большие усилия, чтобы убедиться, что вы можете поделиться большим количеством кода между проектами. По возможности, Atlas.js будет пытаться направить вас таким образом, что вы сможете писать довольно много кода таким образом, чтобы он не был специфичным для бизнеса, и просто публиковать его в NPM как модуль, а затем, когда вам это снова понадобится на другом проекте, просто установите его снова, и все это работает.
Управление последовательности запуска не всегда легко. Иногда даже неясно, почему кто -то должен беспокоиться о правильной последовательности запуска приложения - в настоящее время много библиотек, которые требуют некоторой асинхронной инициализации, поддерживая какое -то кэширование запросов, где вы просто начнете использовать библиотеку, и это даст результаты, когда он будет готов.
У этого есть несколько проблем:
Некоторые услуги могут быть запущены раньше, чем другие
Когда вы запустите HTTP -сервер, прежде чем у вас будет готово подключение к базе данных, может произойти, что вы получите трафик, который вы еще не готовы к обслуживанию. Для небольших нагрузок это может быть не проблемой, но для сайтов с высоким трафиком это может означать несколько секунд задержек, и вы можете даже исчерпать доступную память, просто кэшируя ожидающие запросы слишком долго. В случае, если такого рода кэширование запроса не поддерживается, даже возможно, ваше приложение просто сбой.
Некоторые услуги могут быть остановлены раньше, чем другие
Что происходит с вашим приложением, когда вы закрываете подключение к базе данных, прежде чем закрывать HTTP -сервер? Конечно, он легко управляется только с двумя услугами, но что, если у вас есть больше? Может быть, где -то там есть немного сервера Redis, возможно, какое -то подключение Elasticsearch Cluster и другие еще много чего - это может быть довольно сложно довольно быстро. С Atlas вы интуитивно предоставляете заказ, и он сделан - Atlas остановит услуги один за другим.
Некоторые разработчики не заботятся и просто process.exit()
Некоторые разработчики не хотят, чтобы их беспокоило должным образом очищать свои ресурсы, такие как тайм-ауты, розеты, слушатели и т. Д. И когда придет время, они просто заставляют процесс. Однако это может привести к тому, что некоторые запросы клиентов будут прекращены до доставки ответа, что приведет к странным ошибкам, пустым страницам, неполным данным и т. Д.
Когда вы решите пойти на то, что предлагает Atlas.js, и использовать компоненты в полной мере, вы скоро поймете, что очень легко ориентироваться в совершенно незнакомой кодовой базе с относительной легкостью - вы знаете, что есть и где искать определенную функциональность. Когда вы работаете в такой компании, как STRV, нередко меняют проекты каждые несколько месяцев или около того. Когда вы сможете сократить время, необходимое для борьбы с новым парнем/галлоном для вашей команды, все вовлеченные стороны будут счастливее.
Это полный пример использования. Приложения Real World разделили бы, по крайней мере, часть конфигурации на свой собственный модуль вместо того, чтобы писать его встроенным, как это.
Кроме того, вы можете проверить
Atlas.init(), который инициализирует все компоненты для вас на основе макета файлов/папки, которые вы указываете. ?Если вы хотите пройти легкую дорогу, ознакомьтесь с нашим генератором йомана, чтобы быстро генерировать основную структуру папок и установить все необходимые вещи.
// 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 atlasПараметры конфигурации, который принимает каждый компонент, задокументированы в их собственном хранилище/папке.
Таким образом, у вас есть приложение с сервисом KOA, настроенным и запущенным ... Отлично! Но вы, вероятно, задаетесь вопросом, где определить свое промежуточное программное обеспечение и маршруты и все остальные важные вещи? Вы должны проверить папку Tutorials для гораздо больше информации!
См. Файл лицензии для получения информации.