前言
用 Razor 模板(.cshtml)在後端產生 HTML(例如啟用信、密碼重設信、驗證碼信)時,
常見的兩個引擎是 RazorLight 與 Razor.Templating.Core。
模板檔案本身可以完全一樣,連 @model、@if、@Model.Xxx 都不用改,
但專案設定和驅動程式的實作差很多——而且差的點,剛好都源自同一件事:
RazorLight 是執行期(runtime)才編譯模板,Razor.Templating.Core 是建置期(build time)就預編譯好。
這一個差異,連帶解釋了三個「為什麼」:
- 為什麼 RazorLight 要寫一支 warmup 預熱 程式,Razor.Templating.Core 不用。
- 為什麼 RazorLight 的模板要設成 嵌入資源(EmbeddedResource),Razor.Templating.Core 不用。
- 為什麼用 Razor.Templating.Core 時,多開一個專案會比直接改 Infrastructure 好。
這篇就把這三件事講清楚,並附上兩邊的程式碼對照。