检测handlebars.js解析/语法错误。 (客户端模板)

时间:2016-02-05 23:14:38

标签: javascript handlebars.js client-side

我正在创建一个客户端车把的模板编辑器。基本上,你得到一半的屏幕填充文本编辑器,另一半用预览窗口。文本编辑器中的内容在handlebars.js解析后,会在预览窗口中登录,并在此过程中应用一些变量。

每当我使用handlebar's expression发出任何语法错误(比如键入{name}}而不是{{name}})时,DevTools中会出现一条控制台消息。这些消息可能如下所示:

Parse error on line 4:
...m"><p>Hola, {{name}</p></div></body>
---------------------^
Expecting 'CLOSE_RAW_BLOCK', 'CLOSE', 'CLOSE_UNESCAPED', 'OPEN_SEXPR', 'CLOSE_SEXPR', 'ID', 'OPEN_BLOCK_PARAMS', 'STRING', 'NUMBER', 'BOOLEAN', 'UNDEFINED', 'NULL', 'DATA', 'SEP', got 'INVALID'

我希望能够检测此错误是否触发,并显示错误消息以警告用户。我已经尝试过不成功地重写javascript Error()类,但它会抛出所有类型的错误和把手崩溃。有没有办法获取这些错误?

1 个答案:

答案 0 :(得分:1)

您可以捕获错误然后显示它。像这样:

&#13;
&#13;
var template = Handlebars.compile('<p>Hola, {{name}</p>');
try {
  template();
} catch (error) {
  var encodedError = error.message.replace(/[\u00A0-\u9999<>\&]/gim, function(i) {
    return '&#' + i.charCodeAt(0) + ';';
  });
  document.write('<pre>' + encodedError + '</pre>');
}
&#13;
<script src="http://builds.handlebarsjs.com.s3.amazonaws.com/handlebars-v4.0.5.js"></script>
&#13;
&#13;
&#13;

(顺便说一下,here我借用了那个html实体编码。)