首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >高效的Javascript字符串替换

高效的Javascript字符串替换
EN

Stack Overflow用户
提问于 2008-12-18 14:16:27
回答 8查看 49.8K关注 0票数 37

嘿,我得到了一块HTML,我将重复使用它(在用户访问期间的不同时间,而不是一次)。我认为实现这一点的最好方法是创建一个HTML div,隐藏它,在需要的时候获取它的innerHTML并对几个关键字执行replace()。以HTML代码块为例...

代码语言:javascript
复制
<div id='sample'>
  <h4>%TITLE%</h4>
  <p>Text text %KEYWORD% text</p>
  <p>%CONTENT%</p>
  <img src="images/%ID%/1.jpg" />
</div>

用动态数据替换这些关键字的最好方法是去...

代码语言:javascript
复制
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秒执行一次。

提前谢谢。

EN

回答 8

Stack Overflow用户

发布于 2008-12-18 14:30:30

你可以修改这段代码来做你想做的事情:

代码语言:javascript
复制
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

票数 30
EN

Stack Overflow用户

发布于 2008-12-18 19:39:00

您的方法是实现穷人的模板系统的标准方法,所以它很好。

可能值得您花时间查看一些JavaScript模板库,例如JST

票数 2
EN

Stack Overflow用户

发布于 2008-12-18 14:22:25

您可以通过链接替换来提高效率,而不是进行所有这些临时分配。

代码语言:javascript
复制
with(document.getElementById('sample'))
{
  innerHTML = innerHTML.replace(a, A).replace(b, B).replace(c, C); //etc
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/377961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档