EJS包括原始部分而不呈现其内容

时间:2017-03-15 21:42:37

标签: javascript ejs

我在node.js侧使用ejs将部分(glsl着色器)包含在script标记内的核心页面中。之后,我计划在客户端检索这些脚本标记的文本内容,并根据客户端变量在客户端使用EJS动态编译它们。

问题是在服务器端<%- include ... %>的初始EJS期间在着色器中挂起自己的语法并尝试编译它们,我想避免这种情况。

那么有没有办法将这些部分包含在一个简单的原始文本块中,而忽略了内部任何可能的EJS语法?

核心.ejs:

<script type="x-shader/x-vertex" id="mandelbrotCalcVertexShader">
    <%- include shaders/mandelbrotCalcVertexShader.glsl %>
</script>
<script type="x-shader/x-fragment" id="mandelbrotCalcFragmentShader">
    <%- include shaders/mandelbrotCalcFragmentShader.glsl %>
</script>

1 个答案:

答案 0 :(得分:0)

所以,毕竟我对ejs源做了一点点破解,迫使ejs只编译那些扩展名为.ejs的文件。其他人按原样通过。
如果有兴趣进行特定修改的人 - 在ejs.js node_modules/ejs/lib function handleCache(options, template)下,您应该找到return func;底部有if (~filename.indexOf(".ejs")) { return func; } else { return function() { return template; }; }

使用以下条件交换此return语句:

$('#model').on('click', openModel());
$('#openDropdown').on('click', openDropdown());
$('#shoppingCart').on('click', shoppingCart());

瞧!

也许我会为这件事作出选择。我很惊讶我们不能本地做这件事。