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

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

【问题讨论】:

    标签: javascript ruby-on-rails ruby-on-rails-3 coffeescript


    【解决方案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
    

    【讨论】:

    • 这都是关于生产环境的,对吧?开发环境呢?
    • 已更新以解决开发环境问题。
    猜你喜欢
    • 2016-10-14
    • 2010-10-16
    • 2020-10-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多