# 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)