Pok*_*wOw 11 javascript node.js express handlebars.js
我正在为快速js框架生成一个把手视图,我需要从一个单独的JavaScript文件中访问我传递给视图的变量.
例如:
var foo = {{user.name}}
Run Code Online (Sandbox Code Playgroud)
有人有个主意吗?帮手?
谢谢你提前!
PokeRwOw
Jon*_*ski 14
的值user.name需要尽可能有效的JavaScript表达式输出,如果你想将其包括在内的<script>,将被重新评估它的代码.
目前,例如,如果user.name是"john.doe",结果脚本将是:
var foo = john.doe; // `john` is treated as an object with a `doe` property
Run Code Online (Sandbox Code Playgroud)
该user.name至少需要加引号,所以它理解为一个字符串值/文本.
var foo = "{{user.name}}";
Run Code Online (Sandbox Code Playgroud)
// result
var foo = "john.doe";
Run Code Online (Sandbox Code Playgroud)
您还可以利用JSON和JavaScript在语法上的相似性,输出JavaScript可以理解为表达式的JSON,并且已经包含引号.
Handlebars.registerHelper('json', function (content) {
return JSON.stringify(content);
});
Run Code Online (Sandbox Code Playgroud)
var foo = {{{json user.name}}};
Run Code Online (Sandbox Code Playgroud)
// result
var foo = "john.doe";
Run Code Online (Sandbox Code Playgroud)
请注意{{{...}}}上一个示例中的三元组禁用HTML编码,因此您最终不会:
var foo = "john.doe"
Run Code Online (Sandbox Code Playgroud)
Drk*_*ima 13
Node可以将编码的JSON传递给把手视图,如下所示:
result.render('index', {
encodedJson : encodeURIComponent(JSON.stringify(jsonData))
});
Run Code Online (Sandbox Code Playgroud)
把手视图可以像这样解码和解析json:
<script>
var decodedJson = decodeURIComponent("{{{encodedJson}}}");
var jsonObj = JSON.parse(decodedJson);
</script>
Run Code Online (Sandbox Code Playgroud)
因为任何传递给把手视图的内容基本上都会直接注入HTML,所以你应该总是传递编码的json并让视图对它进行解码.
我尝试了这个帖子中的其他建议.但他们将未编码的JSON注入到车把视图中,这总是让我解析错误.我不知道人们是如何工作的,因为看起来Handlebars会将变量解析为纯文本.
我还没有读过Handlebars解析器是如何工作的 - 但在我看来,唯一安全的选择是使用编码的JSON,就像我在我的例子中建议的那样.
| 归档时间: |
|
| 查看次数: |
11059 次 |
| 最近记录: |