2015-11-02 6 views
6

私はwebarch templateから始まるレールアプリケーションを開発しています。私は、パブリック/フォルダ内のアセットフォルダ全体を追加するとアセットを自分のビューにリンクしますが、アセットパイプライン機能を利用することはできません。テンプレートには多くのプラグインとさまざまなオプションがあり、一般的にそのすべてを使用するわけではありません。アセットフォルダのサイズは30MBです。大きなテンプレートアセットをrailsのerbファイルにリンクする適切な方法は何ですか?

Iかかわらず、ベンダー/資産の内側に置くと、アセットパイプラインでそれを使用するが、これは二つの問題発生について:

    私が縮小さコードの30メガバイトを提供し、私のアプリでそれの小さな割合を使用することになり
  1. を。
  2. アセットパイプラインが望む方法でリンクを使用するように、資産フォルダ全体を手動で書き直す必要があります(javascript_include_tag "file"がfile.jsを提供する)。もちろん、私はスクリプトを使ってこれを行いますが、それはまだ誰かが遭遇したはずの問題のようです。

これらのファイルのベンダー/アセットとパブリック/フォルダはどちらも適切な場所ではないようですので、私はより良いオプション(または後のオプションをうまく機能させる方法)を希望します。

+1

適切な解決策だけで、あなたのプロジェクトに使用されていない資産の30メガバイトに入れないことです。通常、テンプレートには小さなコア(アセットに含めることは問題ありません)があり、残りのコンポーネントはオプションです。チェリーピッキング/これらのファイルの適応には時間がかかりますが、それは努力する価値があります。 – vemv

+1

@vemv私はこのようなコメントをしばしば見ます。あなたのことに反応すれば、ごめんなさい。これは正しいことではありません。私はあなたがそれを言うことができますが、先に進み、解決策を提供する、あるいは何も言わないことを意味します。あなたは、コーディングの単一の方法や状況の単一の種類はありませんし、時にはあなたが通常行うことを避けることを余儀なくされていることがわかります。だからここでは、学校のような講義ではなく、助けを提供することです。乾杯。 – Benj

+0

@BenjaminSinclaire何?私は、多くの種類のプロジェクトで正しいと思われる、具体的な、適用可能な助言をしました。 – vemv

答えて

5

アセットパイプラインの下にあるファイルを保存して1つの最小化されたアセットファイルに残すことができない場合は、アセットをカテゴリ別に分割し、それらのカテゴリを異なる最小化ファイルでコンパイルし、必要に応じて。

アプリのさまざまな領域に配置され、よく使用されないいくつかの「重い」javascriptコンポーネントが含まれているアプリ向けにします。

の1-アプリ/資産/ javascripsでは、あなたのファイル構造

を整理し、アプリ/資産/スタイルシートは、私たちが作成しようとしているカテゴリごとにディレクトリを作成します。例:

  • アプリ/資産/ javascrips /共通
  • アプリ/資産/ javascrips /管理
  • アプリ/資産/ javascrips/USER_ACCOUNT

2 -作成し、あなたのマニフェスト

app/assets/javascripsapp/assets/stylesheets関連ディレクトリを含め、カテゴリごとにマニフェストファイルを作成し、それらを持って

ファイルアプリ/資産/ javascrips/common.js

//= require jquery 
//= require_tree ./common 

ファイルアプリ/資産/ javascrips/admin.js

//= require_tree ./admin 

ファイルapp/assets/javascrips/user_account。JS

//= require_tree ./user_account 

、3-はあなたがのconfig/application.rbファイルでそれを行うことができますプリコンパイルリストに

をレールにあなたのマニフェストを追加し、それが大きな取得した時点で、作成することが好ましいです。初期化ファイル設定/初期化子/ assets.rb

Rails.application.configure do 
    config.assets.precompile += %w[common.js admin.js user_account.js] 
end 

4-あなたのビューとレイアウトにそれらを含め、JavaScriptライブラリを設定します。

アセットファイルをレイアウトとビューにインポートします。共通アセットファイルを使用するアプリケーションの異なる領域に複数のレイアウトを作成することをお勧めします。使用する方法には、あなたは、彼らが動的にファイルをロードするときminiminiedファイルを使用する必要があなたのjavascriptのプラグインを指示する必要があり stylesheet_link_tag 'manifest_file'javascript_include_tag 'manifest_file'

され、心に留めておきます。それらのために、構成.js.erbファイルを使用することができます。例:

ファイルアプリ/資産/ javascrips /管理/プラグインin_config.js.erb

PLUGIN.config('dynamicFileName', '<%= javascript_path('manifest_file') %>'); 
関連する問題