嘿,我得到了一块HTML,我将重复使用它(在用户访问期间的不同时间,而不是一次)。我认为实现这一点的最好方法是创建一个HTML div,隐藏它,在需要的时候获取它的innerHTML并对几个关键字执行replace()。以HTML代码块为例...
<div id='sample'>
<h4>%TITLE%</h4>
<p>Text text %KEYWORD% text</p>
<p>%CONTENT%</p>
<img src="images/%ID%/1.jpg" />
</div>
用动态数据替换这些关键字的最好方法是去...
template = document.getElementById('sample');
template = template.replace(/%TITLE%/, some_var_with_title);
template = template.replace(/%KEYWORD%/, some_var_with_keyword);
template = template.replace(/%CONTENT%/, some_var_with_content);
template = template.replace(/%ID%/, some_var_with_id);
我只是觉得我选择了一种愚蠢的方式。有没有人有任何关于如何以任何方式更快、更聪明或更好地做这件事的建议?在用户访问期间,这些代码将相当频繁地执行,有时甚至每3-4秒执行一次。
提前谢谢。
发布于 2008-12-18 14:30:30
你可以修改这段代码来做你想做的事情:
let user = {
"firstName": "John",
"login": "john_doe",
"password": "test",
};
let template = `Hey {firstName},
You recently requested your password.
login: {login}
password: {password}
If you did not request your password, please disregard this message.
`;
template = template.replace(/{([^{}]+)}/g, function(keyExpr, key) {
return user[key] || "";
});
您可能还想研究一下JavaScriptTemplates
发布于 2008-12-18 19:39:00
您的方法是实现穷人的模板系统的标准方法,所以它很好。
可能值得您花时间查看一些JavaScript模板库,例如JST。
发布于 2008-12-18 14:22:25
您可以通过链接替换来提高效率,而不是进行所有这些临时分配。
即
with(document.getElementById('sample'))
{
innerHTML = innerHTML.replace(a, A).replace(b, B).replace(c, C); //etc
}
https://stackoverflow.com/questions/377961
复制相似问题