微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Rails 3.1:公共目录不再提供js资产页面加载后如何加载其他js文件?

如何解决Rails 3.1:公共目录不再提供js资产页面加载后如何加载其他js文件?

| 我使用一个jQuery插件,该插件在初始页面加载后从服务器加载另一个js文件。由于所有js资产都在Rails 3.1中串联在一起,并且公共目录不用于提供js资产,因此如何引用此文件?我放在哪里?     

解决方法

Sprockets加载路径中的每个资产均可在运行时访问。您可以在Rails控制台中使用以下命令查看加载路径
Rails.application.config.assets.paths
您可以在初始化程序中添加加载路径:
Rails.application.config.assets.paths << your_load_path
默认情况下,自动加载应用程序/资产/和供应商/资产/中的所有资产。这些资产必须位于目录内。资产/目录本身中的文件未加载。 您可以通过访问http://mydomain.com/assets/myscripts/hello.js加载位于2点的资产。 串联是一个单独的问题。链轮将在加载路径中查找您使用Sprockets
require
provide
指令指定的资产,并从中构建串联文件。     ,似乎没有简单的方法可以完成此操作。现在,在Rails 3.1中,JavaScript和CSS文件都被合并为单个文件,以发送到浏览器。这是使用Sprockets库完成的。 实现此目的的机制包括解析./app/assets/javascripts/application.js文件并查找Sprockets指令,该指令将告诉Sprockets在哪里找到相关文件。 新生成的Rails应用程序中的一个全新的application.js文件如下所示:
// FIXME: Tell people that this is a manifest file,real code should go into discrete files
// FIXME: Tell people how Sprockets and CoffeeScript works
//
//= require jquery
//= require jquery_ujs
//= require_tree .
这些看起来像是对JavaScript的注释,但被Sprockets视为指令,告诉其如何构建将交付给客户端的单个application.js。您可能会猜到,这是JavaScript文件中添加的“ 6”行。 似乎没有关于Sprockets指令的大量文档。但是,源代码已被很好地记录下来,并且很好地解释了可用的指令。
require_tree
指令以递归方式包含app / assets / javascripts目录中的所有文件。因此,可以通过创建子目录并将不需要的文件放在其中来实现所需的功能。然后您可以将
require_tree
更改为
require_path
。 替代方法是手动管理Sprockets包含的文件,每个所需的JavaScript文件都使用“ 10”。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。