Rails什么时候将Coffeescript资源编译为JavaScript?是按需还是在启动时发生?
答案 0 :(得分:24)
当向包含CoffeeScript资源的视图发出请求时,CoffeeScript会根据需要编译JavaScript。
但是,您可以使用以下方法将CoffeeScript提前编译为JavaScript:
rake assets:precompile
有关Rails资产管道的更多信息,请参阅此link。
从链接:
资产上使用的文件扩展名决定了什么 应用预处理。当生成控制器或脚手架时 使用默认的Rails gemset,CoffeeScript文件和SCSS文件 生成代替常规JavaScript和CSS文件。这个例子 之前用过的是一个名为“projects”的控制器,它生成了一个 app / assets / javascripts / projects.js.coffee和an app / assets / stylesheets / projects.css.scss文件。
请求这些文件时,处理器会处理这些文件 由咖啡脚本和sass-rails宝石提供,然后送回 分别以JavaScript和CSS的形式显示在浏览器中。
...
在服务器之后的第一个请求上编译和缓存资产 开始了。 Sprockets设置必须重新生效的Cache-Control HTTP标头 减少后续请求的请求开销 - 关于这些请求 浏览器获得304(未修改)响应。
如果清单中的任何文件在请求之间发生了变化,那么 服务器以新的编译文件响应。
...
Rails捆绑了一个rake任务来编译资产清单 和管道中的其他文件到磁盘。
编译资产将写入指定的位置 config.assets.prefix。默认设置将使用公共/资产 。目录
您必须在部署期间或本地使用此任务 没有对生产文件系统的写访问权。
rake任务是:
捆绑exec rake资产:预编译
更新: 对于那些有兴趣预编译资产以进行开发的人,首先将RAILS_ENV变量设置为开发(来自here):
RAILS_ENV=development bundle exec rake assets:precompile