极念网欢迎您!
jntemplate v1.3发布
作者:来源:本站原创发布时间:2015/10/16 10:38:04查看数:6599

jntemplate 是一款.NET/MONO平台的开源模板引擎,本次v1.3主要更新内容有:

- 1.增加统一的引擎配置入口

- 2.支持标签注释

- 3.支持自定义标签前后缀

- 4.增加标签空白字符处理开关

- 5.增加大小写配置开关

原1.2版本,部分内容不兼容,如果升级版本,请按以下说明修改:

- 1.从指定文件加载模板:Template.FromFile(String, Encoding)方法已删除! 替代方法: Engine.LoadTemplate(String,TemplateContext)

- 2.全局配置入口:JinianNet.JNTemplate.BuildManager 类已删除! 替代方法:Engine.Configure() +2 重载

- 3.模板查找目录:Resources.Paths/TemplateContext.Paths 属性已删除!替代属性:Engine.Runtime.ResourceDirectories

- 4.原TemplateContext.Config 属性已删除(该功能仅见于dev分支,未正式发布)

jntemplate开源主页

Github:https://github.com/jiniannet/jntemplate

开源中国:http://git.oschina.net/jiniannet/jntemplate

 

配置示例:

EngineConfig conf = new EngineConfig(); //conf.CachingProvider = null; 暂未实现 //是否忽略大小写 true为忽略,默认配置是true conf.IgnoreCase = true; //资源路径 请填绝对路径 //在web配置中,可以使用HttpRuntime.AppDomainAppPath + "template" conf.ResourceDirectories = new string[] { //win系统路径 @"c:\wwwroot\template", @"c:\wwwroot\theme", @"c:\wwwroot\templets", @"c:\wwwroot\views", //liunx路径 "/var/wwwroot/template", "/usr/wwwroot/theme", }; //是否处理标签前后空格 conf.StripWhiteSpace = true; //标签简写标记,列如$User.Name中的$符号,建议不要更换 conf.TagFlag = '$'; //标签分析器,建议保持为null,以使用默认的分析器,如果此项配置不正确,会导致模板引擎无法工作(无法解析出正确的标签)! //自定义标签需要配置此项,建议使用默认配置,再将自定义的解析器插入正确的位置即可。 conf.TagParsers = null; //完整标签前缀,如果喜欢razor语法风格,可以改成@{,以实现类似的写法 @{ UserName } conf.TagPrefix = "${"; //完整标签后缀 conf.TagSuffix = "}"; //当模板解析遇到错误时,是否抛出异常,默认配置为true conf.ThrowExceptions = true; //如果不对引擎做任何配置,将使用默认配置,读取默认配置可以使用如下代码 //conf = EngineConfig.CreateDefault(); //配置引擎 Engine.Configure(conf);

如果需要进行全局数据配置,可以使用如下方法

var ctx = new TemplateContext(); ctx.TempData["SiteTitle"] = "网站名称";//定义全局站点名称 ctx.TempData["now"] = new FuncHandler(args => DateTime.Now);//定义一个获取当前时间的方法 now() //..略 Engine.Configure(conf, ctx);

创建template对象

//从指定内容创建模板 var template = Engine.CreateTemplate("你的模板内容"); //从指定文件创建模板 var template2 = Engine.LoadTemplate("default.html"); //或者使用指定的TemplateContex与模板内容创建模板 var template3 = new Template(Engine.CreateContext(), "你的模板内容");

其它问题,可以到社区提问或者群内交流!