Hasor 自定義模板引擎

2018-10-09 11:09 更新

自定義模板引擎。


下面我們簡單的介紹一下 Hasor 的自定義模板引擎配置方式。首先,接入一個渲染引擎需要實現 RenderEngine 接口,如下:

public class UserRender implements RenderEngine {
    public void initEngine(AppContext appContext) throws Throwable {
        ...
    }
    public boolean exist(String template) throws IOException {
        ...
    }
    public void process(RenderInvoker renderData, Writer writer) throws Throwable {
        ...
    }
}


其中,initEngine 方法是整個渲染引擎的初始化方法,它只會執(zhí)行一次。然后是 exist 方法,它是在執(zhí)行模板之前進行調用。用于判斷渲染引擎是否支某個資源。當 exist 正確返回 true 之后,視圖框架就會正式調用 process 進行頁面的渲染。此時開發(fā)者只需要把模板的執(zhí)行結果輸出到 writer 中即可在瀏覽器中顯示出來。


如果 exist 返回了 false。 那么框架會將 template 這個資源的渲染交給 Servlet 容器。這就意味著,一旦 exist 為 true 那么 Servlet 容器就不會有機會處理這個模板資源的渲染工作。


最后當渲染器開發(fā)完畢,您還需要將它注冊到 Hsor 容器中。您有兩種方式進行注冊:


第一種,注解方式:

@Render({ "html", "htm" })
public class UserRender implements RenderEngine {
    ...
}
// -----
public class StartModule extends WebModule {
    public void loadModule(WebApiBinder apiBinder) throws Throwable {
        //掃描所有 Render 注解
        apiBinder.scanAnnoRender();
    }
}


第二種,代碼方式注冊。此時不需要 @Render 注解:

public class UserRender implements RenderEngine {
    ...
}
// -----
public class StartModule extends WebModule {
    public void loadModule(WebApiBinder apiBinder) throws Throwable {
        apiBinder.suffix("html", "htm").bind(UserRender.class);
    }
}


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號