gpt4 book ai didi

Javascript 模板渲染器

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:32 25 4
gpt4 key购买 nike

我正在研究可用于 javascript 的不同模板解析器,并且我正在尝试创建自己的东西以在服务器(node.js)和客户端上使用。我想在我的模板中编写没有限制的 JavaScript,如下所示,并且我不喜欢学习任何新语法。 (不用担心标签,我只是编造的,它们可以是任何东西)

<ul>
<js>for (var i = 0, l = this.somearray.length; i < l; i++) {</js>
<li>
<span><js>print(this.somearray[i].key)</js></span>
<span><js>print(this.somearray[i].value.toLowerCase())</js></span>
</li>
<js>}</js>
</ul>

我正在考虑使用下面的函数解析这个模板。

function parse() {

var split = template.split(/<js>(.*?)<\/js>/g),
i, l;

for (i = 0, l = split.length; i < l; i += 2) {

var before = split[i],
content = split[i + 1] || null;

parsed += before ? 'print(' + JSON.stringify(before) + ');\n' : '';
parsed += content ? (content + '\n') : '';
}
}

这会给我这样的结果

print("<ul>\n");
for (var i = 0, l = this.somearray.length; i < l; i++) {
print("\n <li>\n <span>");
print(this.somearray[i].key);
print("</span>\n <span>");
print(this.somearray[i].value.toLowerCase());
print("</span>\n </li>\n");
}
print("\n</ul>");

打印函数看起来像这样

function print(s) {
output += s;
}

如果我然后使用 eval 渲染解析后的代码,输出将如下所示...

<ul>
<li>
<span>key1</span>
<span>value1</span>
</li>
<li>
<span>key2</span>
<span>value2</span>
</li>
<li>
<span>key3</span>
<span>value3</span>
</li>
</ul>

我在这里错过了什么吗?只需几行代码,速度很快,它可以缓存解析后的 JavaScript,以便下次渲染速度更快。唯一的事情是我使用的 eval 被认为是邪恶的,但只要我不解析任何用户输入,我认为它应该没问题......对上面的代码有什么想法吗?

最佳答案

我认为 John Resig 关于 JavaScript 微模板的文章会对您有所帮助,因为您想编写自己的东西:http://ejohn.org/blog/javascript-micro-templating/

关于Javascript 模板渲染器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8415810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com