用 jade 动态生成 html
dynamically generating html with jade
我正在尝试获取实时更新 jade 的数据流。
有人告诉我应该使用 socket.io 并且我设法连接了它,但我无法在模板中访问它的值。
doctype html
html
head
title= title
script(src='components/jquery/dist/jquery.min.js')
script(type='text/javascript' src='https://cdn.socket.io/socket.io-1.0.6.js')
script(type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/jade/1.11.0/jade.min.js')
script(type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/jade/1.11.0/runtime.min.js')
script.
var socket = io.connect('http://localhost:8898/');
socket.on('news', function (data) {
console.log("jade connected to socket.io")
console.log(data);
var photo = data.hello.data[0].images.original.url;
console.log(photo);
});
body
block content
img(src=photo) // results in empty img tag
img(src={photo}) // results in <img src="[object Object]">
img(src=#{photo}) // results in undefined
控制台输出:
翡翠连接到 socket.io
(index):4 对象 {你好:对象,照片:“http://media1.com/media/26FPMmPhlkKjHFXW/file.jpg”}
(指数):6 http://media1.com/media/26FPMmPhlkKjHFXW/file.jpg
我会很高兴看到jade 拾取图像,意味着我终于可以从后端获取数据了。
我仍然需要遍历数据对象中的数组
在您的设置中,Jade 模板仅呈现一次(服务器端,当处理请求时)。
要执行动态更新,您至少需要两件事:
- 与服务器的某种通信渠道;您为此使用
socket.io
,这是一个不错的选择;
- 将操纵 DOM 以更改页面外观的代码;你还没有这样做。
根据你的代码,你可以试试这个:
script.
var socket = io.connect('http://localhost:8898/');
socket.on('news', function (data) {
var photo = data.hello.data[0].images.original.url;
document.getElementById('photo').src = photo;
});
body
block content
img#photo(src='placeholder.jpg')
我正在尝试获取实时更新 jade 的数据流。 有人告诉我应该使用 socket.io 并且我设法连接了它,但我无法在模板中访问它的值。
doctype html
html
head
title= title
script(src='components/jquery/dist/jquery.min.js')
script(type='text/javascript' src='https://cdn.socket.io/socket.io-1.0.6.js')
script(type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/jade/1.11.0/jade.min.js')
script(type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/jade/1.11.0/runtime.min.js')
script.
var socket = io.connect('http://localhost:8898/');
socket.on('news', function (data) {
console.log("jade connected to socket.io")
console.log(data);
var photo = data.hello.data[0].images.original.url;
console.log(photo);
});
body
block content
img(src=photo) // results in empty img tag
img(src={photo}) // results in <img src="[object Object]">
img(src=#{photo}) // results in undefined
控制台输出: 翡翠连接到 socket.io
(index):4 对象 {你好:对象,照片:“http://media1.com/media/26FPMmPhlkKjHFXW/file.jpg”} (指数):6 http://media1.com/media/26FPMmPhlkKjHFXW/file.jpg
我会很高兴看到jade 拾取图像,意味着我终于可以从后端获取数据了。 我仍然需要遍历数据对象中的数组
在您的设置中,Jade 模板仅呈现一次(服务器端,当处理请求时)。
要执行动态更新,您至少需要两件事:
- 与服务器的某种通信渠道;您为此使用
socket.io
,这是一个不错的选择; - 将操纵 DOM 以更改页面外观的代码;你还没有这样做。
根据你的代码,你可以试试这个:
script.
var socket = io.connect('http://localhost:8898/');
socket.on('news', function (data) {
var photo = data.hello.data[0].images.original.url;
document.getElementById('photo').src = photo;
});
body
block content
img#photo(src='placeholder.jpg')