gpt4 book ai didi

javascript - 为什么我们必须在 rails 中要求 application.js 中的 JS 文件?

转载 作者:行者123 更新时间:2023-11-29 16:05:25 25 4
gpt4 key购买 nike

我是 Rails 的新手,所以请原谅这个问题。现在,为什么我们必须要求 application.js 文件中的 JS 文件或 application.css 文件中的 css 文件?据我所知,当我们启动服务器时,rails 会将目录中的所有 javascript 和 css 文件加载到一个文件中,因此如果它已经从目录中加载所有文件,为什么需要在 application.js 中写入还是 application.css 文件?

例如:

//= require abc
//= require xyz

如果我已经有 abc.js 和 xyz.js 文件,我为什么要在 application.js 文件中要求它们?

最佳答案

你误解了这个概念。让我解释一下这个过程。如您所知,当您启动服务器时,rails 首先在 sprockets-rails gem 的帮助下预编译 assets 文件夹中的文件,但它是通过遵循 ma​​nifest 文件中指定的指令来实现的,即 < strong>application.js 和 application.css

现在在 application.js 中你有 "//= require_tree .",这告诉 sprockets 加载 javascript 目录中的所有文件,处理它们,压缩并组合它们以产生一个母版Javascript 文件,这有助于减少网站的页面加载时间。现在,这是你的问题,因为 "//= require_tree ." 指令已经获取了 javascript 目录中存在的所有 javascript 文件,为什么需要在 application.js 中指定 javascript 文件? 答案是“顺序”

“//= require_tree 。”它以未指定顺序或随机顺序加载、压缩和组合所有 JS 文件。现在,如果你是一个 Web 开发者或者已经开始,你可能知道或者将会知道很多时候你必须以某种特定的顺序加载 JS 文件,否则当我们实现它们时可能会出现一些冲突,它们可能无法工作正如我们希望的那样。

其中一个著名的组合是 jquery 和 bootstrap。为了使用 bootstrap JS 部分,它需要 jQuery,所以你必须先初始化 jquery,然后再进行 bootstrap。正是出于这个原因,在 rails 中,您需要 application.js 中的文件指定您希望链轮加载、压缩和合并到一个主 JS 文件中的顺序。当 sprockets 按照 application.js 文件中指定的顺序从上到下处理指令时,需要 application.js 文件中的文件变得很重要。如果您有 2 个绝不会相互冲突的 javascript 或 css 文件,那么您无需在 application.js 或 application.css 文件中要求这些文件,它们仍然可以正常工作。

例如:

//= require jquery
//= require jquery_ujs
//= require bootstrap.min
//= require_tree .

上面,sprockets-rails gem 将首先加载 jquery.js 文件,然后加载 jquery_ujs.js 文件,然后依次加载 bootstrap.min.js 文件。无需添加扩展名,因为它假定所有文件都仅为 javascript 类型。

以上的解释同样适用于application.css中指定的css文件的预编译。

想了解更多信息,我建议您访问http://guides.rubyonrails.org/asset_pipeline.html并阅读有关 Rails Assets 管道的信息。

关于javascript - 为什么我们必须在 rails 中要求 application.js 中的 JS 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44176995/

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