2016-09-06 4 views
0

Turbolinksを使用した、非常にインタラクティブなイベントドリブンのページが、レール5.0.0.1にあります。 異なるページでさまざまなやりとりをすると、window.resizeのようなイベントは、私が本当に必要としないページでトリガーされます。ページ固有のJavaScriptを提供するためのturobolinksの無効化

ページ固有のjavascriptを提供するためにTurbolinksを無効にすることでナビゲーション時間を犠牲にすることは価値があるのですか?または、Jqueryのif文を使用して、IDを使用してページに特定の要素が存在するかどうかを確認してください。

これを行う方法は何ですか?

答えて

1

javascriptなどのページ固有のアセットを配信することはおすすめしません。新しいページに移動すると、別のアセットのダウンロードが開始されるため、ユーザーエクスペリエンスが低下します。

Rails資産パイプラインの全体は、アセットを収集し、それらを縮小し、すべてを1つのファイルに連結して、ユーザーがページに初めて移動したときにブラウザが1回だけダウンロードすることです。

はい、jQueryを使用して、いくつかの動作を実行する特定の要素が存在するかどうかを確認します。

私が有用だと思ったのは、jsの振る舞いをページ固有のものではなく、ウィジェット固有のものとして考えることです。例えばDOM内にソート可能なテーブルがある場合、ソート可能なテーブルウィジェットを初期化します。すなわち、$(".sortable").sortable()

上記の例では、jQuery pluginsというパターンが使用されています。ビヘイビア/ウィジェットのロジックをjQueryプラグインの中に配置します。セレクタが要素を検出したときにのみ実行されます。 $("#nonexistant").something()something()は呼び出されません。 $("#definitelyExists").somethingElse()somethingElse()が呼び出されます。

上記の例では、ある要素が見つかってその関数が呼び出されたときに、その関数のthisが一致する要素を参照し、その上で振舞いロジックを実行できます。

関連する問題