首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用underscore.js作为模板引擎?

问如何使用underscore.js作为模板引擎?
EN

Stack Overflow用户
提问于 2011-01-24 13:13:54
回答 8查看 234K关注 0票数 268

我正在尝试学习javascript作为服务器端语言和函数式语言的新用法。几天前,我听说了node.js和express框架。然后,我将underscore.js看作是一组实用函数。我看到this question on stackoverflow 了。它说我们可以使用underscore.js作为模板引擎。任何人都知道如何使用underscore.js进行模板的好教程,特别是对于没有高级javascript经验的大块头。谢谢

EN

回答 8

Stack Overflow用户

发布于 2011-08-30 18:21:55

你需要知道的关于下划线模板的一切都是here。只需要记住3件事:

  1. <% %> -执行一些code
  2. <%= %> -在template
  3. <%- %>中打印一些值-打印一些值HTML转义

仅此而已。

简单的例子:

代码语言:javascript
复制
var tpl = _.template("<h1>Some text: <%= foo %></h1>");

然后,将向字符串<h1>Some text: blahblah</h1>呈现tpl({foo: "blahblah"})

票数 482
EN

Stack Overflow用户

发布于 2012-05-01 04:02:17

代码语言:javascript
复制
<!-- Install jQuery and underscore -->

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="http://documentcloud.github.com/underscore/underscore-min.js"></script>

<!-- Create your template -->
<script type="foo/bar" id='usageList'>
<table cellspacing='0' cellpadding='0' border='1' >
    <thead>
      <tr>
        <th>Id</th>
        <th>Name</th>
      </tr>
    </thead>
    <tbody>
      <%
        // repeat items 
        _.each(items,function(item,key,list){
          // create variables
          var f = item.name.split("").shift().toLowerCase();
      %>
        <tr>
          <!-- use variables -->
          <td><%= key %></td>
          <td class="<%= f %>">
            <!-- use %- to inject un-sanitized user input (see 'Demo of XSS hack') -->
            <h3><%- item.name %></h3>
            <p><%- item.interests %></p>
          </td>
        </tr>
      <%
        });
      %>
    </tbody>
  </table>
</script>

<!-- Create your target -->

<div id="target"></div>

<!-- Write some code to fetch the data and apply template -->

<script type="text/javascript">
  var items = [
    {name:"Alexander", interests:"creating large empires"},
    {name:"Edward", interests:"ha.ckers.org <\nBGSOUND SRC=\"javascript:alert('XSS');\">"},
    {name:"..."},
    {name:"Yolando", interests:"working out"},
    {name:"Zachary", interests:"picking flowers for Angela"}
  ];
  var template = $("#usageList").html();
  $("#target").html(_.template(template,{items:items}));
</script>

  • JsFiddle感谢按第一个字母分组的@PHearst!
  • JsFiddle (latest)
  • JsFiddle列表(复杂示例w/图像,函数调用,子模板) fork it!我有一个由blast...
  • JsFiddle below
  • JsFiddle记录的XSS hack的sub-templates

演示,这是一个做@tarun_telang的非标准方法

票数 201
EN

Stack Overflow用户

发布于 2011-08-31 22:35:39

在它最简单的形式中,您可以这样使用它:

代码语言:javascript
复制
var html = _.template('<li><%= name %></li>', { name: 'John Smith' });
//html is now '<li>John Smith</li>'   

如果你打算多次使用一个模板,你会想要编译它,这样它会更快:

代码语言:javascript
复制
var template = _.template('<li><%= name %></li>');

var html = [];
for (var key in names) {
    html += template({ name: names[i] });
}

console.log(html.join('')); //Outputs a string of <li> items

我个人更喜欢Mustache风格的语法。您可以调整模板标记以使用双花括号:

代码语言:javascript
复制
_.templateSettings.interpolate = /\{\{(.+?)\}\}/g;

var template = _.template('<li>{{ name }}</li>');
票数 95
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4778881

复制
相关文章

相似问题

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