Javascript 我如何将“吞咽”模板代码与下划线模板代码分开?
我正在使用gulp构建我的项目,我的项目的一部分使用下划线模板。我在构建过程中使用的一个插件是GulpTemplate,它使用Lodash模板 当我使用gulp时,是否可以指示应该呈现哪些代码,以及应该忽略哪些代码进行模板化 例如,我有一个文件包含:Javascript 我如何将“吞咽”模板代码与下划线模板代码分开?,javascript,templates,underscore.js,gulp,lodash,Javascript,Templates,Underscore.js,Gulp,Lodash,我正在使用gulp构建我的项目,我的项目的一部分使用下划线模板。我在构建过程中使用的一个插件是GulpTemplate,它使用Lodash模板 当我使用gulp时,是否可以指示应该呈现哪些代码,以及应该忽略哪些代码进行模板化 例如,我有一个文件包含: <script src="<%= image_server_url %>/scripts/iep-alert/alert-content.js"></script> 现在,当我调用调用gulp模板的gulp任务
<script src="<%= image_server_url %>/scripts/iep-alert/alert-content.js"></script>
现在,当我调用调用gulp模板的gulp任务时,我得到了ReferenceError:alert未定义
,因为gulp模板的上下文不包括alert
——只有image\u server\u url
是gulp模板上下文的一部分
编辑:我编辑了我的代码以匹配{{image\u server\u url}
,我将调用更改为gulp template
,如下所示:
template({
image_server_url: config.dev.image_server_url
}, {
interpolate: /{{([\s\S]+?)}}/g
})
通过这些更改,当我运行我的构建
任务时,我认为gulp template
仍在尝试在
块内运行代码,因为我遇到以下错误:
窗口未定义
它试图在第一个
如果有人能解决这个问题,那就太好了。我想现在我要研究另一种解决方案。我找不到任何明智的方法来做到这一点,因为你想两次解析同一个模板,只需要在gulp中插入一些字符串,在浏览器中插入其他字符串 建议使用
。.templateSettings
,以便在gulp处理中,可以使用其他模板格式
例如,在吞咽中,您设置:
.\uu.templateSettings.interpolate=/{{([\s\s]+?)}}/g代码>
在模板中:
因此,当模板打算由gulp处理时,使用{{}
插值语法,当它打算在浏览器端处理时,使用默认(erb)
语法。我的代码现在看起来像这样,到目前为止运行良好
<script src="<!-- @echo IMAGE_SERVER_URL -->/scripts/iep-alert/alert.js"></script>
在哪里设置插值
?这在我的gulpfile
中有什么地方吗?因为我只使用gulp模板插件来插入字符串,有没有比使用Lodash这样的完整模板系统更好的方法?
<%
if (window.location.href.indexOf('admin') != -1) {
%>
<script src="<!-- @echo IMAGE_SERVER_URL -->/scripts/iep-alert/alert.js"></script>