更新JNTemplate后,无法生成html
起因
博客项目是14年创建的,写的很简单,只是满足自己的使用,因为当时买的阿里云单核1G内存的ECS,当时考虑的资源毕竟有限,文章是生成静态页,最初是使用NVelocity生成静态页.后面改成国产组件JNTemplate,打开项目,发现JNTemplate组件有更新了,便进行了更新.然后单文件发布到ECS,在生成静态页的时候,无法生成.升级JNTemplate
JNTemplate是国产开源组件:
JNTemplate从1.4.2升级到2.2.5

错误信息:
看到日志错误中,有匿名类型,加上failed. on [line:6,col:13],还有Render,大体知道问题在哪里了,应该是出现无法解析匿名类型.新建一个项目进行测试:
using JinianNet.JNTemplate;
//因为博客项目,在使用匿名类型后,使用Render解析html模板
var article = new
{
Name = ".Net 7源码编译",
CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
};
var template = Engine.CreateTemplate("<p>你好,$art.Name 创建时间:$art.CreateTime</p>");
template.Set("art", article);
var result = template.Render();
Console.WriteLine(result);
改为具体类型
using JinianNet.JNTemplate;
//不在使用匿名类型
var article = new Article
{
Name = ".Net 7源码编译",
CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
};
var template = Engine.CreateTemplate("<p>你好,$art.Name 创建时间:$art.CreateTime</p>");
template.Set("art", article);
var result = template.Render();
Console.WriteLine(result);
public class Article
{
public string Name { get; set; }
public string CreateTime { get; set; }
}
后面在查看JNTemplate更新日志,在2.0.0,JNTemplate组件作者,为了性能,将解释性改为编译型模板引擎.
秋风
2022-01-02