# openn2o-template **Repository Path**: mirrors/openn2o-template ## Basic Information - **Project Name**: openn2o-template - **Description**: js 模板引擎, 每秒可达500-1000万次渲染 可在node和浏览器端使用 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: https://www.oschina.net/p/openn2o-template - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-09-30 - **Last Updated**: 2026-01-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 最快的js 模板引擎,每秒可达1200万次渲染 可在node和浏览器端使用。 详情使用node exp_bench.js 示例查看, 开通AOT和JIT编译模式。 ## node批量编译示例 ## ------------- m1.html 模板文件 {# m1 hbox 横向滚动抽屉 #}

{*data.name*}

{%foreach v in data.data do%}
{*v.name*}
{%if (v.keyword.length>50) do%} {*v.keyword.substring(0,50)*} ... {%else%} {*v.keyword*} {%end%}
{*v.author*} | {*v.book_type*} | {*v.status*}
{%end%} m3.html 模板 {# m3有图标也有简介的模块视图 #}

{*data.name*}

{%foreach v in data.data do%}
{*v.name*}
{%if (v.keyword.length>50) do%} {*v.keyword.substring(0,50)*} ... {%else%} {*v.keyword*} {%end%}
{*v.author*} | {*v.book_type*} | {*v.status*}
{%end%} m4.html 模板文件 {# m4是首元素权限其余元素只显示图标 #}

{*data.name*}

{%header = true;%} {%foreach v in data.data do%} {%if (header==true) do%}
{*v.name*}
{%if (v.keyword.length>50) do%} {*v.keyword.substring(0,50)*} ... {%else%} {*v.keyword*} {%end%}
{*v.author*} | {*v.book_type*} | {*v.status*}
{%header = false%}
{%else%}
{*v.name*}
{%end%} {%end%}
------------- //生成一个二进制的模板代码压缩文件 var template = require("./template.js").template; template.info(); var a = template.precompile("./" , "a.out"); template.load("a.out"); 输入文件夹 输出2进制文件,输出2进制文件可通过浏览器示例处理。 ## 浏览器示例 ## ## hello World示例 ## var template = require("./template.js").template; var helloPtr = template.compile("{{name}}, welcome!"); console.log(helloPtr({ name : "agent.zy" })); ## 模板语法 ## ## 1. `{{expression}}` 内容语法 ##
""
""
"{{ddd}}"
## 2. `{*expression*}` 变量语法 ## var template = require("./template.js").template; template.info(); console.log(template.compile('{*data["foo"]*}' , 1)()); var tml5 = "{%\ var a = 10\ %}" var tml6 = "condition {*a*}"; console.log( tml5 + tml6); var a = template.compile(tml5 + tml6 , 2); console.log("result:",a({"k1":2,"k2":"v2"})); ## 3. `{%expression%}` 逻辑语法 ## if 语句 var template = require("./template.js").template; template.info(); var str = ` {% if (data['k1']==1) do %} value eq 1 out {%else%} value neq 1 out {%end%} ` console.log( "tml=" , str ); var a = template.compile(str , 2); console.log("==============="); console.log("result:", a({"k1":2,"k2":"v2"})); for each var template = require("./template.js").template; template.info(); var str = ` {%foreach v in data do%} {*v*} {%EOL%} {%end%} ` var a = template.compile(str , 3); console.log("result:",a({"k1":"v1","k2":"v2"})); for in var template = require("./template.js").template; template.info(); var str = ` {%for d in data do%} key 是{*d*} 并且元素是 {*data[d]*} 换行 {%EOL%} {%end%} ` console.log( str ); var a = template.compile(str , 2); console.log("result:",a({"k1":"frist","k2":"second"})); ipairs 语法 var template = require("./template.js").template; template.info(); var tml8 = "{%\ ipairs i,v in data do\ %}" var tml9 = " {*i*} {*v.k1*} {%EOL%}"; var tml10 = "{%end%}" var a = template.compile(tml8 + tml9 + tml10 , 3); console.log("result:",a([{"k1":"v1"},{"k1":"v2"},{"k1":"v3"} ])); ## 4. `{#expression#}` 注释语法 ## 注释语法 var template = require("./template.js").template; template.info(); var tml8 = "{# \ this is a note !!!\ #} hello {# this is note !!!#}222" var a = template.compile(tml8 , 3); console.log("result:",a({"k1":"v1","k2":"v2"})); ## 5. `{#expression#}` 继承语法 ## 模板继承语法 组合 var template = require("./template.js").template; template.info(); var tml8 = "{(head.html)} TML {# this is note !!!#}222 TML" var a = template.compile(tml8 , 3); console.log("result=",a({"name":"v1","k2":"v2"}));