2011-12-10 6 views
2

레이아웃을 렌더링하는 데 사용하는 서버 측 템플릿 엔진 인 Jade가 있습니다. 클라이언트가 처음으로 레이아웃을 수신하면 레이아웃 자체가 아니라 업데이트가 필요할 수도있는 레이아웃 내용의 작은 후속 변경 사항 만 있습니다.서버 쪽 렌더링 클라이언트 쪽 업데이트

업데이트해야 할 항목을 변경하고 동시에 비취 기능을 사용하여 클라이언트 측을 "다시 렌더링"할 수있는 방법이 있습니까?

답변

2

당신은 할 수 있습니다

이이 클라이언트 측과 같은 일을 할 수 있습니다 socket.io 통해 할 node.js 프로그램을 현재 개발하고 있고 작동하는 프로토 타입 - https://github.com/parj/tableUpdates/tree/tableUpdate

뷰는 비취를 사용하여 서버 측 렌더링됩니다. 변경이 필요한 구성 요소는 서버 측에서 json을 보내고 클라이언트 측에서 구문 분석하고 JavaScript를 사용하여 필요한 구성 요소 만 업데이트합니다.

server.js에서 내가 함께 놓은 다양한 통화로 json을 볼 수 있습니다. 클라이언트에서는 public/javascript/buildtable.js에서 수신하고 처리합니다.

최근 코드를 업로드했습니다. server.js는 매 초 randomChanges()를 실행하고 임의의 JSON 데이터를 클라이언트에 보냅니다. 수신시 클라이언트가 테이블을 다시 작성합니다. 희망이 당신이 찾고있는 것입니다.

0

클라이언트 쪽에서 jade를 사용하기위한 몇 가지 해결 방법이 있습니다. 당신은이 두 모듈을 활용 할 수 있습니다

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

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

node.js, C#, PHP 및 Python 팀이 직원으로 구성되어 있으므로 일반화 된 솔루션을 여러 번 염두에 두어야하므로 node.js 자체에 그다지 집중하지 않고 그렇게 생각하려고합니다. 네가 이것을 좋아하지 않는다면 나를 지키기 전에 이것을 명심하라.

JavaScript를 사용하여 데이터와 UI를 분리하면 끝낼 수 있습니다. 페이지에 스크립트 소스를 나열하고 임의의 쿼리 문자열 값을 지정하지만 실제로 데이터를 가져 오는 서버 측 코드로 이동하십시오.

window.pageData = { [whatever] }; 

는 그런 다음 "/displaypagedata.js는"페이지에서 숫자 값으로 대체 할 있습니다

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

스크립트 소스 같은 그 안에 값이 되세요. 이렇게하면 뷰를 정적으로 유지할 수 있습니다. "/displaypagedata.js"를 코딩하여 스크립트로드를 계속 요청하여 동일한 "/ mypagedata"에 윈도우가로드 된 후 긴 폴링을 사용할 수도 있습니다. 다른로드를 시도 할시기를 알기 위해 이벤트 처리기가 있으므로 jQuery.getScript를 사용하는 것이 좋습니다.

관련 문제