express中render到jade里的数据,能否在js中直接使用?
发布于 5个月前 作者 chenkaiC4 561 次浏览 来自 问答

我想把数据render到jade里,正常的使用没有问题。 但是,我现在有一个这样的需求,我想在JS中直接使用render上来的数据,例如下面带埋render了hotels数据到对应的jade中, 我在对应的JS文件中,想直接输出hotels,console.log(hotels)。但是我始终没有找到方法~欢迎大家提供方法~谢谢~

res.render('plans/edit', {
    hotels : hotels,
            })
12 回复

顶,没人回复~

render时解析jade生成html这一过程是在服务端执行的 ,js是在客户端执行的,想办法把你提供的数据传递给页面上的js就行了

用res.json(),直接跳过jade提供数据接口

@ravenwang 谢谢你的回复~ 不过我不想把某些数据放到html里

@pockry 谢谢你的回复~但是这样的话,我有一些想要发送给jade的数据就没法传递过去了

@chenkaiC4 用两个route啊,jade渲染基本页面,然后前端js用getJSON读取数据接口,虽然多了一个HTTP请求,但实现了页面的分步加载也挺好的。

这个地方有个转换过程,首先 jade 被render之后,输出的是一个html(通常是html页面, 不排除输出其他变态玩意)。 然后html页面被浏览器解析,js代码被执行起来。

所以首先你要关心的是, 怎么让jade模板渲染之后得到一个静态页面,这个静态页面中,有js运行所需要的数据对象 然后再关心这个静态页面,怎么正确的运行。 最后附上提示代码:

res.render('plans/edit', {
    hotels : JSON.stringify(hotels),
});

参考代码: res.render('plans/edit’, { hotels : hotels, })

plans/edit.jade script. window.hotels = !{JSON.stringify(hotels)};

@pockry 这个想法挺不错的~真是谢谢了~下面同学给的回答也很好~推荐一看~

@fish 谢谢你^_^,不过我的意思是js处理的数据对象不在常规的静态页面了,可以看你楼下的建议,正好是我想要的

@vicanso 非常感谢!我要的就是这个效果~

回到顶部