Mik*_*sen 18 javascript asp.net underscore.js
我一直在比较不同的JavaScript模板引擎,看看哪一个给了我大型数据集的最佳性能.我碰到的是Underscore.js.但是,我无法使任何示例正常工作.我的模板看起来像:
<% _.each(projects(), function(project) { %>
<tr>
<td><%= project.code %></td>
<td><%= project.request %></td>
<td><%= project.stage %></td>
<td><%= project.type %></td>
<td><%= project.launch %></td>
</tr>
<% }) %>
Run Code Online (Sandbox Code Playgroud)
但是,当我运行页面时,我得到一个服务器端的ASP.NET异常,因为它试图编译<% ... %>标签中的文本:
Compiler Error Message: CS1026: ) expected
Line 826: <% _.each(projects(), function(project) { %>
Run Code Online (Sandbox Code Playgroud)
我无法找到逃脱这些标签的方法,也无法找到一种方法来配置Underscore以使用不同的语法.是否存在解决方法,或者Underscore和ASP.NET之间是否完全不兼容?
tko*_*one 27
与JSP相同的问题,所以我们这样做:
_.templateSettings = {interpolate : /\{\{(.+?)\}\}/g, // print value: {{ value_name }}
evaluate : /\{%([\s\S]+?)%\}/g, // excute code: {% code_to_execute %}
escape : /\{%-([\s\S]+?)%\}/g}; // excape HTML: {%- <script> %} prints <script>
Run Code Online (Sandbox Code Playgroud)
这将允许您使用标签输出的所有各种版本:插值,评估和转义.
<%是asp.net使用的标签.因此,当解析页面时,它会尝试解释这些,但asp.net不理解语法,因为它需要C#代码,而不是javascript.
您可以将templateSettings中的插值符号更改为{ }和{{ }}
_.templateSettings = {
interpolate : /\{\{(.+?)\}\}/g
evaluate : /\{(.+?)\}/g;
};
var template = _.template("Hello {{ name }}!");
template({name : "Mustache"});
=> "Hello Mustache!"
Run Code Online (Sandbox Code Playgroud)
仅供参考,这些是默认设置:
// By default, Underscore uses ERB-style template delimiters, change the
// following template settings to use alternative delimiters.
_.templateSettings = {
evaluate : /<%([\s\S]+?)%>/g,
interpolate : /<%=([\s\S]+?)%>/g,
escape : /<%-([\s\S]+?)%>/g
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4515 次 |
| 最近记录: |