1

私はJournoのソースコードを読んでいて、次のコード行に出くわしました:

markdown  = _.template(source.toString()) variables

ここで何をvariablesしていますか?_.template(source.toString()) variables有効なstntaxはまったくありますか?

そのコード行をラップする関数は次のとおりです。

Journo.render = (post, source) ->
      catchErrors ->
        do loadLayout
        source or= fs.readFileSync postPath post
        variables = renderVariables post
        markdown  = _.template(source.toString()) variables
        title     = detectTitle markdown
        content   = marked.parser marked.lexer markdown
        shared.layout _.extend variables, {title, content}
4

3 に答える 3

1

はい、有効です。関数を呼び出す場合、CoffeeScriptでは括弧はオプション(場合によっては)であるため、結果を取得しtemplateて引数を使用して呼び出します。このJavaScriptにコンパイルされます。

_.template(source.toString())(variables);

CoffeeScriptのドキュメントから:

引数を渡す場合は、関数を呼び出すために括弧を使用する必要はありません。暗黙の呼び出しは、行またはブロック式の最後まで折り返されます。

于 2013-03-01T14:05:58.263 に答える
1

_.templateで指定されたテンプレートをコンパイルしますsource.toString()。テンプレートは関数であり、その後呼び出されます。 variablesはその関数のパラメーターです(のパラメーターと同じpostPath postですfs.readFileSync)。

_.templateのドキュメントも参照してください

于 2013-03-01T14:08:14.620 に答える
-1

質問にはうまく答えられましたが、OPが将来のコーヒースタントを支援するために、これらの公案を回答するための優れた方法は、

  1. coffeescript.org サイトに移動します。
  2. 「コーヒースクリプトを試す」をクリック
  3. パズルを切り取り、coffeescript セクションに貼り付けます
  4. ビンゴ!生成された JavaScript が表示されます。

私は時々コーヒースクリプトに困惑することを認めます.これは絶対に素晴らしいです..そして頭痛の種を救います.

于 2013-05-08T04:27:06.827 に答える