在express应用程序中使用下划线

Using underscorejs inside an express application?

本文关键字:下划线 express 应用程序      更新时间:2023-09-26

我不喜欢翡翠,我花了很多时间弄清楚如何使用HTML,而不是这是我想到的。

首先安装ejs,然后为HTML实现下面的代码。
app.engine('html', require('ejs').renderFile); 
app.get('/', function(req, res) {
  res.render(__dirname + '/views/page.html', {
    string: 'random_value',
    other: 'value'
  });
});

一切都很好,直到我需要从服务器拉出一个集合,并在我的page.html

上呈现一些下划线语法。

之类的
<script type="text/template" id="messages">
    <%= message %>
</script>

我遇到一个stackoverflow帖子提到除了使用模板引擎之外还需要一些东西,但我没有太注意它,也找不到那块信息。

编辑:我改变了一些代码,它仍然不工作。name is not defined at eval"名称"是我试图从模型中获得的属性。

在我的backbone.js代码中,我有这样的代码:

window.App.Views.Message = Backbone.View.extend({
    template: _.template($('#messages').html()),
    render: function() {
        console.log(this.model.toJSON());
        this.$el.append(this.template(this.model.toJSON()));
        return this;
    }
});

在我的服务器代码中,我有这个

var engines = require('consolidate');
app.engine('html', engines.underscore);
app.get('/', function(req, res) {
  res.render(__dirname + '/views/page.html', {
    string: 'random_value',
    other: 'value'
  });
});

在page。html里面有

<script type="text/template" id="messages">
    <% name %>
</script>

运行节点服务器,我得到name is not defined at eval

编辑:现在尝试使用mustache.js,让我们看看它是如何运行的

好了,我让它与underscore.js一起工作了,下面是我所做的。

在我的backbone.js代码中,我修改了如何获得下划线模板而不是

template: _.template($('#messages').html()),

我用它作为变量

var tpl = _.template($('#messages').html(), {data: data});

并将我的数据传递给它var data = this.model.toJSON();

window.App.Views.Message = Backbone.View.extend({
    render: function() {
        var data = this.model.toJSON();
        var tpl = _.template($('#messages').html(), {data: data});       
        this.$el.append(tpl);
        return this;
    }
});
然后在我的html 中
<script type="text/template" id="messages">
    <%= data.name %>
</script>