ページの読み込み時に Jade から読み込まれるコンテンツがあります (接続ユーザー リストなど)。このコンテンツは動的であり、クライアントは socket.io メッセージを介してその変更を通知されます。クライアント側の jQuery スクリプトは、新しいコンテンツを追加するか、古いコンテンツを削除する必要があります。
問題は、新しいコンテンツが非常に複雑になる可能性があり (たとえば、ユーザーのすべての情報)、クライアント側スクリプトの HTML コードを書き直さなければならないことです (jQuery はそれを意図していません)。
既存の構造を複製して編集しようとしましたが (非表示にすることもできます)、最善の方法ではないと思います。
例
サーバ側
#usersList
each user in users
.userBox
.userName #{user.name}
.userCountry #{user.country}
.userMail #{user.mail}
クライアント側
websocket.on('newUser', function(user) {
$('<div class="userBox">'+
'<div class="userName">' + user.name +'</div>'+
'<div class="userCountry">' + user.country +'</div>'+
'<div class="userMail">' + user.mail +'</div>'+
'</div>').appendTo($('#usersList'));
});
クライアント側のコードはひどいものです。Jade でコンテンツのブロックを作成して、これを行うことができるのではないかと思います。
websocket.on('newUser', function(user) {
$(jade.userBox(user)).apprendTo('#usersList');
});
それが不可能な場合、最善の方法は何ですか?