我在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>
答案 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());
瞧!
也许我会为这件事作出选择。我很惊讶我们不能本地做这件事。