近日剛好在無憂裡看到一篇討論指令碼架構的文章,我想談談我對目前幾個指令碼架構的看法(Silverna、Dron Framework、Zerg、script_aculo_us、prototype、bindows、JSVM),(不過我得說一下前提,這裡是在討論架構而非單個功能):TNND,我這麼一寫,把國內外寫架構的人都得罪光了。
Silverna:
1、使用 <script> 標籤太多,使用者不可能知道要實現某個功能而需要載入哪些模組
2、重複載入過多,每個頁面不得不載入數量眾多,字元量巨大的指令碼,作為架構,你不可以把這一步重要的核心交給不可靠的瀏覽器本機快取
3、對單個指令檔的書寫約束太多,架構沒有了開放性
Dron Framework:
1、同上,沒有解決每個頁面載入過的指令碼緩衝
2、命名空間的寫法太死了,沒有 namespace 的封裝性
3、原始碼裡竟然還有中文,對DOM的事件處理竟然不使用監聽模式
Zerg:
1、這個太輕量級了,稱不上架構,只能說是一個指令碼代碼導引器
script_aculo_us:
1、用時間軸和效果庫封裝是它的精髓
2、同一效果在同一對象上的疊加很有問題
3、效果處理完成後,沒有打掃乾淨
prototype:
1、對這個架構即愛又恨,給正統的JS編程帶來了一股新氣,不管是從繼承還是類庫。
2、整一個檔案就是一大類庫,幾十KB的代碼載入起來不小。
3、類庫和基礎類的擴充運算量比較大,導致頁面載入之時有遲純。
4、其實它算不上是一個架構,沒有模組的載入,沒有命名空間,沒有緩衝策略。
bindows:
1、一個成熟的架構,各個方面考慮都比較周全,實現的都很標準。
2、每個類的構造器繼承,成員繼承,析構等都做得非常規範。
3、同上面幾個架構一樣,沒有考慮過如何處理緩衝,以至於載入指令碼嚴重影響頁面的載入。
4、沒有 namespace 的概念。
5、嚴重依賴XML,為了相容每種瀏覽器它是煞費苦心,但效果不甚完美。
6、體積過於臃腫,升級換代慢。
JSVM:
1、緩衝的處理,命名空間的封裝,指令碼模組化的匯入是它的亮點。可以說是繼 bindows 之後的又一個成熟架構。
2、整個架構的封裝太按照JAVA模式,事無巨細地封裝,導致整個架構的臃腫。
3、核心檔案的載入量偏大,雖然有緩衝策略,但能夠分步載入的就不要在核心區載入。
4、整體沒有太大的致命傷,只是各人取向不同。
5、在這個架構的基礎上沒有很多的成熟產品推出,導致別人對架構的認識不足,本身的推廣也不夠。
至於象JSON、DOJO那樣的以功能點為實現目標的東西,在這次評論指令碼架構當中就不做評價了。