一、Amazing的Angular
AnguarJS的特性
方便的REST: RESTful逐漸成為了一種標準的服務器和客戶端溝通的方式。你只需使用一行javascript代碼,就可以快速的從服務器端得到數(shù)據(jù)。AugularJS將這些變成了JS對象,作為Model,遵循MVVM(modelview view-model)設計模式。
MVVM救星:Model將和ViewModel互動(通過$scope對象),并監(jiān)聽Model的變化??梢酝ㄟ^View來發(fā)送和渲染,由HTML來展示代碼。View可以通過$routeProvider對象來支配,所以你可以深度的鏈接和組織你的View和Controller,將他們變成導航URL。AngualrJS同時提供了無狀態(tài)的Controller,可以用來初始化和控制$scope對象。
數(shù)據(jù)綁定和依賴注入:在MVVM設計模式中的任何東西無論發(fā)生任何事情都自動的和UI通信。這幫助我們?nèi)コ藈rapper,getter/setter方法或者class定義。AngularJS將幫助我們處理所有的這些內(nèi)容,你可以處理數(shù)據(jù)像處理基本javascript數(shù)據(jù)類型般。當然你也可以通過自定義處理復雜數(shù)據(jù)。正因為所有事情的發(fā)生都是自動的,所以你不必調(diào)用一個main()來執(zhí)行你的代碼,而是通過依賴關系來驅動。
可擴展的HTML:大多數(shù)網(wǎng)站都是使用非語義的<div>標簽來搭建的。你需要自己在CSS的class中定義相關的DOM層次結構。而使用AngularJS,你可以像操作XML一樣操作HTML,有無窮的方式來完成標簽和屬性定義。AngularJS通過自己的編譯器和directives來完成相關的設置,而這也是組件實現(xiàn)的基石。
大家接觸jQuery的時候發(fā)現(xiàn),要做事先綁定,取回數(shù)據(jù)要塞回去,塞的過程都是要自己關心的。但是利用Angular,數(shù)據(jù)取回來只要注入變量自動完成了,包括事件綁定。數(shù)據(jù)綁定,MVVM、依賴注入讓你覺得,原先要關心很多東西,現(xiàn)在都不需要關心了,只需更加關心數(shù)據(jù)結構和業(yè)務層,它把我們從繁瑣DOM綁定中解脫出來。
二、組件化之路
組件是對數(shù)據(jù)和方法的簡單封裝,在此樣式類,指令型等具備UI效果的組件,方法等統(tǒng)稱組件。在大型軟件中,組件化是一種共識,它一方面提高了開發(fā)效率,另一方面降低了維護成本。
組件化及組件展現(xiàn)形式
組件化可以有很多事情可以做,比如模板化,現(xiàn)在模板化重任交到前端。第二個是公共樣式庫,第三公共函數(shù)庫,一些業(yè)務組件,模塊化特殊一點。
組件大概展現(xiàn)形式包括: 統(tǒng)一的樣式庫,具有一定HTML結構的代碼片段,具有一部分JS控制的功能函數(shù),具有一定數(shù)據(jù)輸入和輸出的控制。
三、揭開云組件的面紗
云以及云組件概念
云是網(wǎng)絡和互聯(lián)網(wǎng)的一種比喻說法。過去往往用云來表示電信網(wǎng),后來也用來抽象地表示互聯(lián)網(wǎng)和底層基礎設施。
云服務指通過網(wǎng)絡以按需、易擴展的方式獲得所需服務。這種服務可以是IT和軟件、互聯(lián)網(wǎng)相關,也可是其他服務。它意味著計算能力也可作為一種商品通過互聯(lián)網(wǎng)進行流通。把云和組件二者結合則構成了云組件。說到底是希望通過一個統(tǒng)一的控制的東西,把N個項目全部控制在一起。
個推的組件類型
個推的組件類型包括樣式類組件、指令型組件、服務型組件、公共過濾器、公共函數(shù)庫等。
從組件分類里可以發(fā)現(xiàn)專屬CSS是樣式類組件,加上模板就是非常簡單的組件,再把加控制器放進去,就是前面講的具有一定JS和一定邏輯的組件,把link加進去,帶了動畫,數(shù)據(jù)層加進去就具備一定的輸入輸出能力。這個數(shù)據(jù)層可能包含多種,有可能是跟你的頁面控制器交互,也有可能這個組件非常強,自己直接與服務端通信獲取數(shù)據(jù)和傳遞數(shù)據(jù)(當然實際實踐中可能前者更合適當前我們的環(huán)境,后者對統(tǒng)一的接口要求會更高)。
上圖是個推云組件的技術方案?;谇岸巳蠹鸵恍┢渌麕毂热绲乩韲鷻诘慕M件(需要讓百度地圖給我們整個項目對接起來),還有可視化的項目,比如G20期間杭州某景區(qū)人流情況,可視化項目會用到第三方庫。個推利用LESS寫CSS,基于這些開發(fā)云組件。
根據(jù)云組件的一些情況個推得出它的最佳實踐對象就是從具有一定通用交互的表格表單類的管理型系統(tǒng)出發(fā),逐漸包含復雜交互的系統(tǒng)應用,并對響應式具有一定的支持。個推是從做推送服務開始,之后有很多產(chǎn)品線。推送服務就會有很多2B、2C的平臺,這就是管理型的。
上圖是個推云組件采用的目錄結構,用的是gulp打包,CSS里面有wd文件夾,主要放了一些第三方的庫。更關鍵主要還是下面,JS也是一樣,wd是基礎庫。第五個是最重要的,所有組件都放在這個文件夾下,每個組件包含自己專屬的三大件——模板、邏輯、交互、效果和樣式。
基于gulp的打包
云組件展示站點
云組件的使用人員主要分為三大類,第一類是前端使用者(包括泛前端人員),他們需要學習如何使用,快速用組件(須知道Angular的一些基本概念和用法)。第二類是UI設計師、項目和產(chǎn)品等,他們需要觀察效果是否是適合的,根據(jù)庫去設計新的此類系統(tǒng)。第三類是游客和其他人員。
關于云組件的新的思考
云組件牽一發(fā)會動全身,如果云組件機制運用不好比如一個老的組件更新出了個bug,會產(chǎn)生很多負面影響,這時該怎么辦?
回到云的初始之處我們不難發(fā)現(xiàn),當資源隔絕便不會產(chǎn)生這種影響了(云組件正是利用其反向思維達到的便捷),那么我們相對將云組件資源封閉便可以降低這個影響了。這便是版本控制,不同項目引用相應的云,以達到剛才講的兩者之間的平衡,從而成效最優(yōu)化。
所以,只有合理控制住才能真正發(fā)揮云組件的優(yōu)勢。
多個版本下,我們的開發(fā)模式便是就某個項目的云組件升級由該項目決定。因為如果云組件一發(fā)版,所有的項目都升級云組件那這個回測的代價就很高了,況且原有的云組件版本也是夠之前已經(jīng)上線的項目的當前版本用了。
個推的項目體系圖
實際使用中的問題
云組件的發(fā)版有一定的周期性,但實際項目中的需求要快速響應,這時需要采用云組件擴展模塊(模式)開發(fā):基于云組件開發(fā)本項目的組件級別的模塊,對云組件進行擴展或者項目化定制。
四、關于AngularJS的經(jīng)驗與總結
第一、模塊化:隨時準備模塊化抽象,這是一個動態(tài)的過程。
第二、多想想周邊的,超過所止的部分 —— 換位思考,方便下游,倒推上游。
第三、沒有實現(xiàn)不了的效果,只有承受不了的代價。
第四、方法有很多,時間允許的話都可以試試。
Copyright ? 2019- 91gzw.com 版權所有 湘ICP備2023023988號-2
違法及侵權請聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市萬商天勤律師事務所王興未律師提供法律服務