Rails什么时候编译CoffeeScript?

ale*_*333 18 javascript ruby-on-rails coffeescript ruby-on-rails-3

Rails何时将Coffeescript资源编译为JavaScript?是按需还是在启动时发生?

Mat*_*lse 24

当向包含CoffeeScript资源的视图发出请求时,CoffeeScript会根据需要编译JavaScript.

但是,您可以使用以下方法将CoffeeScript提前编译为JavaScript:

rake assets:precompile
Run Code Online (Sandbox Code Playgroud)

有关Rails资产管道的更多信息,请参阅此链接.

从链接:

资产上使用的文件扩展名确定应用了哪些预处理.使用默认的Rails gemset生成控制器或脚手架时,将生成CoffeeScript文件和SCSS文件来代替常规JavaScript和CSS文件.之前使用的示例是名为"projects"的控制器,它生成app/assets/javascripts/projects.js.coffee和app/assets/stylesheets/projects.css.scss文件.

当请求这些文件时,它们由coffee-script和sass-rails gems提供的处理器处理,然后分别作为JavaScript和CSS发送回浏览器.

...

在服务器启动后,在第一个请求上编译和缓存资产.Sprockets设置必须重新生效的Cache-Control HTTP头,以减少后续请求的请求开销 - 在这些请求上,浏览器获得304(未修改)响应.

如果清单中的任何文件在请求之间发生了更改,则服务器将使用新的编译文件进行响应.

...

Rails捆绑了一个rake任务,用于将资产清单和管道中的其他文件编译到磁盘.

编译资产将写入config.assets.prefix中指定的位置.默认设置将使用public/assets目录.

如果您没有对生产文件系统的写入权限,则必须在部署期间或本地使用此任务.

rake任务是:

捆绑exec rake资产:预编译

更新:对于那些对预编译资产进行开发感兴趣的人,首先将RAILS_ENV变量设置为开发(从此处开始):

RAILS_ENV=development bundle exec rake assets:precompile
Run Code Online (Sandbox Code Playgroud)

  • 这一切都与生产环境有关吗?发展环境怎么样? (2认同)