首页 > 解决方案 > 我应该将所有页面级别的 js 添加到 assets.rb 吗?

问题描述

我正在尝试为 Rails 应用程序实现简单的 HTML 模板。里面用到了很多JS文件。

我将所有 JS 引用转换为 Rails javascript_include_tag,它总是要求我将它们添加到assets.rb文件中。这非常耗时。

我的assets.rb文件看起来像:

Rails.application.config.assets.precompile += ['ea/*'] 
Rails.application.config.assets.precompile += %w( bootstrap/* )
Rails.application.config.assets.precompile += %w(
  plugins/bower_components/bootstrap-extension/css/bootstrap-extension.css
)
Rails.application.config.assets.precompile += %w(
  plugins/bower_components/sidebar-nav/dist/sidebar-nav.min.css )
Rails.application.config.assets.precompile += %w(
  plugins/bower_components/morrisjs/morris.css )
Rails.application.config.assets.precompile += %w( css/* )
Rails.application.config.assets.precompile += %w(
  plugins/bower_components/jquery/dist/jquery.min.js )
Rails.application.config.assets.precompile += %w(
  plugins/bower_components/bootstrap-extension/js/bootstrap-extension.min.js
)
Rails.application.config.assets.precompile += %w(
  plugins/bower_components/sidebar-nav/dist/sidebar-nav.min.js )
Rails.application.config.assets.precompile += %w(
  js/jquery.slimscroll.js )
Rails.application.config.assets.precompile += %w(
  plugins/bower_components/raphael/raphael-min.js )
Rails.application.config.assets.precompile += %w(
  plugins/bower_components/morrisjs/morris.js )
Rails.application.config.assets.precompile += %w(
  plugins/bower_components/jquery-sparkline/jquery.sparkline.min.js )
Rails.application.config.assets.precompile += %w(
  plugins/bower_components/peity/jquery.peity.min.js )
Rails.application.config.assets.precompile += %w(
  plugins/bower_components/peity/jquery.peity.init.js )
Rails.application.config.assets.precompile += %w( js/waves.js )
Rails.application.config.assets.precompile += %w( js/custom.min.js )
Rails.application.config.assets.precompile += %w( js/dashboard1.js )
Rails.application.config.assets.precompile += %w(
  plugins/bower_components/styleswitcher/jQuery.style.switcher.js )

有什么简单的解决方案吗?

标签: ruby-on-rails

解决方案


通常所有或大部分 js 都打包到一个 js 包中(请参阅资产管道指南),您将拥有单个javascript_include_tag('application')application.js清单,例如:

  //= require_directory ./ea
  //= require_tree bootstrap
  //= require jquery/dist/jquery.min
  //= require bootstrap-extension/js/bootstrap-extension.min
  //= require sidebar-nav/dist/sidebar-nav.min
  //= require js/jquery.slimscroll
  //= require raphael/raphael-min
  //= require morrisjs/morris
  //= require jquery-sparkline/jquery.sparkline.min
  //= require peity/jquery.peity.min
  //= require peity/jquery.peity.init
  //= require js/waves
  //= require js/custom.min
  //= require js/dashboard1
  //= require styleswitcher/jQuery.style.switcher.js

和 css 类似


推荐阅读