调试underscore.js模板很难没有行号

栏目: JavaScript · 发布时间: 7年前

内容简介:我正在将一个相当大的php模板(其中具有基本逻辑的页面)转换为一个underscore.js模板.问题是我在它里面有错误,当被抛出错误时,它的“编译”版本没有给出有用的信息或行号.有没有办法得到更好的模板调试在underscore.js(如行号)?如果没有,有没有办法让模板终止一点(这样我可以缩小错误的位置).

我正在将一个相当大的 php 模板(其中具有基本逻辑的页面)转换为一个underscore.js模板.

问题是我在它里面有错误,当被抛出错误时,它的“编译”版本没有给出有用的信息或行号.

有没有办法得到更好的模板调试在underscore.js(如行号)?如果没有,有没有办法让模板终止一点(这样我可以缩小错误的位置).

Errata截至2012年4月:下划线1.3.2(2012年4月9日)对_.template()引入了更改,检查 changelog

和源,因为这里描述的并发症可能已经显示出来.

是和否 – 模板首先被翻译成一个字符串(难以阅读)的Javascript代码,并被执行为一个代码块,所以如果你正在寻找一个语法错误,你必须从模板中删除违规代码,试图执行.

但如果是别的东西,嵌入一个<%return __p.join(''); %GT;将中断执行并返回模板的结果,直到此为止(读取源码以了解为什么,但基本上将模板块的结果逐个放入名为__p的数组中). 您还可以在模板评估时进行日志记录(即在模板中放置<%console.log(<..>)%>以查看诊断.有关更高级的故障排除,您还可以将<%调试器;%>在你的模板代码中放入你最喜欢的调试器,虽然你会看到的代码将不友好地阅读,你可以访问评估模板的范围.

如果我正在做广泛的工作,需要更多的调试工具,那么我可能会拷贝一下undercore.js脚本,并将一些诊断支持代码添加到_.template()函数本身.例如:

_.template = function(str, data) {
  var c  = _.templateSettings;
  var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' +
    'with(obj||{}){__p.push(\'' +
    str.replace(/\\/g, '\\\\')
       .replace(/'/g, "\\'")
       .replace(c.interpolate, function(match, code) {
         return "'," + code.replace(/\\'/g, "'") + ",'";
       })
       .replace(c.evaluate || null, function(match, code) {
         return "');" + code.replace(/\\'/g, "'")
                            .replace(/[\r\n\t]/g, ' ') + "__p.push('";
       })
       .replace(/\r/g, '\\r')
       .replace(/\n/g, '\\n')
       .replace(/\t/g, '\\t')
       + "');}return __p.join('');";
  console.log(tmpl.replace(/;/g, '\n')); // <- dump compiled code to console before evaluating
  var func = new Function('obj', tmpl);
  return data ? func(data) : func;
};

代码日志版权声明:

翻译自:http://stackoverflow.com/questions/6104029/debugging-underscore-js-templates-is-difficult-without-line-numbers


以上所述就是小编给大家介绍的《调试underscore.js模板很难没有行号》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web开发敏捷之道

Web开发敏捷之道

Sam Ruby、Dave Thomas、David Heineme Hansson / 慕尼黑Isar工作组、骆古道 / 机械工业出版社 / 2012-3-15 / 59.00元

本书第1版曾荣获Jolt大奖“最佳技术图书”奖。在前3版的内容架构基础上,第4版增加了关于Rails中新特性和最佳实践的内容。本书从逐步创建一个真正的应用程序开始,然后介绍Rails的内置功能。全书分为3部分,第一部分介绍Rails的安装、应用程序验证、Rails框架的体系结构,以及Ruby语言的知识;第二部分用迭代方式创建应用程序,然后依据敏捷开发模式搭建测试案例,最终用Capistrano完成......一起来看看 《Web开发敏捷之道》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试