Nodejs 求问jade 怎么在script. 里输出一个json
Nodejs 求问jade 怎么在script. 里输出一个json
我用后台传了一个 json过来 t = {a:“b”}
我在jade 要怎么能输出到script. ?
script.
var json = !{t};
这样不行 求方法. 跪求 谢谢各位了.
当然可以!下面是一个关于如何在Jade模板中将JSON对象传递给JavaScript的解答。
标题
Nodejs 求问jade 怎么在script. 里输出一个json
内容
假设你在Node.js后端传递了一个JSON对象 t
到前端,例如:
res.render('your-template', { t: { a: "b" } });
然后在Jade模板中,你需要将这个JSON对象输出到JavaScript的变量中。你提到的方法使用了 !{}
插值语法,但可能没有正确地处理JSON格式。正确的做法是使用 |
符号来确保输出的JSON字符串是有效的。
示例代码
doctype html
html
head
title= "Example Page"
body
script.
var json = !{JSON.stringify(t)};
console.log(json); // 输出: {"a":"b"}
在这个例子中,我们使用了 JSON.stringify(t)
来确保传递的JSON对象被转换成一个有效的JSON字符串。这样做可以避免一些常见的错误,比如未转义的引号或特殊字符。
解释
!{JSON.stringify(t)}
:这会将传递给Jade的JSON对象t
转换为一个有效的JSON字符串。var json = ...;
:这行代码定义了一个名为json
的JavaScript变量,并将其设置为从后端传递过来的JSON对象。console.log(json);
:这行代码用于在浏览器的开发者工具控制台中打印JSON对象,以便你可以验证输出是否正确。
通过这种方式,你可以确保在Jade模板中的JavaScript部分正确地接收并使用后端传递的JSON数据。希望这能帮到你!
呃… 不会写… 先对 t
执行一下 JSON.stringify
试试?
还是应该在服务器端处理完逻辑,客户端Jade这里就直接对模板应用数据。
例如,你把服务器端的JSON对象赋值给变量json
之后,想做什么处理?不能在服务端先处理完吗?
叶总 你太牛X了 爱死你了
要将一个 JSON 对象从后端传递到前端的 Jade 模板,并在 <script>
标签中输出,可以使用以下方法:
示例代码
假设你有一个 JSON 对象 t
在后端,例如:
const t = { a: "b" };
然后,在 Jade 模板中,你可以这样写:
- var t = { a: "b" } // 假设 t 是从后端传递过来的数据
script.
var json = !{JSON.stringify(t)};
解释
-
JSON.stringify():
JSON.stringify()
方法用于将 JavaScript 对象转换为 JSON 字符串。这一步是必要的,因为我们需要确保输出的 JSON 数据格式正确。
-
!{…}:
- 在 Jade 模板中,
!{...}
语法用于输出未经转义的 HTML 内容。这使得我们可以直接插入 JSON 字符串。
- 在 Jade 模板中,
-
script.:
- 这行定义了
<script>
标签内的内容。注意,Jade 使用缩进来表示代码块,所以script.
后面的内容会成为<script>
标签内的内容。
- 这行定义了
完整示例
假设你有一个简单的 Node.js 应用,如下所示:
// server.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
const t = { a: "b" };
res.render('index', { t });
});
app.listen(3000, () => console.log('Server running on port 3000'));
对应的 Jade 模板 views/index.jade
:
doctype html
html
head
title= 'My Page'
body
h1 Hello World!
script.
var json = !{JSON.stringify(t)};
启动服务器并访问 http://localhost:3000
,你会看到页面中的 JavaScript 变量 json
包含了 JSON 对象 { "a": "b" }
。
这种方法可以确保 JSON 数据正确地被插入到 <script>
标签中,并且不会引起任何安全问题。