# @ayanaware/bento 中文文档

规范地址：https://npmcn.com/package/%40ayanaware/bento/

版本：1\.0\.0-rc\.29
npm 元数据更新时间：2022-06-05T01:25:27.048Z
中文译文更新时间：2026-11-07T15:22:53.627Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40ayanaware/bento
原文对照：https://npmcn.com/package/%40ayanaware/bento/?lang=original
源码仓库：https://gitlab.com/ayanaware/bento

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：243 kB，149 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：3 个
- 首次发布：2019-11-15T18:35:32.368Z
- 最新版本发布：2022-06-05T01:25:26.966Z
- 近 30 天下载量：9145（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：30（近 12 个月 0 个）

## 中文简介

用于解决复杂任务的模块运行时间框架

## 安装

```sh
npm install @ayanaware/bento
```

也可以使用：`pnpm add @ayanaware/bento`、`yarn add @ayanaware/bento`、`bun add @ayanaware/bento`

## README

# @ayanaware/本多 [![npm (scoped)](https://img.shields.io/npm/v/@ayanaware/bento.svg)](https://www.npmjs.com/package/@ayanaware/bento) [![Discord](https://discordapp.com/api/guilds/508903834853310474/embed.png)](https://discord.gg/eaa5pYf) [![install size](https://packagephobia.now.sh/badge?p=@ayanaware/bento)](https://packagephobia.now.sh/result?p=@ayanaware/bento)

[文档](https://docs.ayana.io/modules/bento.html) 二. 支助 [实例](https://gitlab.com/ayanaware/bento/tree/master/examples)

Bento是一个应用框架,旨在帮助创建和维护g模块化项目.

## 目标

协助开发者使用模块化代码库中使用的共同模式. 在外面待着 他们的方式, 最低头痛, 最低债务.

## 承诺

-   可读性 第一:本多的"法典"应该有详细记载,易于阅读.
-   有限依赖:通过写出代码来解决问题,不添加依赖.
-   测试所有的东西:在出道前抓住一些虫子.

## 班多做的东西

-   可插件应用框架.
-   配置:组件、事件、插件、属性、变量
-   构成部分和插件生命周期管理
-   一致部分 API
-   定义严格,有见解,规则

## 本多不会的

-   宾多 _应_ 在浏览器中工作,但它不是一个网站框架.

## 安装

```bash
yarn add @ayanaware/bento
```

```bash
npm i @ayanaware/bento
```

## 什么是本多组件?

本多(Bentro indroduces)构件的概念. 组件是逻辑的块代码,所有代码合作为世界提供你的应用.

所有组件重现自己的组件API实例 。 构件API在所有构件之间是一致的,为构件相互说话提供了一种方式. 以及许多其他"生活质量"特征. 例如:依赖性解析和注射,可变注射,组件事件等等!

作为拇指的通则,组件不应承担更多的需要。 (IE:而不是有一个连接到Discord和处理消息的组件. 有两个,一个是连接和发布消息事件,一个是处理消息)

以下是本多元素的一个非常基本的例子:

```ts
import { Component, ComponentAPI } from '@ayanaware/bento';

export class Basic implements Component {
    // required for all components, must be unique
    public name = 'Basic';
    // this property becomes available after onLoad see ComponentAPI for more info
    public api!: ComponentAPI;

    // Optionally define other components we depend upon
    // Some decorators auto append to this array such as @Subscribe
    public dependencies: Array<Component> = [];

    // Lifecycle event, called right before component fully loaded
    public async onLoad() {
        console.log('Hello world!');
    }

    // Lifecycle event, called right before component is unloaded
    public async onUnload() {
        console.log('Goodbye world!');
    }
}
```

此示例的可运行版本可见于 [胶片](https://gitlab.com/ayanaware/bento/tree/master/examples/src/bento-basic)

## 怎样使用本多

从本多开始很简单 首先导入并插入本多和任何您想要使用的插件 。 然后简单地将插件添加到本多. 以下示例假设您在同一目录(相对)中有一个名为"组件"的目录.

```ts
import { Bento, EntityType, FSEntityLoader } from '@ayanaware/bento';

// Create a Bento instance
const bento = new Bento();

// Anonymous async function so we can use await
(async () => {
    // Create FSEntityLoader
    // NOTE: Keep in mind all FSEntityLoader does is
    // find components in a path, instantiates them and
    // calls Bento.addComponent() behind the scenes
    const fsel = new FSEntityLoader();
    await fsel.addDirectory([__dirname, 'components'], EntityType.COMPONENT);

    // Apply plugin to Bento.
    await bento.addPlugin(fsloader);

    // Verify that Application looks good to continue
    await bento.verify();
})().catch(e => {
    console.error(`Error while starting Bento:\n${e}`);
    process.exit(1);
});
```

## Bento 应用程序

应用使得本多应用更加容易被拖住. 幕后风声 FSnentity Loader 用于在 `./plugins` 财务报告和审定财务报表 `./components` 页:1. 变量也使用变量FileLoader从 `../env.example.json` 财务报告和审定财务报表 `../env.json`。 。 。 . 最后,便当实例和上述插件在需要时会完全被曝光.

```ts
import { Application } from '@ayanaware/bento';

// Bento Application Helper
const app = new Application();

// Anonymous async function so we can use await
(async () => {
    // Default Variables are loaded from `../env.example.json`
    // Variables are loaded from `../env.json`
    // Plugins in `./plugins` are instantiated and added to Bento
    // Components in `./components` are instantiated and added to Bento
    // All this behavior can be modifed using cfg in Application constructor
    await app.start();

    // Must be called, calls `bento.verify();` and returns `ApplicationState`
    await app.verify();
})().catch(e => {
    console.error(`Error while starting Application:\n${e}`);
    process.exit(1);
});
```

更多可用实例 [这里](https://gitlab.com/ayanaware/bento/tree/master/examples)

## 证词

下面是几个关于使用本多的狂言!

> 到目前为止,本多只是 良好的记忆生产, 它的工作非常出色, 我们规模达到了40克, 10个硬块一个集群, 本多让生活与缩放 不那么可怕. - 普莱克西开发公司[captchabot.xyz (英语)](https://captchabot.xyz/)(中文(简体) )

## 常见问题

### @ayanaware/bento 是什么？

用于解决复杂任务的模块运行时间框架

### 如何安装 @ayanaware/bento？

在项目目录运行 npm install @ayanaware/bento，或使用 pnpm add / yarn add / bun add。

### @ayanaware/bento 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @ayanaware/bento 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @ayanaware/bento 可以商用吗？

@ayanaware/bento 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @ayanaware/bento 的下载量有多少？

根据 npm 官方下载统计，@ayanaware/bento 在 2026/10/08 – 2026/11/06 这 30 天内被下载 9,145 次，日均约 305 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @ayanaware/bento 还在维护吗？

最新版本 1\.0\.0-rc\.29 发布于 2022/06/05（4 年前）；至今共发布 30 个版本，其中过去 12 个月发布了 0 个；首次发布于 2019/11/16。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

