Обновление рендеринга на стороне клиента - PullRequest
2 голосов
/ 11 декабря 2011

У меня есть серверный шаблонизатор Jade, который я использую для рендеринга макета. Когда клиент получит макет в первый раз, в содержимом макета, которые могут нуждаться в обновлении, могут быть только небольшие последующие изменения, а не сам макет.

Есть ли способ «перерисовать» клиентскую часть, изменив только то, что нужно обновить, и в то же время используя возможности Jade.

Ответы [ 3 ]

2 голосов
/ 24 декабря 2011

Вы можете сделать это через 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 клиентам. Клиенты после получения восстанавливают таблицу. Надеюсь, это то, что вы ищете.

0 голосов
/ 24 декабря 2011

У меня в штате есть команды node.js, c #, PHP и Python, поэтому мне приходится много раз помнить об обобщенных решениях, поэтому я стараюсь думать таким образом, а не так специфично для самого node.js.Имейте это в виду, прежде чем подумать, если вам это не нравится.

Вы можете покончить с этим, разделив свои данные и пользовательский интерфейс с помощью JavaScript.Перечислите источник скрипта на своей странице и присвойте ему случайное значение строки запроса, но оно на самом деле идет к коду на стороне сервера, который получает ваши данные.

<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, так как в нем есть обработчик событий, чтобы знать, когда следует предпринять другую загрузку.

0 голосов
/ 22 декабря 2011

Есть некоторые обходные пути для использования jade на стороне клиента. Возможно, вы сможете воспользоваться этими двумя модулями:

Это позволяет вам сделать что-то подобное на стороне клиента:

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

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