1

derbyjs を使用して Web サイトを構築したいと考えています。ウェブサイトには記事があります。

すべての記事にはtitle(短いテキスト) フィールドとtext(大量のテキスト) フィールドがあります。

ページ/articlesは、すべての記事のタイトルを見ることができるページです。

/articles/<article_id>記事をクリックすると、クリックした記事の が表示される場所が開きtextます。

通常のサーバー側フレームワークでは、クライアントは html のみを取得します。シンプルでいいですね。しかしダービーでは、私が理解しているように、データと html を別々に取得してから、データをクライアントの html にプッシュします。

だから、私の質問:

1)/articlesロードのみを行い、記事をロードしtitlesない方法は? texts(つまり、現在のページに必要なデータのみをロードし、それ以上はロードしません)

2) ある記事をクリックすると、すぐに html が変更されますよね? ただし、クリックされた記事のテキストはすぐには読み込まれません (以前に読み込まれていないため)。では、クライアントは何を見るべきでしょうか? 記事のデータが読み込まれるときに、テキストで埋められる空白のページは?

4

1 に答える 1

2

1) 現時点では ShareJS の実装により、少なくともドキュメント全体を購読 (フェッチ) することしかできません。title記事だけをサーバーから取得できないということです。回避策:

  • id+のリストを返す Express ルーターでメソッドを作成できますtitle。そして、(いつものように) クライアントから XMLHttpRequest リクエストを作成して、それを取得してクライアント モデルに入れることができます。
  • コレクションを分割できます。1titles番目は 、2 番目はtexts
  • 多分もっとある

2) この例では、html は、記事がクライアントにロードされた後にのみレンダリングを開始します。

app.get('/articles/:id', function(page, model, params, next) {
  // let's load the article
  model.subscribe('/articles/' + params.id, function(err) {
    // article is loaded now let's start to render html
    page.render('article');
  });
});

この例では、記事がロードされる前に html のレンダリングが開始され、記事がロードされた後に html にデータが入力されます (テンプレートで {{}} ではなく {} を使用する場合):

app.get('/articles/:id', function(page, model, params, next) {
  // let's load the article
  model.subscribe('/articles/' + params.id, function(err) {
    // article is loaded and html is filled with data
  });
  // Still no article, let's render page without data
  page.render('article');
});
于 2013-12-19T01:58:50.247 に答える