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