CNode

在express中,如何做到每秒re-render一次jade模板?

问答
CChopperLee2011发布于12 年前最后回复12 年前12 回复5533 浏览0 收藏

app.js代码片段如下:

>  app.get('/', function(req, res) {
>		var mytime = 0 + 1;
> 		res.render('home', {time : mytime});
> }

需要做到每秒更新一次time在页面上,我的想法是用setInterval:

>  app.get('/', function(req, res) {
>		function add() {
>			var mytime = 0 + 1;
> 			res.render('home', {time : mytime});
>		}
>		setInterval(add,1000);
> }

但是发现不会重新render view,有谁知道如何动态的render view吗?

查看回复

回复 (12)

B
bnuhero#1·12 年前

这个更适合在客户端JavaScript代码中实现。

A
alsotang#2·12 年前

直接在浏览器上面更新时间啊。。。。。。

R
russj#3·12 年前

前端 data binding,自动更新

F
fish#4·12 年前

楼主的瓜太辣~

X
xiaojue#5·12 年前

代码写的竟然让我 无 言 以 对。。

C
ChopperLee2011#6·12 年前
引用 bnuhero这个更适合在客户端JavaScript代码中实现。

@bnuhero 大家也只推荐前端做这个功能,那我也只能作罢了

C
ChopperLee2011#7·12 年前
引用 xiaojue代码写的竟然让我 无 言 以 对。。

@xiaojue 虽然没有记时,但是重点是要重刷view啊,好吧我没太注意

T
think2011#8·12 年前

可以做到,可以让用户摁 Alt + R,当频率达到 1000ms 的时候就实现了楼主的需求了。

或者还有一个办法,在前端写 setInterval(add,1000);, 但是这个 add 得写成 ajax 请求,请求完了之后通过前端的方式渲染出来。

X
xiaojue#9·12 年前
引用 ChopperLee2011@xiaojue 虽然没有记时,但是重点是要重刷view啊,好吧我没太注意

@ChopperLee2011 没有,我就是无言以对么。。

我正经回答一下,你这个代码的需求,用@think2011的第二个办法,可以实现,就是在view页面中使用前端js,ajax请求一个接口,拿你的server time,再更新dom元素。

html输出后是不能被修改的。。。除非你刷新页面。。

刷新页面的方法很多种,比如这个

再比如setInterval 然后localtion.reload() 等等。。

X
xiaojue#10·12 年前

又或者你把更新time这里做成一个iframe,其实就是页面不刷新,更新局部html的问题么,对吧。。

X
xiaojue#11·12 年前

如果你要在controller里不断的让view主动更新数据,又不想轮询,可以考虑长连接comet技术或者socket.io来实现。

C
ChopperLee2011#12·12 年前
引用 xiaojue如果你要在controller里不断的让view主动更新数据,又不想轮询,可以考虑长连接comet技术或者socket.io来实现。

@xiaojue 确实前端刷新很方便,必须后台做的话用socket.io去发事件给前端也可以做,多谢你的解答。

参与回复
登录后即可参与回复。登录