@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服务的应用程序...很棒!但是,您可能想知道在哪里定义您的中间件和路线以及所有其他重要的事情?您应该查看教程文件夹以获取更多信息!
有关信息,请参见许可证文件。