- Ext JS源碼分析與開發實例寶典
- 彭仁夔編著
- 1376字
- 2018-12-30 13:45:15
1.1 Ext JS是什么
Web 2.0風靡時,JS類庫如雨后春筍般涌出,這些框架可以分成兩類:Web前端開發輔助類庫和Web富客戶端開發類庫。前端開發輔助類庫主要是為了在傳統的Web開發方式下提供更方便快捷的JS開發功能,而富客戶端開發類庫則是完全采用JS來構建客戶端,它采用Ajax開發模式來進行前端頁面的設計。
Ajax是DOM、CSS、JavaScript/XML等成熟技術的集合,它本身不是新技術,但該名詞的出現,卻引起眾多程序開發者的關注并在業界掀起重重波瀾。Ajax在Web開發中扮演了全新角色,改變了Web應用的開發模式。
在傳統的Web開發模式下,瀏覽器客戶端是無狀態的,反復進行“請求—刷新—響應”的過程。每當用戶單擊按鈕或鏈接時,瀏覽器就向服務器發送請求,服務器接收到該請求并進行處理,然后將處理完畢的信息發送至瀏覽器展示。在該段響應處理時間中,瀏覽器顯示空白且處在無響應狀態,用戶唯一能做的就是等待。傳統的Web開發中,用戶的每次請求都會返回完整的顯示頁面,瀏覽器充當接收和顯示的工具,它不能決定用戶需要什么、應該請求什么內容。
而Ajax開發模式則相反,它給予了瀏覽器主動權,瀏覽器可以有選擇地向服務器請求其所需的數據,然后根據響應的數據動態修改頁面局部并顯示,減少了網絡傳輸的數據量,加快了瀏覽速度,提升了用戶體驗。
按理說Ajax模式是先進的開發方式,但在實際應用中卻存在種種問題,如不利于搜索引擎的搜索。于是在應用中出現了兩種形式:一種是傳統Web開發和Ajax方式相結合,另一種是富客戶端表現。
目前大多數網絡都采用傳統Web開發為主、Ajax開發為輔、兩者相結合的開發模式。Ajax開發主要應用于如下幾種情況:輸入前提示、關聯下拉選擇及圖片顯示的LightBox效果等。這樣既沒有改變用戶長期以來形成的習慣,同時又提供了較好的用戶體驗。一般來講,該開發模式適用于網站開發,因為它主要是向用戶提供瀏覽信息,且交互不多。
但是富客戶端應用卻需要給用戶提供強大的交互功能,應用最典型的就是網絡辦公系統。它們以前都是桌面應用軟件,從基于客戶端的軟件遷移到了基于瀏覽器的應用。該類應用要求如桌面應用軟件一樣,操作方便且用戶界面(UI)富有表現力。在Ajax尚未出現前,程序員可以通過Flash等胖客戶端來完成。之所以稱為胖客戶端,是因為它們需要瀏覽器安裝相應的插件。而現在采用Ajax來表現富客戶端,只需要瀏覽器即可。
為了能方便快速地開發桌面式的Web富客戶端,出現了大量的Web UI類庫,其中最有名的是Dojo和YUI。Dojo看似一個很有前途的框架,背后有大公司支持,但是其效率等各方面讓人不敢恭維。而YUI成為了Web UI中的主力,但其設計的主要目的是形成分散的UI組件供前端開發者使用,要把這些組件組裝成風格統一的類桌面軟件相當困難。
Ext JS締造者Jack Slocum在使用YUI進行開發時,看到這個巨大市場,在YUI基礎上進一步進行擴展,提供了統一主題,形成絢麗的YUI-Ext類庫,吸引了無數Web開發者的眼球。
YUI-Ext打著開源免費的旗號,無數的前端開發者涌入其社區進行擴展,形成豐富的多國語言文檔和使用實例,漸漸得到廣大開發者的認可。從YUI-Ext到Ext 1.1版本,經歷了一段與YUI脫離的過程,Ext JS不再建立在YUI基礎之上,它提供了自己的基礎庫,名字也進行了變化。
Ext 1.1版本在布局和組件的架構上存在巨大缺陷,Ext 2.0進行了脫胎換骨般的重構。在之后的2.0.2版本中,其開源GPL Licence也改成了LGPL Licence,盡管招來開源社區的猛烈攻擊,但是其用戶群反而越來越大。Ext 3.0版本對2.0版本進行了改進,增加了圖表、Comet、RPC等功能,其余的改進主要體現在內存及性能上。
- Advanced Machine Learning with Python
- TypeScript Essentials
- Java高并發核心編程(卷2):多線程、鎖、JMM、JUC、高并發設計模式
- C/C++算法從菜鳥到達人
- 云原生Spring實戰
- 云計算通俗講義(第3版)
- Julia Cookbook
- Hands-On Microservices with Kotlin
- Cocos2d-x學習筆記:完全掌握Lua API與游戲項目開發 (未來書庫)
- Building Serverless Applications with Python
- C程序設計實踐教程
- INSTANT Silverlight 5 Animation
- 寫給青少年的人工智能(Python版·微課視頻版)
- JavaScript前端開發程序設計教程(微課版)
- Learning Unity Physics