2010-04-19 45 views
5

请你解释一下,JavaScript中的模板引擎如何工作?谢谢。JavaScript中的模板引擎如何工作?

JSON

{ "color" : "red"} 

模板

<strong><%=color%></strong> 

结果

<strong>Red</strong> 
+0

你的问题不是很清楚。你能提供更多的上下文吗? – 2010-04-19 18:17:25

+2

我认为一般来说,制作模板引擎的方法是选择合适的算法,并使用最佳实践技术来实现它们以实现期望的结果。 – Pointy 2010-04-19 18:19:27

回答

2

它们可以通过执行有所不同,但一个你在谈论看起来像它的工作原理通过执行以下操作:

  1. 解析寻找关键的页面中<%= %>标签

  2. 匹配的JSON的关键键/值对

  3. 用值替换标签/键。

8

作为一个起点,我会建议你给看看到String.prototype.replace方法和专门使用它的回调函数:

function replaceTokens(str, replacement) { 
    return str.replace(/<\%=([^%>]+)\%>/g, function (str, match) { 
    return replacement[match]; 
    }); 
} 

var input = "<strong><%=color%></strong>"; 
replaceTokens(input, { "color" : "Red"}); 
// returns <strong>Red</strong> 

replaceTokens("<%=var1%> <%=var2%>", { "var1" : "Hello", "var2": "world!"}); 
// returns "Hello world!" 

给看看这些文章:

+0

John Resing是最好的变种 – zloctb 2015-11-28 03:44:00

2

这不是从其他模板解决方案非常不同的(在概念层面)。

{ "color" : "red"} 

指定color属性与价值red

<strong><%=color%></strong> 

意思是“只要我有<%=color%>使用的color价值。基于绿洲省你拥有的模板引擎可能走DOM,并发现有匹配<%=somestring%>该值的节点,然后,它会检查是否还有就是somestring值相匹配的属性,如果有一个,它在JSON(在这种情况下是red)中定义的值替换的<%=somestring%>

这次终于给你:。

<strong>Red</strong>