更新服务器端呈现客户端

时间:2011-12-10 21:43:34

标签: templates node.js express pug

我有一个服务器端模板引擎Jade,我用它来渲染一个布局。当客户端第一次收到布局时,布局的内容中只会有一些小的后续更改,而不是布局本身。

是否有办法通过仅更改需要更新的内容来“重新渲染”客户端,同时使用Jade的强大功能。

3 个答案:

答案 0 :(得分:2)

你可以通过socket.io来完成,我目前正在开发node.js中的程序来完成它并拥有一个可用的原型 - https://github.com/parj/tableUpdates/tree/tableUpdate

视图使用jade呈现给服务器端。需要更改的组件,我从服务器端发送一个json,在客户端解析它,只使用JavaScript更新所需的组件。

在server.js中,你可以看到我放在一起然后发出的可变货币的json。在客户端上,它在public / javascript / buildtable.js

中被接收和处理

我上传了最新代码 - server.js每秒运行randomChanges()并将随机JSON数据发送给客户端。客户端在收到重建表时。希望这是你正在寻找的。

答案 1 :(得分:0)

在客户端使用jade有一些解决方法。您可以利用这两个模块:

这允许你做这样的客户端:

var $ = require('jquery');
var jadeify = require('jadeify');

var msg = jadeify('msg.jade', {
  title : 'foo',
  body : 'bar baz quux'
}).appendTo($('#messages'));

答案 2 :(得分:0)

我在工作人员中有node.js,c#,PHP和Python团队,因此我必须多次考虑通用解决方案,所以我尝试这样思考而不是特别针对node.js本身。如果你不喜欢这个,请记住这一点。

您可以使用JavaScript分隔数据和UI来结束。列出页面上的脚本源并为其提供一个随机的查询字符串值,但它实际上是一个获取数据的服务器端代码。

<script src="/mypagedata?ran=[put random here to avoid caching]"></script>
<script src="/displaypagedata.js"></script>

让脚本源中包含一个值,例如:

window.pageData = { [whatever] };

然后让“/displaypagedata.js”替换页面上的数字值。这样您就可以保持视图静态。你也可以编写“/displaypagedata.js”来通过不断请求加载脚本文件,在窗口加载后使用长轮询到同一个“/ mypagedata”。我建议使用jQuery.getScript,因为它有一个事件处理程序来知道何时尝试另一个加载。