17. 视图引擎
#
17.1 关于视图引擎视图引擎负责根据视图模板创建 HTML。视图通常是 HTML 和编程语言的某种混合。支持变量定义、方法调用及逻辑编写。
在 Furion
框架中,底层集成了微软提供的 Razor
视图引擎组件并提供更加灵活方便的语法糖。
#
17.2 视图引擎作用- 支持
ASP.NET Core
完整的Razor
语法 - 根据不同的数据编译模板产生不同的输出
- 实现强大的插件化机制
- 实现全站页面静态化
- 可以用作邮件模板、短信模板、优惠券信息模板等
#
17.3 基础使用#
17.3.1 注册服务使用之前需在 Startup.cs
中注册 视图引擎服务
:
#
17.3.2 使用方式- 构造函数注入
IViewEngine
- 字符串方式
#
17.3.3 弱类型模板结果:
支持异步 RunCompileAsync
#
17.3.4 强类型模板结果:
支持异步 RunCompileAsync
#
17.3.5 高性能模板缓存 🥇由于模板编译需要消耗大量的性能,所以建议使用带 FromCached
结尾的 RunCompileFromCached
替代。调用该方法后会自动将模板编译成 .dll
以便下次使用。减少第二次之后使用模板的性能损耗。
如,强类型模板:
结果:
调用 RunCompileFromCached
方法之后将会使用 MD5
加密模板并生成 MD5
字符串的 .dll
存放在网站根目录下的 templates
目录中。只要模板内容不变,数据发生改变也不会重新编译模板。这样大大的提高了首次之后的性能。
如,传入新的数据:
结果:
模板不再重新编译,只是重新替换数据。
#
17.4 高级用法高级用法支持将特定程序集、特定命名空间、特定类型引入到模板中使用。
#
17.4.1 添加程序集比如这里添加 System.IO
程序集:
结果:
另外,Furion
提供多种方式加载程序集:
#
17.4.2 添加命名空间结果:
也支持加入多个 using
:
#
17.4.3 定义模板方法结果:
#
17.4.4 调用类方法定义 CustomModel
类并继承 ViewEngineModel
基类
在模板中调用 Decorator(value)
方法:
结果:
IViewEngine
接口#
17.5 IViewEngine
提供了简单方便的 RunCompile
方法,也提供了最原始化的 Compile
和 Run
方法。
通过原始的 Compile
和 Run
方法可以实现很多复杂的逻辑和自定义指令集。
#
17.6 反馈与建议与我们交流
给 Furion 提 Issue。