盒子

Box 是一个用于处理指定文件夹中文件的容器。Hexo 使用两个不同的框:hexo.sourcehexo.theme。前者用于处理 source 文件夹,后者用于处理 theme 文件夹。

¥Box is a container used for processing files in a specified folder. Hexo uses two different boxes: hexo.source and hexo.theme. The former is used to process the source folder and the latter to process the theme folder.

加载文件

¥Load Files

Box 提供了两种加载文件的方法:processwatchprocess 加载文件夹中的所有文件。watch 执行相同的操作,但还会开始监视文件更改。

¥Box provides two methods for loading files: process and watch. process loads all files in the folder. watch does the same, but also starts watching for file changes.

box.process().then(function () {
// ...
});

box.watch().then(function () {
// You can call box.unwatch() later to stop watching.
});

路径匹配

¥Path Matching

Box 提供了多种路径匹配方式。你可以使用正则表达式、函数或 Express 样式的模式字符串。例如:

¥Box provides many ways for path matching. You can use a regular expression, a function or an Express-style pattern string. For example:

posts/:id => posts/89
posts/*path => posts/2015/title

更多信息请参见 util.Pattern

¥See util.Pattern for more info.

处理器

¥Processors

处理器是 Box 的基本元素,用于处理文件。你可以使用如上所述的路径匹配来限制处理器应该处理的内容。使用 addProcessor 方法注册新的处理器。

¥A processor is an essential element of Box and is used to process files. You can use path matching as described above to restrict what exactly the processor should process. Register a new processor with the addProcessor method.

box.addProcessor("posts/:id", function (file) {
//
});

Box 将匹配到的文件内容传递给处理器。然后可以直接从回调中的 file 参数中读取此信息:

¥Box passes the content of matched files to processors. This information can then be read straight from the file argument in the callback:

属性 描述
source 文件的完整路径
path 文件框的相对路径
type 文件类型。值可以是 createupdateskipdelete
params 来自路径匹配的信息。

Box 还提供了一些方法,因此你不必自己进行文件 IO。

¥Box also provides some methods so you don’t have to do file IO by yourself.

方法 描述
read 读取文件
readSync 同步读取文件
stat 读取文件状态
statSync 同步读取文件状态
render 渲染文件
renderSync 同步渲染文件