Box

Box 是一個容器,用於處理指定資料夾中的檔案。Hexo 使用兩種不同的 Box:hexo.sourcehexo.theme。前者用於處理 source 資料夾,後者用於處理 theme 資料夾。

載入檔案

Box 提供了兩種載入檔案的方法:processwatchprocess 會載入資料夾中的所有檔案。watch 的功能相同,但也會開始監看檔案變更。

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

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

路徑匹配

Box 提供了多種路徑匹配方式。您可以使用正規表示式、函式或 Express 風格的模式字串。例如:

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

更多資訊請參閱 util.Pattern

處理器

處理器是 Box 的重要組成部分,用於處理檔案。您可以使用上述的路徑匹配來限制處理器應該處理的檔案。使用 addProcessor 方法註冊新的處理器。

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

Box 會將匹配檔案的內容傳遞給處理器。這些資訊可以直接從回呼函數中的 file 參數讀取:

屬性 描述
source 檔案的完整路徑
path 相對於 Box 的檔案路徑
type 檔案類型。值可以是 createupdateskipdelete
params 來自路徑匹配的資訊。

Box 也提供了一些方法,因此您不必自己進行檔案 I/O。

方法 描述
read 讀取檔案
readSync 同步讀取檔案
stat 讀取檔案狀態
statSync 同步讀取檔案狀態
render 渲染檔案
renderSync 同步渲染檔案