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. 点击“尝试coffeescript”
  3. 将拼图剪切/粘贴到咖啡脚本部分
  4. 答对了!您会看到生成的 javascript。

我承认有时会为咖啡脚本感到困惑,这是绝对的晶圆厂 .. 并且可以避免头痛。

于 2013-05-08T04:27:06.827 回答