天天看點

迷你MVVM架構 avalonjs 沉思錄 第1節 土耳其開局

正如一切傳說的開端那樣,有一遠古巨神開天辟地,然後就是其他半神喧賓奪主。我們對最巨貢獻與建立力的遠古巨神懵懂不知,卻對巫師們的話語津津樂道。這同樣也是我們前端的現實。

MVVM是來自.NET,另一個遙遠的界域。前端,相對于後端,怎麼看都是蠻夷之地。JS這個肩負着前端一切互動工作的語言,竟然被視為惡魔,屢屢被屏蔽禁用。些微可用的腳本,變量與函數沒有組織地野蠻生長着,直到JAVA的傳教士為它帶來類與庫。

很長一段時間,人們把類看作是福音。明知這是兩種不同語言,

正如Christ你怎麼念也念不成“基督”,是以真正與類配套使用的接口怎麼也推銷不出去,更甭論什麼設計模式,IOC了。

沒有辦法,人口太少了,想點技能樹,必須要到達某一上限。這經曆了Prototype與jQuery這兩個階段,尤其是後者,前端終于有足夠人力來研究加載器,MVC,MVP,路由器這些非常炫的東西,MVVM隻是這潮流的一部分。

我們合計一下時間,JS前十年(1995-2005)在幹什麼了,基本上什麼也沒有,而同期JAVA在誕生後,在大公司的支援下高唱猛進,忙着做自己的标準庫。其他出名的語言也差不多這樣,标準庫基本立即進入裡程。而JS剛出生就被山寨(JScript),此外被受到VBScript,

ActionScript的威脅。

第二個時期比較很短,2005-2008,

那時世界發生大事了,偉大的DDH大神建立了rails,而作為rails的子項目Prototype.js立馬把JS界那些小喽羅吓呆了。占領了80%市場的Prototypejs無論是在語言底層或DOM上都有大量建樹,降低了入門門檻。這像盛唐之前的隋朝一樣,打下很好的架子。同期,JAVA的Spring打遍天下無敵手。

第三時期,是jQurey引銜的。這個不用多展開,野心膨脹的JSer開始玩其他語言的人玩剩的東西了。子產品化,加載器,MVC,各種字眼滿天飛。MVC在一兩年内跑馬燈時換了好幾代,先是javascriptMVC,然後是backbone,與.NET進得近的人還知道有個叫knockout的東西,ruby的大神跨界過來搞ember,2013年人們也聽到一個叫angular的高富帥架構,其爹是谷歌,于是2014年就基本是它的新聞了。就像jQuery初期,我們知道有mootools這樣有力的競争對手,現在都不知哪裡去。

這是一個新舊交替的時期,代表DOM操作的極緻的jQuery與想隐藏DOM操作的MVVM架構發生沖突了。不禁讓我想起了《土耳其開局》的影評——

那是一場發生在葵地裡的戰争,華麗得讓人目眩:漫無邊際的一片金黃色的向日葵,身着土黃色的俄軍士兵,頭戴紅帽身着藍色軍服的土軍士兵,雙方在向日葵裡時隐時現,互相追殺,槍炮的硝煙遮蔽了湛藍的天空。 那也是一場古典的戰争,發生在兩個沒落強國之間的戰争,都有着華麗的外表。因為他們都身處歐洲的邊緣,已有了華麗的軍服,先進的槍炮;兩個歐洲曾經的霸主,現在已是強弩之末,戰争隻能靠人來堆積,是以是用現代的武器所打的冷兵器之戰。 雙方在巴爾幹及黑海之間,你來我往,打得還頗熱鬧。一共打了二百多年,一直打到第一次世界大戰,兩國之間的戰争大的就有十一次之多,影片中所描寫的戰争大約應該是第十次俄土之戰了。至此以後,強大的奧斯曼帝國走向衰亡,取得勝利的沙皇俄國在一戰之中也迅即倒塌。 ……

時下的jQuery可以看作是土耳其的化身,它是可以自豪,如同土耳其以它那口徑則高達30英寸(約合762mm)的烏爾班巨炮征服君士坦丁堡一樣,振聾發聩。

angular是沙俄,财大氣粗,暴兵極快, 比蟲族更加蟲族。

但DOM操作終歸要退居幕後,無論你做得多好多精,而jQuery也像進化到盡頭,最後在github上沒什麼大動作了。

而angular雖然如日中天,但它最大的要害始終沒有解決——上手難。在浮燥的前端界,JSer的忠誠度是極其低。可能昨天鼓吹backbone的那幫人,今天就是angular的免費水軍。

時局難料,紛戰不已,這樣一個時代有着無盡的可能性。未來的王者可能在這邊角上虎視眈眈。

它繼承了遠古巨神的衣缽,雖然不像其他半神那樣恬噪,但也會發出自己的聲音。那是遠離塵世的樂土,。它在悄悄積聚着自己的力量。