
96
|
第六章
包裝模組
截至目前為止,我們已經介紹完管理相依性和命名空間的實務做法,不過有個一開始提
過的問題還沒解決:該如何降低 HTTP 請求的數量。應用程式所有相依的模組,都必須
從遠端伺服器載入用戶端網頁,即使是用非同步的方式載入這些模組,仍然會對效能造
成嚴重的衝擊,減慢開啟應用程式的速度。
此外,我們還得將模組包裝成傳輸格式,雖然這麼做才能讓載入模組的程序以非同步方
式進行,但卻需要撰寫不少繁瑣的程式碼。有個做法可以一舉解決前述兩項問題:在伺
服器端將所有的模組合併成一個檔案。讓瀏覽器只需下載一個檔案,就可以載入所有必
需的模組,這種做法很明顯的有效率得多。而且現在的建置工具都非常聰明—它們不會
直接把多個模組粗魯的拼在一起,而會遞迴的分析出模組間的相依性關係,並且還會順
便把模組包裝成傳輸格式,讓你可以少寫一些程式。
很多模組建置工具,除了合併模組之外,還提供了自動精簡程式碼的功能,讓需要透過
網路傳輸的資料量變得更少。有些工具甚至還能直接和網頁伺服器整合,在第一次接
收載入模組請求時,自動化的對模組進行各種處理。例如:rack-modulr(
https://github.
com/maccman/rack-modulr
)和 Transporter(
http://github.com/kriszyp/transporter
)。
在 Rack(
http://rack.rubyforge.org
)使用 rack-modulr 的範例如下:
require "rack/modulr"
use Rack::Modulr, ...