@atlas.js用strv建造❤️
ATLAS.JS是一個平台,主要用於多個項目中的代碼重複使用,並減少常見的應用程序樣板,例如標準Node.js應用程序的啟動和關閉序列。您編寫提供功能(例如數據庫組件)的組件(或使用我們的),將它們放入Atlas實例中,而Atlas將負責其餘的。使用Atlas,可以將應用程序初始化和關閉序列減少到配置對象和一行代碼中。
這是STRV維護組件的列表。
| 成分 | 版本 | 資訊 |
|---|---|---|
| @atlas.js/atlas | 主包,帶有滾動所需的一切 | |
| @atlas.js/cli | 管理Atlas應用程序的CLI實用程序 | |
| @atlas.js/generator-atlas | Yeoman Generator快速踩踏您的新Atlas應用程序 | |
| @atlas.js/aws | 用於與AWS接口 | |
| @atlas.js/braintree | 用於與Braintree付款的接口 | |
| @atlas.js/firebase | 用於與燃燒服務的接口 | |
| @atlas.js/koa | 用於實施基於KOA的HTTP API的服務和掛鉤 | |
| @atlas.js/mongoose | 使用MongoDB和Mongoose模型的服務和鉤子 | |
| @atlas.js/異議 | 服務和掛鉤以解決異議。 | |
| @atlas.js/quelize | 服務和掛鉤用於續集 | |
| @atlas.js/nodemailer | 通用電子郵件服務,並為多個提供商提供支持 | |
| @atlas.js/dept | 掉入帶有地圖集的交互式外殼中的組件 | |
| @atlas.js/模板 | 使用consolidate.js將模板渲染到HTML字符串中的動作 |
找不到您想要的東西嗎?寫自己的!檢查下面鏈接的教程。
需要幫助嗎?查看... ...教程的教程文件夾。 ?
以下部分討論了Atlas.js存在的動機。
當您熟悉Atlas.js和STRV製造的組件時,您將開始看到,甚至感到非常努力,以確保您可以在項目之間共享很多代碼。只要有可能,Atlas.js就會嘗試以一種不具體特定業務的方式編寫相當多的代碼的方式來指導您,並且只需將其發佈到NPM作為模塊,然後再在其他項目上再次需要時,只需再次安裝它,然後再次安裝它就可以使用。
管理啟動序列並不總是那麼容易。有時甚至還不清楚為什麼有人應該用正確的啟動序列打擾自己 - 如今,許多需要某種異步初始化的庫支持某種請求緩存,您可以在其中開始使用庫,並且在準備就緒時可以提供結果。
這有幾個問題:
某些服務可能比其他服務更早開始
在準備好數據庫連接之前啟動HTTP服務器時,您可能會收到尚未準備好服務的流量。對於小負載,這可能不是問題,但是對於高流量站點而言,這可能意味著幾秒鐘的延遲,您甚至可以通過緩存待處理的請求太長來耗盡可用的內存。如果不支持這種請求緩存,您的應用程序甚至可能會崩潰。
某些服務可能比其他服務更快停止
關閉在關閉HTTP服務器之前關閉數據庫連接時,應用程序會發生什麼?當然,只有兩種服務就很容易管理,但是如果您有更多的服務怎麼辦?也許您的某個地方有一些Redis服務器,也許是一些Elasticsearch群集連接等等 - 它可能會很快變得非常複雜。使用Atlas,您可以直觀地提供訂單,並且完成了訂單 - Atlas將一一停止服務。
一些開發人員不在乎,只是process.exit()
一些開發人員不想被適當地清理其資源(例如超時,插座,聽眾等)。但是,這可能導致某些客戶請求在交付響應之前被終止,從而導致錯誤,空頁,不完整的數據等。
當您決定全力了解Atlas.js提供和使用最大的組件時,您很快就會意識到,相對輕鬆地瀏覽完全不熟悉的代碼庫非常容易 - 您知道什麼在哪里以及在哪裡尋找特定功能。當您在像STRV這樣的公司工作時,每隔幾個月左右就切換項目並不少見。當您可以減少向您的團隊上一個新人/加爾所需的時間時,所有涉及的各方都會更快樂。
這是一個完整的用法示例。現實世界的應用程序將至少將配置部分分為自己的模塊,而不是像這樣編寫它。
另外,您可能需要查看
Atlas.init(),該()根據您指定的文件/文件夾佈局來初始化所有組件。 ?如果您想走一條簡單的道路,請查看我們的Yeoman Generator,以快速生成基本文件夾結構並安裝所有所需的東西。
// 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服務的應用程序...很棒!但是,您可能想知道在哪裡定義您的中間件和路線以及所有其他重要的事情?您應該查看教程文件夾以獲取更多信息!
有關信息,請參見許可證文件。