繁体   English   中英

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

[英]EJS Include raw partial without rendering its contents

我在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>

因此,毕竟我对ejs源进行了一些修改,强制ejs仅编译那些扩展名为.ejs的文件。 其他人照原样通过。
如果有人对特定的编辑感兴趣-在ejs.js node_modules/ejs/lib下的node_modules/ejs/lib您应该找到具有return func; function handleCache(options, template) return func; 在底部。

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

if (~filename.indexOf(".ejs")) {
    return func;
} else {
    return function() {
      return template;
    };
}

瞧!

也许我会为此选一个PR。 对于我们无法在本地执行此操作,我感到很惊讶。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM