2011-01-24 77 views
4

我見過幾種方法可以讓一個JavaScript文件包含其他javascript文件,但它們看起來都很詭異 - 主要是它們會將javascript文件粘貼到當前文檔的末尾,然後以某種方式加載它。爲什麼JavaScript沒有更好的方式來包含文件?

爲什麼JavaScript不包含簡單的「加載此文件並在其中執行腳本」include指令?這不是這個新概念。我知道每個人都興奮的HTML5與JavaScript等做的一切,但不是會很難,如果你有破解的周圍像這樣的基本功能遺漏?

我看不出它是一個安全問題,因爲一個網頁可以包含儘可能多的JavaScript文件,並且它們都會被執行。

+9

正確,這不是一個語言功能不亞於運行時環境功能。真正的問題是,「爲什麼沒有瀏覽器實現`window.loadScript()`函數?」服務器端JavaScript環境通常具有「包含」或「導入」機制。 – Pointy 2011-01-24 18:25:41

回答

3

當前包含系統(即添加附加腳本標記)的主要問題涉及延遲。由於腳本標籤可以包含點插入代碼,一旦遇到腳本標籤,進一步分析有更多或更少的停止,直到JS下載並執行(儘管瀏覽器可以繼續並行獲取資源)。如果JS決定運行一個包含文件,那麼在這之前你只是增加了更多的延遲 - 現在你甚至無法並行地獲取你的腳本。

基本上,它試圖解決一個不存在的問題(因爲JS已經可以使用額外的腳本標記來完成包含),同時使延遲問題變得更糟。有可以合併JS文件的JavaScript縮小器;你應該考慮使用它們,因爲它們也有助於改善延遲問題。

2

事實上,YUI 3精美的解決了這個問題。隨時檢查出的文檔:http://developer.yahoo.com/yui/3/yui/#use(這是特定的使用功能,做到這一點魔法)。基本上,它的工作原理是這樣的:

  • 您定義模塊
  • 當您使用YUI(),您可以指定哪些模塊的代碼需要
  • 在幕後,YUI檢查,如果這些模塊是核心YUI對象加載。如果不是,它將異步加載到頁面上。

我也讀過,jQuery團隊的工作類似的東西(有人在這裏支持我)。

至於哲學上的爭論,如果這是內置的,它會很好,我認爲這可能是一個很好的功能。另一方面,JavaScript的簡單性也很好。它允許開始程序員做更多的事情。對於我們這些需要它的人來說,像YUI這樣的優秀圖書館每天都在變得更好。

相關問題