gpt4 book ai didi

ruby-on-rails - require.js 和带有 Rails 的预编译 Assets

转载 作者:行者123 更新时间:2023-12-04 07:31:21 26 4
gpt4 key购买 nike

我正在使用 requirejs-rails gem以及各种 3rd 方 javascripts。在开发中,这一切似乎都在起作用……即使在预编译我的 Assets 时,但在暂存/生产(heroku)中它也找不到 Assets 。

以 jQuery 为例(使用 jquery-rails gem)。如果我这样做,则从 heroku 控制台
Rails.application.assets.find_asset('jquery.min')它找到了 Assets
(/app/vendor/bundle/ruby/1.9.1/gems/jquery-rails-2.1.1/vendor/assets/javascripts/jquery.min.js”)。

但是,如果我尝试浏览它 domain.com/assets/jquery.min.js我得到一个 404。

我的 requirejs-rails 配置是:

shim:
jquery:
exports: '$'
jquery-ujs:
- jquery
paths:
jquery: jquery.min
jquery-ujs: jquery_ujs

在我的 application.js.coffee 我有
require ['jquery', 'jquery-ujs'], ($) ->
// ...

最佳答案

方式requirejs-rails有效(实际上是来自 requirejs 的 r.js)是它将你知道的所有 javascript 文件(通过 requirejs.yml 中的路径或通过代码中的实际定义调用)编译成一个大文件,然后可以对其进行丑化、压缩和缓存破坏(通过在名称中包含摘要)。因此,如果您有一个名为 /assets/views/my_view.js 的文件在开发中可通过 http 访问的内容不再存在于生产中(因为它是您的 application.js 的一部分)。

在您的情况下,如果您查看 application-<digest>.js在生产中(您可以通过查看所提供应用程序页面的 html 来获取实际摘要),您将看到 jquery 已包含在其中(您可以看到许可证注释)。

所以文件在那里,它作为 application-<digest>.js 的一部分被正确提供并且您不应该在生产中依赖它直接可用。由于 Assets 管道和 requirejs-rails 插件的重点是将所有文件编译成一个缩小的压缩文件,以提高页面性能。

关于ruby-on-rails - require.js 和带有 Rails 的预编译 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12170282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com