【问题标题】:Does sprocket strip comment in .coffee.erb when converting to .js转换为 .js 时 sprocket 是否会在 .coffee.erb 中去除注释
【发布时间】:2015-06-18 07:25:16
【问题描述】:

.coffee.erb 中的#comment 似乎在最终编译的.js 中被删除了

例如:

https://github.com/marcom-unimelb/unimelb-design-system/blob/master/injection/header/header.coffee.erb

文件顶部附近有“# IE helper”之类的注释。

https://github.com/marcom-unimelb/unimelb-design-system/blob/master/Rakefile

在上面的 rakefile 之后,我运行 bundle exec rake assets:compile VERSION=0.8,最终的 javascript 删除了哈希标签注释。这是有道理的,因为 javascript 不支持 # 作为注释的开头。

有没有办法将咖啡脚本中的 # 转换为 JavaScript 中的 // 或类似的东西?

【问题讨论】:

  • 您需要// 评论还是/* ... */ 就足够了?
  • @muistooshort /* ... / 应该足够了(或任何评论方式)。我放置 / */ 并编译它。它给了我错误。

标签: ruby coffeescript erb sprockets


【解决方案1】:

来自fine manual

有时您希望将块注释传递给生成的 JavaScript。例如,当您需要在文件顶部嵌入许可标头时。块 cmets 反映块字符串的语法,保留在生成的代码中。

因此,如果您想获得 C 风格的注释,例如:

/* Pancakes */

在您的 JavaScript 中,您可以使用 CoffeeScript 块注释:

###
Pancakes
###

您也可以在 CoffeeScript 中使用 back-ticks for embedding JavaScript,但这往往会给您带来不需要的分号。例如,

`// Pancakes`

在你的 CoffeeScript 中变成:

// Pancakes;

在你的 JavaScript 中。

我倾向于使用 block cmets,因为 (a) 这就是它们的用途,并且 (b) 倒勾有点丑陋。

顺便说一句,吃掉你的 CoffeeScript cmets 的不是 Sprockets,而是 CoffeeScript 本身。

【讨论】:

  • 我正在使用 vim 和 vim-coffee-script 插件。对于单个 #,我可以在制表符或空格之前。使用###,我只需要以空格开头,否则它会给我缩进语法错误。这正常吗?
  • 您需要选择空格或制表符以使用 CoffeeScript 进行缩进,混合它们会导致各种混乱。
猜你喜欢
  • 1970-01-01
  • 2013-03-25
  • 2019-04-27
  • 2016-02-02
  • 2012-08-13
  • 2010-12-03
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多