簡體   English   中英

你的rails應用程序如何包含javascript?

[英]How does your rails app include javascript?

我很好奇你的Rails應用程序如何包含javascript。 例如:

  • 你把所有的js代碼打包成一個文件並為所有請求提供服務嗎?
  • 你有條件地加載某些js取決於控制器/動作?
  • 您使用什么工具或技術,即:asset_packager,yui壓縮器,鏈輪,BigPipe啟發實現?

一點背景:我正在開發一個非常JS的大型Rails應用程序。 目前,所有js都被縮小並從單個文件中提供。 這使得事情變得非常方便,因為所有框架和小部件都可以在任何地方使用。 我開始質疑這種方法是讓所有用戶付出他們可能永遠看不到的一些js的價格似乎有點瘋狂。 由於網站的大部分內容通過ajax提供內容,因此使用腳本包含亂碼代碼似乎很糟糕且困難。

有人有任何建議可以分享嗎?

非常感謝!

需要考慮幾個權衡因素:

  • 如果你有一個大的JS文件,那么應該為你的所有頁面緩存它。 但是如果只有幾頁使用JS那么這就不好了。
  • 如果您的頁面不共享JS,那么您可能希望為每個頁面的單個JS使用“按需”加載。 但是你不需要太多的加載,因為每個JS fetch都有自己的開銷。

筆記

  • 確保所有JS都將永遠緩存在您的客戶端上。 在文件名或URL中使用版本號(foo.js?123)
  • 確保JS文件最小化。
  • 確保Web服務器已打開gzip編碼。
  • 您可能希望為您的JS使用低成本的內容交付網絡,例如亞馬遜的Cloudfront或其競爭對手之一。

回答您的具體問題

您是否將所有js代碼打包到一個文件中並為所有請求提供服務?

所有請求都獲得一個JS的大文件,其中包含庫代碼和大多數頁面使用的JS。 某些特定頁面還會獲得額外的JS文件。

你有條件地加載某些js取決於控制器/動作?

是的,對於幾個非常重的JS頁面,這些頁面會獲得一個額外的JS文件。 所有頁面都獲得了reg JS文件,並且它被緩存/可用於所有頁面。

您使用什么工具或技術,即:asset_packager,yui壓縮器,鏈輪,BigPipe啟發實現?

  • YUI壓縮機
  • S3用於提供我的assets.foo.com域名
  • rake任務合並/最小化多個JS源文件

首先,嘗試使用Firefox的這個插件: http//developer.yahoo.com/yslow/ 它將幫助您確定緩慢的來源,並可以分析您的腳本使用情況並提出改進建議。

另外,請查看雅虎關於快速網站最佳做法的文章: http//developer.yahoo.com/performance/rules.html 此建議適用於所有網站,而不僅僅是rails。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM