jntemplate v1.3发布

作者: 来源:本站原创 发布时间:2015-10-16 查看数:7004

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(), "你的模板内容");

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