# Box
「Box」是 Hexo 用来处理特定文件夹中的文件的容器,在 Hexo 中有两个 Box,分别是 `hexo.source` 和 `hexo.theme`,前者用于处理 `source` 文件夹,而后者用于处理主题文件夹。
## 载入文件
Box 提供了两种方法来载入文件:`process`, `watch`,前者用于载入文件夹内的所有文件;而后者除了执行 `process` 以外,还会继续监视文件变动。
```
box.process().then(function{ // ...
});box.watch().then(function{ // 之后可调用 box.unwatch(),停止监视文件
});
```
## 比对路径
Box 提供了多种比对路径的模式,您可以以使用正则表达式(regular expression)、函数、或是一种类似于 Express 的路径字符串,例如:
```
posts/:id => posts/89
posts/*path => posts/2015/title
```
您可以以参考 [util.Pattern](https://github.com/hexojs/hexo-util#patternrule) 以获得更多信息。
## 处理器(Processor)
处理器(Processor)是 Box 中非常重要的元素,它用于处理文件,您可以使用上述的路径对比来限制该处理器所要处理的文件类型。使用 `addProcessor` 来添加处理器。
```
box.addProcessor('posts/:id'functionfile{ //
});
```
Box 在处理时会把目前处理的文件内容(`file`)传给处理器,您可以通过此参数获得该文件的数据。
| 属性 | 描述 |
| --- | --- |
| `source` | 文件完整路径 |
| `path` | 文件相对于 Box 的路径 |
| `type` | 文件类型。有 `create`, `update`, `skip`, `delete`。 |
| `params` | 从路径对比中取得的信息 |
Box 还提供了一些方法,让您无须手动处理文件 I/O。
| 方法 | 描述 |
| --- | --- |
| `read` | 读取文件 |
| `readSync` | 同步读取文件 |
| `stat` | 读取文件状态 |
| `statSync` | 同步读取文件状态 |
| `render` | 渲染文件 |
| `renderSync` | 同步渲染文件 |
- 文档
- 开始使用
- 概述
- 建站
- 配置
- 指令
- 迁移
- 基本操作
- 写作
- Front-matter
- 标签插件(Tag Plugins)
- 资源文件夹
- 数据文件
- 服务器
- 生成文件
- 部署
- 自定义
- 永久链接(Permalinks)
- 主题
- 模版
- 变量
- 辅助函数(Helpers)
- 国际化(i18n)
- 插件
- 其他
- 问题解答
- 贡献
- API
- 核心
- 概述
- 事件
- 局部变量
- 路由
- Box
- 渲染
- 文章
- 脚手架(Scaffold)
- 主题
- 扩展
- 控制台(Console)
- 部署器(Deployer)
- 过滤器(Filter)
- 生成器(Generator)
- 辅助函数(Helper)
- 迁移器(Migrator)
- 处理器(Processor)
- 渲染引擎(Renderer)
- 标签插件(Tag)