链轮中的链轮是啥意思

Posted

技术标签:

【中文标题】链轮中的链轮是啥意思【英文标题】:What sprockets mean in rails链轮中的链轮是什么意思 【发布时间】:2015-10-28 00:14:22 【问题描述】:

所以,我刚刚意识到我完全不知道导轨中的链轮是什么。

当使用 bootstrap 或 materialize 时,要求在 application.js 文件中包含 sprocket(bootstrap-sprocket 或 materialize-sprocket)。

我搜索的所有内容都在谈论资产管道,让我更加困惑。

根据 ruby​​-guides,

资产管道在技术上不再是 Rails 4 的核心特性,它已从框架中提取到 sprockets-rails gem 中。

当我做bundle show sprockets-rails 时,我得到了:

/Users/Sunday/workspace/resilience/vendor/bundle/ruby/2.1.0/gems/sprockets-rails-2.3.1

这表明我至少拥有宝石。

但我的困惑和我的问题是,sprockets 的重要性是什么,而不是 sprockets-rails,它使其他宝石像 bootstrapmaterialize 以及可能其他一些宝石拥有 sprockets,尤其是在他们的 javascript 文件?

谢谢。

【问题讨论】:

Sprockets is a Ruby library for compiling and serving web assets. It features declarative dependency management for JavaScript and CSS assets, as well as a powerful preprocessor pipeline that allows you to write assets in languages like CoffeeScript, Sass, SCSS and LESS. 【参考方案1】:

Sprockets 是一个用于编译和提供 Web 资产的 Ruby 库。 Sprockets 允许将应用程序的 JavaScript 文件组织成更小更易于管理的块,这些块可以分布在许多目录和文件中。它提供了有关如何在我们的项目中包含资产的结构和实践。

在每个 JavaScript 文件的开头使用指令,Sprockets 可以确定 JavaScript 文件依赖于哪些文件。在部署您的应用程序时,Sprockets 然后使用这些指令将您的多个 JavaScript 文件转换为一个文件以获得更好的性能。

【讨论】:

抱歉后续问题,但 sprockets 仅对 javascrpt 文件可靠是否正确。没有像 css 这样的其他类型,对吧?【参考方案2】:
/app/assets/javascripts/application.js
// This is a manifest file that'll be compiled into including all the files listed below.
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
// be included in the compiled file accessible from http://example.com/assets/application.js
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
//= require jquery
//= require jquery_ujs
//= require_tree .

application.js 文件称为清单,由Sprockets 在内部管理。当对该文件的请求进入时,Sprockets 会查看清单并将其中提到的每个文件编译在一起,并在此文件中的任何代码之前包含它们的内容。 Sprockets 将在 loadpath 中搜索此文件,在这种情况下,从 jquery-rails 引擎的 vendor/asset/javascripts 目录加载它。

【讨论】:

这是一个很好的解释。加载路径到底是什么? loadpath 只是您列出的文件的路径。

以上是关于链轮中的链轮是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

Rails 3.1 指南针和链轮。使困惑

如何在 Ruby on Rails 3.1 中禁用资产管道(链轮)消息的日志记录?

使用clean RVM的链轮JavaScript依赖关系管理工具

如何在 BigQuery 中执行线性回归?

客户端应用程序工作流程

最有效果的网站运营推广方法有哪些?