如何在EJS客户端使用partials?我正在使用express,我想在服务器端和客户端之间共享相同的模板。我已将相同的模板编译为客户端代码,但它无法识别部分函数。
ReferenceError: ejs:38
36| <body>
37|
>> 38| <%- partial('header') %>
39| <div class="container">
40| <%- body %>
41| </div> <!-- /container -->
partial is not defined
答案 0 :(得分:1)
我认为包括(部分年前)不在客户端工作。您仍然可以尝试编写支持它们的实现,但这将非常困难。在我的情况下,我只想在客户端禁用它们。添加此行:
source = source.replace(/<% include.+%>/g, "");
诀窍。它位于:
EJS.Compiler = function(source, left) {
this.pre_cmd = ['var ___ViewO = [];'];
this.post_cmd = new Array();
this.source = ' ';
if (source != null)
{
if (typeof source == 'string')
{
source = source.replace(/\r\n/g, "\n");
source = source.replace(/\r/g, "\n");
// Just ignore the includes
source = source.replace(/<% include.+%>/g, "");
this.source = source;
} else if (source.innerHTML){
this.source = source.innerHTML;
}
当然,它远离最佳解决方案,但它使我的模板在服务器端和客户端都工作。在我的情况下,我不需要在客户端执行此包含。