Propshaft 开源项目教程
【免费下载链接】propshaft Deliver assets for Rails 项目地址: https://gitcode.com/gh_mirrors/pr/propshaft
1. 项目介绍
Propshaft 是一个为 Rails 设计的资产管道库。它旨在适应现代开发环境,其中资产的捆绑和压缩不再是首要任务。Propshaft 提供了一个简单且高效的资产管道,适用于那些使用 Node.js 打包工具处理 JavaScript 和 CSS 的 Rails 项目。
Propshaft 的主要特点包括:
- 可配置的加载路径:可以从应用程序和 gem 中的多个目录加载资产。
- 摘要标记:在生产环境中,所有资产都会被复制或编译,并带有摘要哈希,以便使用长过期缓存头提高性能。
- 开发服务器:在开发环境中,无需预编译资产,可以通过开发服务器直接提供资产。
- 基本编译器:提供简单的输入到输出编译器,默认用于将 CSS 中的
url(https://blog.csdn.net/asset)函数转换为url(https://blog.csdn.net/digested-asset)。
2. 项目快速启动
安装
对于 Rails 8 项目,Propshaft 是默认的资产管道。对于 Rails 7 项目,可以使用以下命令启动新项目并使用 Propshaft:
rails new myapp -a propshaft
对于现有项目,请参考升级指南进行逐步安装。
配置
在 config/application.rb 中配置资产路径:
config.assets.paths << Rails.root.join('app', 'assets', 'stylesheets')
使用
在视图中使用资产路径助手:
<%= image_tag 'logo.svg' %>
<%= javascript_include_tag 'application' %>
<%= stylesheet_link_tag 'application' %>
预编译
在生产环境中,运行以下命令预编译资产:
rails assets:precompile
3. 应用案例和最佳实践
案例1:使用 Propshaft 管理静态资源
假设你有一个 Rails 项目,需要管理大量的静态资源(如图片、CSS 和 JavaScript 文件)。使用 Propshaft,你可以轻松地将这些资源组织在 app/assets 目录下,并通过配置加载路径来管理它们。
config.assets.paths << Rails.root.join('app', 'assets', 'images')
config.assets.paths << Rails.root.join('app', 'assets', 'stylesheets')
config.assets.paths << Rails.root.join('app', 'assets', 'javascripts')
案例2:结合 Node.js 打包工具
如果你的项目已经使用 Node.js 打包工具(如 Webpack 或 Vite)来处理 JavaScript 和 CSS,Propshaft 可以作为补充工具,负责资产的摘要标记和提供服务。
npm install webpack --save-dev
在 config/application.rb 中配置 Propshaft:
config.assets.paths << Rails.root.join('public', 'assets')
4. 典型生态项目
1. jsbundling-rails
jsbundling-rails 是一个用于在 Rails 项目中集成现代 JavaScript 打包工具的 gem。它与 Propshaft 结合使用,可以实现高效的 JavaScript 打包和资产管理。
2. cssbundling-rails
cssbundling-rails 是一个用于在 Rails 项目中集成现代 CSS 打包工具的 gem。它与 Propshaft 结合使用,可以实现高效的 CSS 打包和资产管理。
3. importmap-rails
importmap-rails 是一个用于在 Rails 项目中使用 ES 模块的 gem。它与 Propshaft 结合使用,可以实现高效的 JavaScript 模块管理和资产提供。
通过这些生态项目,Propshaft 可以与现代前端工具链无缝集成,提供一个高效且灵活的资产管道解决方案。
【免费下载链接】propshaft Deliver assets for Rails 项目地址: https://gitcode.com/gh_mirrors/pr/propshaft
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



