2013-03-01 9 views
1

Я читал через Journo-х source code, и я наткнулся на эту строку кода:В чем смысл этой строки CoffeeScript?

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} 

ответ

1

Да, действительно. Parenthesis являются необязательными (иногда) в CoffeeScript при вызове функции, поэтому он принимает результат template и вызывает его с аргументами. Он компилирует к этому JavaScript:

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

От CoffeeScript documentation:

Вам не нужно использовать круглые скобки, чтобы вызвать функцию, если вы передаете аргументы. Неявный вызов переносится вперед в конец строки или блока выражения.

+0

Возможно, вы должны добавить этот символ подчеркивания 'template (source, object)' function * curries *; если вы не предоставляете объект, вместо него вы возвращаете функцию, которая берет объект и выдает шаблонный результат. –

1

_.template компилирует шаблон, указанный в source.toString(). Шаблон - это функция, которая затем вызывается. variables - параметр для этой функции (точно так же, как postPath post - параметры для fs.readFileSync).

Смотрите также документацию для _.template

-1

Вопрос был хорошо ответил, но, чтобы помочь ОР с будущими трюками кофе, отличный способ AnSer эти коаны является

  1. Перейти к CoffeeScript. орг сайт
  2. Нажмите на «Попробуйте CoffeeScript»
  3. Вырезать/Вставить головоломку в раздел CoffeeScript
  4. Бинго! Вы видите сгенерированный javascript.

Я допускаю, что иногда сталкивается с проблемой coffeescript, и это abs fab .. и сохраняет головные боли.

Смежные вопросы