Rails 啥时候编译 CoffeeScript?

Posted

技术标签:

【中文标题】Rails 啥时候编译 CoffeeScript?【英文标题】:When does Rails compile CoffeeScript?Rails 什么时候编译 CoffeeScript? 【发布时间】:2011-12-31 01:41:38 【问题描述】:

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

【问题讨论】:

【参考方案1】:

当对包含 CoffeeScript 资源的视图发出请求时,CoffeeScript 会按需编译为 JavaScript。

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

rake assets:precompile

有关 Rails 资产管道的更多信息,请参阅link。

来自链接:

资产上使用的文件扩展名决定了 应用预处理。生成控制器或脚手架时 使用默认的 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 变量设置为开发(来自here):

RAILS_ENV=development bundle exec rake assets:precompile

【讨论】:

这都是关于生产环境的,对吧?开发环境呢? 已更新以解决开发环境问题。

以上是关于Rails 啥时候编译 CoffeeScript?的主要内容,如果未能解决你的问题,请参考以下文章

是否/为啥 Rails 6 仍在使用/推荐 CoffeeScript?

导轨 3.1。如何防止 Rails 使用 CoffeeScript?

Rails - 从 JavaScript 调用 CoffeeScript

Rails 3.1:我需要使用 CoffeeScript 吗?

CoffeeScript 未在 Rails 3.1 中更新

渲染部分 Rails3.x + coffeescript