a6eebb940f
* feat: improve code * feat: update docs * feat: update docs * Update index.md * Update features.md * Update when.md * Update contributing.md * Update translations.md * feat: clean up * Add files via upload * Update the-first-app.md * Update plugins.md * Update a-b-c.md * Update blocks.md * feat: update docs * Add files via upload * Update charts.md * feat: update navs * Update index.md * Update index.md * Update features.md * Update index.md * Update docker-compose.md * Update create-nocobase-app.md * Update git-clone.md * Update contributing.md * Update translations.md * Update plugins.md * Update the-first-app.md * Add files via upload * Update charts.md * Update charts.md * Update a-b-c.md * Update collections.md * Update menus.md * Update menus.md Co-authored-by: Zhou <zhou.working@gmail.com>
4.5 KiB
4.5 KiB
Application
基于 Koa 实现的 WEB 框架,兼容所有的 Koa 插件。
构造函数
constructor()
创建一个应用实例。
签名
constructor(options: ApplicationOptions)
参数
参数名 | 类型 | 默认值 | 描述 |
---|---|---|---|
options.database |
IDatabaseOptions or Database |
{} |
数据库配置 |
options.resourcer |
ResourcerOptions |
{} |
资源路由配置 |
options.cors |
CorsOptions |
{} |
跨域配置,参考 @koa/cors |
options.dataWrapping |
boolean |
true |
是否包装响应数据,true 则将把通常的 ctx.body 包装为 { data, meta } 的结构。 |
options.registerActions |
boolean |
true |
是否注册默认的 actions |
options.i18n |
I18nOptions |
{} |
国际化配置,参考 i18next |
options.plugins |
PluginConfiguration[] |
[] |
默认启用的插件配置 |
Type
interface ApplicationOptions {
}
示例
import Application from '@nocobase/server';
const app = new Application({
database: {
dialect: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: '123456',
database: 'test',
},
resourcer: {
prefix: '/api',
},
cors: {
origin: '*',
}
});
实例成员
cli
命令行工具实例,参考 npm 包 Commander。
db
数据库实例,相关 API 参考 Database。
resourcer
应用初始化自动创建的资源路由管理实例,相关 API 参考 Resourcer。
acl
ACL 实例,相关 API 参考 ACL。
i18n
I18next 实例,相关 API 参考 I18next。
pm
插件管理器实例,相关 API 参考 PluginManager。
version
应用版本实例,相关 API 参考 ApplicationVersion。
middleware
内置的中间件有:
- i18next
- bodyParser
- cors
- dataWrapping
- collection2resource
- restApiMiddleware
context
继承自 koa 的 context,可以通过 app.context
访问,用于向每个请求注入上下文可访问的内容。参考 Koa Context。
NocoBase 默认对 context 注入了以下成员,可以在请求处理函数中直接使用:
变量名 | 类型 | 描述 |
---|---|---|
ctx.app |
Application |
应用实例 |
ctx.db |
Database |
数据库实例 |
ctx.resourcer |
Resourcer |
资源路由管理器实例 |
ctx.action |
Action |
资源操作相关对象实例 |
ctx.i18n |
I18n |
国际化实例 |
ctx.t |
i18n.t |
国际化翻译函数快捷方式 |
ctx.getBearerToken() |
Function |
获取请求头中的 bearer token |
实例方法
use()
注册中间件,兼容所有 Koa 插件
on()
订阅应用级事件,主要与生命周期相关,等同于 eventEmitter.on()
。所有可订阅事件参考 事件。
command()
自定义 command
findCommand()
查找已定义 command
runAsCLI()
以 CLI 的方式运行。
load()
加载应用配置。
签名
async load(): Promise<void>
reload()
重载应用配置。
install()
初始化安装应用,同步安装插件。
upgrade()
升级应用,同步升级插件。
start()
启动应用,如果配置了监听的端口,将启动监听,之后应用即可接受 HTTP 请求。
签名
async start(options: StartOptions): Promise<void>
参数
参数名 | 类型 | 默认值 | 描述 |
---|---|---|---|
options.listen? |
ListenOptions |
{} |
HTTP 监听参数对象 |
options.listen.port? |
number |
13000 | 端口 |
options.listen.host? |
string |
'localhost' |
域名 |
stop()
停止应用,此方法会关闭数据库连接,关闭 HTTP 端口,不会删除数据。
destroy()
删除应用,此方法会删除应用对应的数据库。