@atlas.jsSTRVで❤️で構築されています
atlas.jsは、主に複数のプロジェクト間でコードを再利用し、標準node.jsアプリの起動&シャットダウンシーケンスなどの一般的なアプリケーションボイラープレートを削減するために作成されたプラットフォームです。 (またはデータベースコンポーネントなど)機能を提供するコンポーネント(または使用)を作成し、それらをAtlasインスタンスに入れて、Atlasが残りを処理します。 ATLAを使用すると、アプリケーションの初期化とシャットダウンシーケンスを構成オブジェクトと1行のコードに削減します。
以下は、STRVに維持されたコンポーネントのリストです。
| 成分 | バージョン | 情報 |
|---|---|---|
| @atlas.js/atlas | ローリングするために必要なすべてのメインパッケージ | |
| @atlas.js/cli | Atlasアプリを管理するCLIユーティリティ | |
| @atlas.js/generator-atlas | 新しいAtlasアプリをすばやく足場にするヨーマンジェネレーター | |
| @atlas.js/aws | AWSとのインターフェース用 | |
| @atlas.js/braintree | Braintree Paymentsとのインターフェースのため | |
| @atlas.js/firebase | FireBaseサービスとのインターフェース用 | |
| @atlas.js/koa | KOAベースのHTTP APIを実装するためのサービスとフック | |
| @atlas.js/mongoose | MongodbおよびMongooseモデルを扱うためのサービスとフック | |
| @atlas.js/異議 | deploction.jsで作業するためのサービスとフック | |
| @atlas.js/secelize | 後遺症で作業するためのサービスとフック | |
| @atlas.js/nodemailer | 複数のプロバイダーのサポートを備えた一般的な電子メールサービス | |
| @atlas.js/repl | Atlasをロードしてインタラクティブなシェルにドロップするコンポーネント | |
| @atlas.js/テンプレート | Consolidate.jsを使用して、テンプレートをHTML文字列にレンダリングするためのアクション |
あなたが探していたものを見つけませんでしたか?あなた自身を書いてください!以下にリンクされているチュートリアルを確認してください。
助けが必要ですか? ...まあ...チュートリアルについては、チュートリアルフォルダーをご覧ください。 ?
次のセクションでは、atlas.jsの存在の背後にある動機について説明します。
atlas.jsとSTRVメイドのコンポーネントに精通していると、プロジェクト間で多くのコードを共有できるようにするために多大な努力が払われていると感じ始めます。可能な限り、atlas.jsは、ビジネス固有ではなく、モジュールとしてNPMに公開し、後で別のプロジェクトで再度必要なときにNPMに公開するように、かなり多くのコードを書くことができるように、あなたをガイドしようとします。
スタートアップシーケンスの管理は必ずしも簡単ではありません。誰かがアプリの正しい起動シーケンスで自分自身を悩ませる必要がある理由さえ明確ではない場合があります - 最近では、いくつかの非同期初期化をサポートする必要がある多くのライブラリが何らかのリクエストキャッシングをサポートする必要があります。
これにはいくつかの問題があります:
一部のサービスは、他のサービスよりも早く開始できます
データベース接続の準備が整う前にHTTPサーバーを起動すると、まだ提供する準備ができていないトラフィックを受け取ることがあります。少量の負荷の場合、これは問題ではないかもしれませんが、交通量の多いサイトの場合、数秒の遅延を意味する可能性があり、保留中のリクエストを長時間キャッシュするだけで利用可能なメモリを使い果たすことさえあります。この種のリクエストキャッシュがサポートされていない場合、アプリがクラッシュする可能性さえあります。
一部のサービスは、他のサービスよりも早く停止する可能性があります
HTTPサーバーを閉じる前にデータベース接続を閉じると、アプリケーションはどうなりますか?確かに、たった2つのサービスで簡単に管理できますが、さらに多くのサービスがあればどうなりますか?たぶん、そこのどこかにRedisサーバーがあるかもしれませんが、ElasticSearchクラスター接続やその他のものは、非常に速く複雑になる可能性があります。 Atlasを使用すると、注文を直感的に提供し、それが行われます-Atlasは1つずつサービスを停止します。
一部の開発者は気にせず、 process.exit()します
一部の開発者は、タイムアウト、ソケット、リスナーなどのリソースを適切にクリーンアップすることに悩まされたくありません。時間が来たら、プロセスを強制します。ただし、これにより、応答を配信する前に一部のクライアントリクエストが終了する可能性があり、奇妙なエラー、空のページ、不完全なデータなどが発生します。
atlas.jsが提供するものにすべてを作成し、コンポーネントを最大限に活用することにした場合、すぐに、まったく馴染みのないコードベースを比較的簡単にナビゲートすることが非常に簡単であることに気付くでしょう。 STRVのような会社で働いている場合、数か月ごとにプロジェクトを切り替えることは珍しくありません。新しい男/ギャルをチームに搭載するのに必要な時間を短縮できれば、関係するすべての関係者は幸せになります。
これは完全な使用例です。 Real Worldアプリは、このようにインラインで書き込む代わりに、少なくとも構成の部分を独自のモジュールに分割します。
また、
Atlas.init()をチェックアウトすることもできます。これは、指定したファイル/フォルダーレイアウトに基づいてすべてのコンポーネントを初期化します。 ?Easy Roadをご覧になりたい場合は、Yeomanの発電機をチェックして、基本的なフォルダー構造をすばやく生成し、必要なものをすべてインストールしてください。
// 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サービスが構成されて実行されているアプリがあります...素晴らしい!しかし、あなたはおそらくあなたのミドルウェアやルート、そして他のすべての重要なことをどこで定義するのだろうと思いますか?詳細については、チュートリアルフォルダーをご覧ください!
情報については、ライセンスファイルを参照してください。