このコードのどの部分がJadeテンプレート要素であり、JavaScript要素はどれですか?

StackOverflow https://stackoverflow.com/questions/8313423

  •  25-10-2019
  •  | 
  •  

質問

私が理解しているのは、Jadeテンプレートエンジンに独自のテンプレート要素があり、JavaScriptもサポートしていることです。しかし、次のコードでは、どれが非javaScriptコードであるかを区別できません(これは node.js + Express.js):

これはビューファイル(index.jade)です。

h1= title
#articles
    - each article in articles
      div.article
        div.created_at= article.created_at
        div.title 
            a(href="/blog/"+article._id.toHexString())!= article.title
        div.body= article.body

これはサーバーファイル(app.js)です。

app.get('/', function(req, res){
    articleProvider.findAll( function(error,docs){
        res.render('index.jade', { locals: {
            title: 'Blog',
            articles:docs
            }
        });
    })
});

誰かが私がこの混乱をクリアするのを手伝ってくれますか?

役に立ちましたか?

解決

Jade-lang readme があります コード クライアント側のJavaScriptではないものについて詳しく説明するセクション。

基本的に、テンプレート内でコードを使用し、スクリプトタグ内にない場合、ブラウザに送信する前にそのJavaScriptの出力をレンダリングします。まだJavaScriptですが、サーバー側に実行されています。スクリプトタグ内のJavaScriptは、通常のJavaScriptであり、他のすべてと同様にブラウザに送信されます。


投稿した例については、行:

- each article in articles

翻訳:

for (var article in articles) {
    /* Whatever else is going on in the template */
}

また:

a(href="/blog/"+article._id.toHexString())!= article.title

翻訳(単純化)

"<a href=\"/blog\"" + article._id.toHexString() + ">" + /* Escaped article.title */ + "</a>"

しかし、ジェイドは、ブラウザに送信される前に結果を解析し、レンダリングします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top