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>
<% }) %>
但是,当我运行页面时,我得到一个服务器端的ASP.NET异常,因为它试图编译<% ... %>标签中的文本:
Compiler Error Message: CS1026: ) expected
Line 826:                     <% _.each(projects(), function(project) { %>
我无法找到逃脱这些标签的方法,也无法找到一种方法来配置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>
这将允许您使用标签输出的所有各种版本:插值,评估和转义.
<%是asp.net使用的标签.因此,当解析页面时,它会尝试解释这些,但asp.net不理解语法,因为它需要C#代码,而不是javascript.
您可以将templateSettings中的插值符号更改为{ }和{{ }}
_.templateSettings = {
  interpolate : /\{\{(.+?)\}\}/g
  evaluate : /\{(.+?)\}/g; 
};
var template = _.template("Hello {{ name }}!");
template({name : "Mustache"});
=> "Hello Mustache!"
仅供参考,这些是默认设置:
// 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
};
| 归档时间: | 
 | 
| 查看次数: | 4515 次 | 
| 最近记录: |