EJS不在客户端呈现ejs代码

时间:2017-10-21 23:43:09

标签: javascript node.js ejs

我尝试将我从home.js发送到home.ejs的EJS代码作为字符串呈现,但它不起作用。我现在正在尝试,但似乎没有任何效果。我的代码是:

home.js

var templates = {};
templates.onScroll = fs.readFileSync('views/partials/onScrollAppendPost.ejs', 'utf-8');
res.render("users/home", {templates: templates});`

home.ejs

 var template = new EJS({text: <%- JSON.stringify(templates.onScroll) %>}).update('#mainContainer', {postArr: postArr});

修改

我想要做的是想要检测用户何时到达页面底部。使用此代码:

$(window).scroll(function () {
        if ($(window).scrollTop() == $(document).height() - $(window).height()) {
//get post data and append post
}});

当用户到达页面底部时,我想将ejs代码附加到页面。基本上我想在ejs和js之间进行通信。

1 个答案:

答案 0 :(得分:0)

根据http://ejs.co的示例,您首先需要在页面中包含浏览器版本的ejs:

<script src="ejs.js"></script>

然后你可以像这样使用EJS客户端:

var html = ejs.render('your template here', {postArr: postArr});

$('#mainContainer').html(html);

这是我假设postArr设置得恰当,可能是AJAX请求的结果。

当你使用EJS生成EJS时,所有这些都变得难以理解,但home.ejs中的相关代码将是这样的:

var html = ejs.render(<%- JSON.stringify(templates.onScroll) %>, {postArr: postArr});

$('#mainContainer').html(html);

这假设onScroll模板没有include任何其他模板。您尚未指定home.ejs是否用于生成HTML或JavaScript,因此不清楚其他可能适用的其他转义注意事项,但这可能不会成为问题。