Sinatra Asset Pipeline 使用教程
项目介绍
Sinatra Asset Pipeline 是一个基于 Sprockets 的资产管道实现,专为 Sinatra 设计。它支持在开发环境中动态编译资产,以及在生产环境中预编译资产。设计目标是提供良好的默认设置,以便将您的 Sinatra 应用程序与 Sprockets 集成。
项目快速启动
安装
首先,通过 RubyGems 安装 Sinatra Asset Pipeline:
gem install sinatra-asset-pipeline
或者将其添加到您的项目的 Gemfile 中:
gem 'sinatra-asset-pipeline', '~> 2.2.0'
配置
在您的应用程序的 Rakefile 中添加以下内容:
require 'sinatra/asset_pipeline/task'
require './app'
Sinatra::AssetPipeline::Task.define! App
这将使您的应用程序在 public/assets
路径下提供 assets
文件夹中的资产。
使用
在部署应用程序时,您可以使用预编译 Rake 任务来预编译资产:
RACK_ENV=production rake assets:precompile
应用案例和最佳实践
经典风格
如果您的应用程序以经典风格运行 Sinatra,您可以如下定义 Rake 任务:
Sinatra::AssetPipeline::Task.define! Sinatra::Application
自定义
在最简单的形式中,只需在您的应用程序中注册 Sinatra::AssetPipeline
扩展:
require 'sinatra/asset_pipeline'
class App < Sinatra::Base
register Sinatra::AssetPipeline
get '/' do
'hi'
end
end
如果您的应用程序不遵循默认设置,可以进行如下自定义:
require 'sinatra/asset_pipeline'
class App < Sinatra::Base
set :assets_precompile, %w(app.js app.css *.png *.jpg *.svg *.eot *.ttf *.woff *.woff2)
set :assets_paths, %w(assets)
set :assets_host, '<id>.cloudfront.net'
set :assets_prefix, 'custom-prefix'
set :assets_protocol, :http
set :assets_css_compressor, :sass
set :assets_js_compressor, :uglifier
register Sinatra::AssetPipeline
set :precompiled_environments, %i(staging uat production)
get '/' do
'hi'
end
end
典型生态项目
Sinatra Asset Pipeline 与 Sprockets 紧密集成,Sprockets 是一个强大的资产管理库,支持多种预处理器和压缩器。以下是一些与 Sinatra Asset Pipeline 相关的典型生态项目:
- Sprockets: 核心资产管理库,支持多种预处理器和压缩器。
- Sass: 用于编写高效和可维护的 CSS。
- Uglifier: 用于压缩 JavaScript 代码。
- Sinatra: 轻量级的 Ruby Web 框架,Sinatra Asset Pipeline 是其扩展之一。
通过这些工具和库的结合使用,您可以高效地管理和优化您的 Sinatra 应用程序的资产。