支付寶十周年推出了一個(gè)新產(chǎn)品:支付寶的十年賬單,我也趕個(gè)時(shí)髦查看了一下我的支付寶十年賬單,哎,感慨自己真是太屌絲了,不過這只是說明我使用淘寶少了,當(dāng)我大規(guī)模網(wǎng)上購物時(shí)候,我很討厭慢速的快遞,所以我大部分消費(fèi)都貢獻(xiàn)給了像京東這樣具有火箭般快遞速度的電子商城了。不過在支付寶十年賬單里,有個(gè)統(tǒng)計(jì)數(shù)據(jù)引起了我的危機(jī)意識(shí),在中國一些偏遠(yuǎn)或者是經(jīng)濟(jì)欠發(fā)達(dá)的省份,電子購物在居民的全部消費(fèi)里的占比比發(fā)達(dá)地區(qū)高多了,而這個(gè)的助推劑居然是移動(dòng)互聯(lián)網(wǎng)在中國的普及,在中國使用智能手機(jī)和平板電腦購物的人們已經(jīng)遠(yuǎn)超使用PC電腦的人們,這點(diǎn)不管是經(jīng)濟(jì)欠發(fā)達(dá)地區(qū)還是經(jīng)濟(jì)發(fā)達(dá)地區(qū)都是如此,而且全世界移動(dòng)互聯(lián)網(wǎng)發(fā)展最好的國家就是中國,這點(diǎn)連美國都不如。
我最近一段時(shí)間又把精力放在了web前端技術(shù)的研究上,本來打算這個(gè)周末再接著這個(gè)主題寫幾篇文章,但是看到支付寶的統(tǒng)計(jì)數(shù)據(jù),一種末日般的危機(jī)感悠然而生,我是不是在研究一個(gè)即將過時(shí),就算不是過時(shí),是不是已經(jīng)快到發(fā)展瓶頸的技術(shù)呢?我如果不做改變,會(huì)不會(huì)在不久的時(shí)間后,我的web前端技術(shù)會(huì)喪失優(yōu)勢呢?因此我今天想要分析下移動(dòng)互聯(lián)網(wǎng)對(duì)web前端技術(shù)的影響。
在移動(dòng)互聯(lián)網(wǎng)出現(xiàn)之前,互聯(lián)網(wǎng)系統(tǒng)都是建立在Browser/Server的架構(gòu)之上,即我們常說的B/S架構(gòu),B/S架構(gòu)其實(shí)是Client/Server即C/S架構(gòu)的一個(gè)子集,而到了移動(dòng)互聯(lián)網(wǎng)時(shí)代,大部分的傳統(tǒng)互聯(lián)網(wǎng)產(chǎn)品都需要我們?nèi)グ惭b一個(gè)APP即一個(gè)客戶端才能使用,這個(gè)客戶端相當(dāng)于PC電腦上的桌面軟件,而每個(gè)客戶端都是某家公司專門為自己定制的,移動(dòng)互聯(lián)網(wǎng)的web應(yīng)用蛻變成了一個(gè)標(biāo)準(zhǔn)的C/S架構(gòu)。說心里話這個(gè)現(xiàn)象的轉(zhuǎn)變讓我很詫異,傳統(tǒng)的PC也是可以裝客戶端,為啥C/S系統(tǒng)在PC端沒有流行起來,卻在移動(dòng)互聯(lián)網(wǎng)下流行了起來,更詫異的是,移動(dòng)設(shè)備和個(gè)人電腦一樣也都是默認(rèn)裝有一個(gè)免費(fèi)的瀏覽器,為啥移動(dòng)端的瀏覽器在很多應(yīng)用里都是靠邊站,人們更加傾向于先麻煩自己一下,下載安裝個(gè)客戶端APP呢?
我今天和一位正在做移動(dòng)互聯(lián)網(wǎng)開發(fā)的朋友聊了下天,我提出了自己的疑問,在一系列扯蛋以后,我似乎有了上面問題的部分答案,我總結(jié)了下,大致如下:
移動(dòng)設(shè)備上網(wǎng)雖然可以使用WiFi,但是很多人在所謂關(guān)鍵時(shí)刻使用移動(dòng)設(shè)備上網(wǎng)時(shí)候都是在2G、3G、4G移動(dòng)網(wǎng)絡(luò)下進(jìn)行的,一般情況下這些網(wǎng)絡(luò)的速度和一般寬帶相比還是太慢,更重要的是這些網(wǎng)絡(luò)的資費(fèi)要貴的多,很多人一個(gè)月使用這些網(wǎng)絡(luò)上網(wǎng)的資費(fèi)比寬帶貴很多,但是享受的流量卻常常不足一般寬帶的10%,在使用移動(dòng)網(wǎng)絡(luò)的背景下移動(dòng)端的B/S網(wǎng)站往往會(huì)加載很慢,流量消耗很大,不管是用戶體驗(yàn)還是經(jīng)濟(jì)效率考慮都會(huì)影響商家產(chǎn)品的競爭力,所以商家需要一種手段改進(jìn)這種局面。
移動(dòng)設(shè)備本身的CPU、內(nèi)存以及存儲(chǔ)設(shè)備和PC電腦相比,差距還是很大,同樣的一個(gè)應(yīng)用在PC電腦上處理假如需要10毫秒,換到移動(dòng)設(shè)備上可能會(huì)需要幾倍的處理時(shí)間,而互聯(lián)網(wǎng)上的應(yīng)用響應(yīng)時(shí)間太慢會(huì)導(dǎo)致大量客戶的丟失,商家為了讓自己應(yīng)用響應(yīng)更快,自然就會(huì)考慮自己定制客戶端,這個(gè)客戶端會(huì)根據(jù)移動(dòng)設(shè)備特點(diǎn)做相應(yīng)的性能優(yōu)化,使應(yīng)用的響應(yīng)速度更快。
移動(dòng)設(shè)備本身的安全機(jī)制沒有PC電腦成熟和完善,移動(dòng)端的瀏覽器和PC電腦的瀏覽器相比,就如同一部簡配閹割的汽車,它遠(yuǎn)遠(yuǎn)沒有PC電腦上的瀏覽器那么強(qiáng)大,特別是一些瀏覽器的安全機(jī)制,移動(dòng)端瀏覽器是遠(yuǎn)不如PC端瀏覽器,這點(diǎn)在智能手機(jī)上非常明顯,例如我們?cè)赑C電腦上購物,到了支付環(huán)節(jié),不管支付工具使用的是各家銀行的網(wǎng)銀還是第三方支付系統(tǒng),都會(huì)在輸入銀行卡密碼,信用卡CVN2時(shí)候使用密碼控件(密碼控件解釋:我們使用網(wǎng)銀時(shí)候如果不安裝密碼控件,密碼輸入框上會(huì)提示我們下載密碼控件,等控件安裝好了后,文本輸入框就會(huì)顯示出來,其實(shí)這時(shí)候的密碼輸入框已經(jīng)不是傳統(tǒng)html里的input密碼輸入框了,而是使用像C這樣的語言編寫的瀏覽器插件模擬的密碼輸入框,我們?cè)谶@樣的密碼框里填寫密碼是非常安全,基本上很難被人截獲),密碼控件會(huì)保證關(guān)鍵的密碼信息的安全,但是這點(diǎn)到了移動(dòng)端瀏覽器就很難做到,我們基本很少見到在手機(jī)瀏覽器里提示我們安裝密碼控件的現(xiàn)象,就算有,瀏覽器也會(huì)調(diào)出相應(yīng)的APP幫助我們完成支付操作,究其根本原因還是移動(dòng)設(shè)備瀏覽器對(duì)這類技術(shù)支持不夠。
在瀏覽器里開發(fā)一套漂亮、用戶體驗(yàn)好、安全的網(wǎng)站還是很有難度的,不過技術(shù)難度都是內(nèi)部問題,對(duì)外都不是問題,問題的關(guān)鍵是分辨率的問題,移動(dòng)設(shè)備屏幕有大有小,這種差異和PC電腦相比簡直是恐怖,而瀏覽器的布局技術(shù)往往又是跟分辨率有著千絲萬縷的關(guān)系,其中最致命的一個(gè)問題就是有的移動(dòng)設(shè)備的屏幕大點(diǎn),它也許可以在一行里顯示出三個(gè)元素,但是到了一個(gè)屏幕小的手機(jī)上一行顯示三個(gè)元素就會(huì)使得頁面嚴(yán)重變形,而瀏覽器的排版技術(shù)行row是一個(gè)基本邊界,元素如果碰到換行顯示就會(huì)打亂整個(gè)布局系統(tǒng),所以在移動(dòng)端瀏覽器開發(fā)一個(gè)能適應(yīng)所有瀏覽器的網(wǎng)頁難度非常之高。此外能在PC電腦上顯示的網(wǎng)頁也許可以適應(yīng)像pad上的瀏覽器,但是到了智能手機(jī)上,這個(gè)網(wǎng)頁就不得不重新開發(fā),重新開發(fā)倒無所謂,最要命的是就算重新開發(fā),小屏幕的網(wǎng)頁很難囊括原來PC瀏覽器網(wǎng)頁所有功能,這和移動(dòng)瀏覽器功能和屏幕太小所致,這樣的結(jié)果會(huì)導(dǎo)致商戶很難將用戶引流到移動(dòng)端,從而喪失了移動(dòng)互聯(lián)網(wǎng)的先機(jī)。
瀏覽器的布局技術(shù)在移動(dòng)端瀏覽器技術(shù)普及上的作用是很關(guān)鍵的,在PC上開發(fā)網(wǎng)頁我們常把布局技術(shù)稱之為html+css技術(shù),其實(shí)在網(wǎng)頁排版里圖片的作用是非常重要,而針對(duì)互聯(lián)網(wǎng)的web網(wǎng)站上圖片的份額更加多,而且常常會(huì)及時(shí)更新,圖片對(duì)于網(wǎng)絡(luò)流量昂貴的移動(dòng)網(wǎng)絡(luò)而言就是人民幣,而瀏覽器是個(gè)公共的平臺(tái),雖然我們有很多技術(shù)手段可以讓很多圖片緩存起來,但是平時(shí)運(yùn)用里重復(fù)加載圖片還是家常便飯,而這樣的流量消耗就是在浪費(fèi)人民幣,這點(diǎn)也同樣會(huì)成為企業(yè)競爭的一個(gè)砝碼,所以使用APP會(huì)對(duì)老百姓更加實(shí)惠,也能讓商家表達(dá)更多對(duì)用戶的體貼。
移動(dòng)設(shè)備由于屏幕較小,因此制作APP界面設(shè)計(jì)的復(fù)雜度比傳統(tǒng)PC電腦要小,這其實(shí)降低了一定的開發(fā)難度,而且APP開發(fā)的界面效果還是比瀏覽器界面要好。此外桌面軟件開發(fā)天然就是響應(yīng)式驅(qū)動(dòng),交互性比網(wǎng)頁更好,而且開發(fā)響應(yīng)式應(yīng)用的難度更低,所以使用APP開發(fā)的應(yīng)用比傳統(tǒng)網(wǎng)頁更加吸引人。
由以上6點(diǎn)我們可以知道了,用戶在移動(dòng)設(shè)備上忽視瀏覽器的原因還是移動(dòng)瀏覽器的給予用戶的產(chǎn)品沒有APP好,孰好孰壞老百姓的心里都是雪亮雪亮的,老百姓是很聰明的,忽悠不到他們的。
在中國移動(dòng)互聯(lián)網(wǎng)發(fā)展迅速,甚至已經(jīng)開始擠壓PC端瀏覽器的份額,而移動(dòng)設(shè)備是廣大用戶的首選,那么這是不是說明web前端技術(shù)到了移動(dòng)互聯(lián)網(wǎng)領(lǐng)域就會(huì)沒落了?為了說明這個(gè)問題,我想談?wù)劄樯对赑C電腦上我們會(huì)選擇瀏覽器開發(fā)商家應(yīng)用,而不是為商家專門開發(fā)個(gè)客戶端軟件呢?很多人說這點(diǎn)是商家出于成本考慮推動(dòng)的,因?yàn)槭澜缟?a href="http://www.socialnewsupdate.com/v/tag/527/" target="_blank">操作系統(tǒng)很多,如果要做客戶端就得要為每個(gè)操作系統(tǒng)開發(fā)一個(gè)客戶端,就算是同一個(gè)操作系統(tǒng),系統(tǒng)升級(jí)后客戶端就得有相應(yīng)的更新,就算操作系統(tǒng)沒有升級(jí),出于安全考慮很多客戶端也會(huì)經(jīng)常升級(jí),而瀏覽器則不同,開發(fā)一套網(wǎng)站就可以打遍天下無敵手,可以不用自己考慮客戶端升級(jí)的問題,其實(shí)用戶怕麻煩本性也幫助了這個(gè)潮流的發(fā)展。那么這個(gè)理由在移動(dòng)互聯(lián)網(wǎng)里還有效嗎?
我們看到的現(xiàn)象得到的答案似乎是無效的,因?yàn)橐苿?dòng)互聯(lián)網(wǎng)下瀏覽器已經(jīng)沒落了,更多人會(huì)選擇APP而非移動(dòng)設(shè)備的瀏覽器,但是PC端瀏覽器大行其道的理由放到移動(dòng)設(shè)備上,仔細(xì)掂量下還是很有市場的。
當(dāng)今世界智能手機(jī)和平板電腦上流行兩大操作系統(tǒng):蘋果公司的IOS和谷歌的android,雖然Android是一個(gè)獨(dú)立的操作系統(tǒng),但是到了各個(gè)具體手機(jī)生產(chǎn)廠商,其手機(jī)上所使用android都會(huì)被或多或少的改寫,甚至有的公司能將其改的面目全非,在移動(dòng)設(shè)備上操作系統(tǒng)的差異處理問題比PC操作系統(tǒng)要嚴(yán)重的多,畢竟個(gè)人PC電腦上微軟的windows操作系統(tǒng)還是一家獨(dú)大,我們只要滿足了windows的客戶端,至少在中國就能滿足90%以上的用戶需求了。APP就和PC電腦上的桌面軟件一樣,開發(fā)它需要調(diào)用大量的操作系統(tǒng)底層API,所以我們想讓自己的應(yīng)用覆蓋到大多數(shù)用戶就不得不為每個(gè)操作系統(tǒng)建立一個(gè)團(tuán)隊(duì),而這些團(tuán)隊(duì)開發(fā)同樣的業(yè)務(wù)功能,只不過是使用的技術(shù)不同而已,結(jié)果會(huì)使得一個(gè)業(yè)務(wù)系統(tǒng)擁有多個(gè)不同版本,造成了人為的系統(tǒng)異構(gòu)性,這種異構(gòu)對(duì)系統(tǒng)的運(yùn)維也產(chǎn)生了很大的影響,不同的系統(tǒng)運(yùn)維需要彼此獨(dú)立的運(yùn)維團(tuán)隊(duì),這樣就增加了企業(yè)的成本壓力。
移動(dòng)設(shè)備并沒有拋棄瀏覽器,瀏覽器的html、css以及javascript技術(shù)不管是那種移動(dòng)操作系統(tǒng)上都是高度的一致,這種一致性甚至超過了PC電腦上不同廠商瀏覽器(移動(dòng)瀏覽器基本都是webkit內(nèi)核)的一致性,通過瀏覽器相關(guān)的開發(fā)技術(shù)消除平臺(tái)的差異在移動(dòng)端任然是可取的,而且現(xiàn)實(shí)中移動(dòng)端的平臺(tái)差異性問題的嚴(yán)重程度其實(shí)已經(jīng)遠(yuǎn)遠(yuǎn)超出了PC平臺(tái),其對(duì)公司造成的成本壓力也是不可言喻的,但是移動(dòng)設(shè)備上瀏覽器的局限性是一個(gè)很難跨越的鴻溝,那我們有辦法解決這個(gè)問題,答案還真有,移動(dòng)端操作系統(tǒng)將瀏覽器底層的接口都做成了API,我們很容易將APP和瀏覽器技術(shù)結(jié)合在一起,因此時(shí)下出現(xiàn)了phoneGap技術(shù),phoneGap技術(shù)核心就是解決不同移動(dòng)操作系統(tǒng)的差異性,使用phoneGap的技術(shù)人員可以很少去考慮操作系統(tǒng)的兼容性問題,而只用關(guān)心瀏覽器技術(shù)就可以開發(fā)出一套在IOS和android都能正常運(yùn)行的APP,這套技術(shù)對(duì)于剛剛創(chuàng)業(yè)的小規(guī)模的互聯(lián)網(wǎng)公司非常有現(xiàn)實(shí)意義,可惜為了兼容不同操作系統(tǒng),卻犧牲了應(yīng)用的性能。
對(duì)于有實(shí)力的大公司又該如何選擇了,大公司的成本壓力會(huì)比小公司小很多,但是高企的成本也是一種潛在的風(fēng)險(xiǎn),大公司面對(duì)這樣的問題,好的解決方案應(yīng)該是減少重復(fù)性勞動(dòng),減輕運(yùn)維壓力,其實(shí)時(shí)下大部分的APP都相當(dāng)于一個(gè)自制的瀏覽器,只不過這個(gè)瀏覽器是帶有公司自有的業(yè)務(wù),因此大公司的做法應(yīng)該是將APP開發(fā)和瀏覽器開發(fā)分離開來,APP開發(fā)主要職責(zé)是做個(gè)框架,不過這個(gè)框架相當(dāng)于新開發(fā)個(gè)瀏覽器,這點(diǎn)和java里SSH框架有一定區(qū)別,而業(yè)務(wù)開發(fā)人員可以只關(guān)心瀏覽器開發(fā)技術(shù),用瀏覽器技術(shù)完成業(yè)務(wù)開發(fā),至于到了業(yè)務(wù)運(yùn)行階段,主要是業(yè)務(wù)開發(fā)人員的事情,這樣就避免了建立重復(fù)開發(fā)的技術(shù)人員團(tuán)隊(duì)同時(shí)也達(dá)到了專業(yè)的人做專業(yè)的事情,運(yùn)維也變得簡單多了,系統(tǒng)穩(wěn)定性和健壯性也增強(qiáng)了,還有個(gè)最關(guān)鍵的好處那就是可以復(fù)用原來的客戶端開發(fā)的技術(shù)人員,這是減輕人力成本的一個(gè)重要手段。
由此說來,web前端在移動(dòng)互聯(lián)網(wǎng)領(lǐng)域并沒有沒落,而且移動(dòng)互聯(lián)網(wǎng)會(huì)給web前端帶來大發(fā)展的機(jī)遇。
在移動(dòng)互聯(lián)網(wǎng)時(shí)代web前端技術(shù)會(huì)變得越來越重要,比以前任何時(shí)候都要重要。但是移動(dòng)互聯(lián)網(wǎng)對(duì)web前端開發(fā)帶來了一個(gè)弊病,這個(gè)弊病就是web前端技術(shù)或許會(huì)變得越來越復(fù)雜。
首先不管哪個(gè)移動(dòng)端操作系統(tǒng),瀏覽器的內(nèi)核技術(shù)達(dá)到了前所未有的統(tǒng)一即大部分都是使用webkit內(nèi)核,由于移動(dòng)互聯(lián)網(wǎng)沒有pc電腦的歷史負(fù)擔(dān),移動(dòng)端的瀏覽器一開始就支持了最新的html5,html5是顛覆性的技術(shù),傳統(tǒng)的web前端開發(fā)人員要重新學(xué)習(xí)很多新的知識(shí)才能掌握它。
Html5技術(shù)提升了瀏覽器做富客戶端開發(fā)的能力,這種提升不是量的變化而是質(zhì)的變化,html5讓web前端在整個(gè)web應(yīng)用里的作用提升到了前所未有的高度,富客戶端將會(huì)更加富有,我們?cè)谝苿?dòng)互聯(lián)網(wǎng)里開發(fā)web前端不能在那么隨意了,而是需要將web前端技術(shù)更加框架化和工程化,那么javascriptMVC技術(shù)會(huì)應(yīng)用更加廣泛,web前后端分離技術(shù)也將更加被人重視,到時(shí)如果有人再說web前端技術(shù)是一個(gè)玩具技術(shù),那么這人就等于還生活在互聯(lián)網(wǎng)的原始社會(huì)了。
移動(dòng)互聯(lián)網(wǎng)對(duì)web前端技術(shù)影響或許還會(huì)導(dǎo)致一個(gè)新的職業(yè)方向的出現(xiàn),這個(gè)方向就是客戶端工程師,雖然移動(dòng)互聯(lián)網(wǎng)發(fā)展迅速,但是移動(dòng)互聯(lián)網(wǎng)想完全取代PC電腦,這種想法還是非常不現(xiàn)實(shí)的,所以在很長時(shí)間里傳統(tǒng)的互聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)會(huì)并行發(fā)展,只不過我們?cè)偃プ龌ヂ?lián)網(wǎng)系統(tǒng)客戶端這塊開發(fā)不僅只要求滿足PC瀏覽器了,也許公司希望能找到一個(gè)能幫忙解決所有客戶端的工程師,當(dāng)然這種客戶端工程師應(yīng)該會(huì)站在web前端技術(shù)之上來消除不過客戶端的差異性,不過到了解決移動(dòng)互聯(lián)網(wǎng)客戶端問題時(shí)候,客戶端工程師或多或少都要了解到不同操作系統(tǒng)APP開發(fā)技術(shù)的細(xì)節(jié),當(dāng)web前端工程師進(jìn)化為客戶端工程師后,對(duì)那種web前端工程師和美工等同的偏見估計(jì)會(huì)更加沒有市場,新型的客戶端工程師需要掌握的技術(shù)門類更多,技術(shù)會(huì)更加全面,在加以富客戶端在web應(yīng)用的重要度提升,客戶端工程師也許在整個(gè)互聯(lián)網(wǎng)行業(yè)會(huì)更加吃香。
移動(dòng)互聯(lián)網(wǎng)的大發(fā)展導(dǎo)致當(dāng)今這個(gè)時(shí)代做一個(gè)大型網(wǎng)站的成本越來越高了,因?yàn)槲覀儾坏貌蝗M足更多的客戶端。回到傳統(tǒng)的PC瀏覽器技術(shù),作為一名前端工程師我也感受到最近幾年傳統(tǒng)的PC瀏覽器技術(shù)也在以前所未有的速度發(fā)展,就連惡心的微軟公司開發(fā)的ie瀏覽器也在發(fā)生著巨大的變化,版本發(fā)布更加頻繁了。html5剛出來時(shí)候有很多朋友說這個(gè)東西不知道猴年馬月會(huì)流行,不要做深入學(xué)習(xí)了,這個(gè)說法發(fā)生在兩年前,但是時(shí)下html5技術(shù)開始以前所未有的速度普及,很多人可能認(rèn)為這是瀏覽器廠商的驅(qū)動(dòng)的,但是我確認(rèn)為根本原因還是移動(dòng)互聯(lián)網(wǎng)上html5的普及間接影響到了PC瀏覽器的發(fā)展,移動(dòng)互聯(lián)網(wǎng)的普及擠壓了傳統(tǒng)PC電腦的部分生存空間,迫使那些原來依仗自己壟斷地位不愿改變的廠商發(fā)生了變化。
移動(dòng)互聯(lián)網(wǎng)的普及對(duì)互聯(lián)網(wǎng)服務(wù)端系統(tǒng)架構(gòu)也會(huì)產(chǎn)生很大的影響,對(duì)于這個(gè)影響的思考還是源自于有一天和一個(gè)即將畢業(yè)的大學(xué)生的聊天,那天他問我自己到底是做web前端開發(fā)還是做移動(dòng)開發(fā)好,當(dāng)時(shí)我們簡單聊了下兩種技術(shù)的差異,他覺得客戶端技術(shù)之間的差異太大,更新太快,他似乎對(duì)這種不可控性感到有點(diǎn)害怕,如是他又問我:移動(dòng)端對(duì)應(yīng)的服務(wù)端技術(shù)和PC瀏覽器所對(duì)應(yīng)的服務(wù)端技術(shù)是不是一樣的,我的回答當(dāng)然是一樣的,所以最后他覺得自己還是從事服務(wù)端開發(fā)比較好。
當(dāng)我寫這篇文章時(shí)候讓我想起了這次聊天,我有個(gè)很大的疑問那就是客戶端的不同會(huì)對(duì)服務(wù)端的技術(shù)實(shí)現(xiàn)產(chǎn)生影響嗎?把這個(gè)疑問放的再大點(diǎn),客戶端的不同會(huì)對(duì)我們整個(gè)web系統(tǒng)架構(gòu),不管是web前端架構(gòu)還是web服務(wù)端架構(gòu)會(huì)產(chǎn)生重大影響嗎?
我前面說到最棒的APP應(yīng)該是APP技術(shù)和瀏覽器技術(shù)結(jié)合,但是APP和服務(wù)端的數(shù)據(jù)交互真的可以全部有瀏覽器技術(shù)完成嗎?如果某些請(qǐng)求不得不用socket完成,那么這種交互模式就和傳統(tǒng)PC的web的服務(wù)端發(fā)生了變化,假如這種情況很多,那么我們就不得不單獨(dú)開發(fā)一套針對(duì)移動(dòng)端的服務(wù)端程序。就算上面的問題不是問題,小屏幕和大屏幕所能容納的信息量是不同的,在PC上有些交互一個(gè)http請(qǐng)求就可以完成,但是到了移動(dòng)端可能不得不拆分成多個(gè)請(qǐng)求協(xié)同完成,這樣的差異也會(huì)導(dǎo)致PC端的服務(wù)端不能復(fù)用,如果這樣的差異很大,我們還是不得不重新開發(fā)一套服務(wù)端,這么說來就算服務(wù)端技術(shù)線路一致,例如都是使用我十分擅長的java,但現(xiàn)實(shí)我們還是不得不做很多重復(fù)勞動(dòng),如果沒有移動(dòng)互聯(lián)網(wǎng)時(shí)候,領(lǐng)導(dǎo)讓我們開發(fā)一個(gè)新網(wǎng)站給我們兩個(gè)月時(shí)間就能完成,那么現(xiàn)在開發(fā)一個(gè)新網(wǎng)站,人力資源不變的前提下,兩個(gè)月我們能完成任務(wù)嗎?到時(shí)這樣的結(jié)果一定是老板和員工一起痛苦了。假如我們真的為不同客戶端對(duì)應(yīng)開發(fā)一套新的服務(wù)端程序,這做法就好比洪水來了我們趕緊修河堤,洪水越大,我們的河堤就做的越高,最后大河成了天河,那天河堤出了點(diǎn)紕漏很有可能大堤潰壩,后果非常嚴(yán)重,治理洪水最好的解決方案應(yīng)該是我們?nèi)绾问鑼?dǎo)洪水,那么在軟件領(lǐng)域這種疏導(dǎo)最后是重新審視我們網(wǎng)站系統(tǒng)的整體架構(gòu),在架構(gòu)設(shè)計(jì)層面就考慮到方方面面,從架構(gòu)上重構(gòu)系統(tǒng)往往會(huì)達(dá)到事半功倍的效果。
其實(shí)從服務(wù)端角度而言,按MVC架構(gòu)思想考慮,客戶端不同影響到的是V層和C層即視圖層和控制層,對(duì)于服務(wù)端而言就是控制層了,那么要減輕服務(wù)端改造壓力,我們必須要將服務(wù)端的控制層和模型層解耦的更加徹底,最好的方式就是采用分布式技術(shù),控制層和模型層變成兩個(gè)獨(dú)立的系統(tǒng),兩個(gè)系統(tǒng)通訊就采用我以前講到的高效遠(yuǎn)程調(diào)用的方式,遠(yuǎn)程調(diào)用使用起來和本地調(diào)用差不多,這樣也減輕了服務(wù)端技術(shù)變遷的壓力。服務(wù)端的控制層和客戶端的關(guān)系太過密切,雖然控制層聽起來很高大上,但在做開發(fā)時(shí)候控制層的發(fā)言權(quán)實(shí)在是小的可憐,所以這里我想先講講視圖層即客戶端的改變,不管移動(dòng)端是怎樣的APP,也不管開發(fā)移動(dòng)APP的技術(shù)有多好,我相信移動(dòng)端的APP一定是一個(gè)強(qiáng)有力的富客戶端,這點(diǎn)到了PC上的瀏覽器客戶端就有很大的不同,雖然當(dāng)今ajax技術(shù)深入人心,但是想在pc瀏覽器上寫出強(qiáng)大的富客戶端是有一定難度的,而且現(xiàn)實(shí)下很多pc瀏覽器端的程序都是非常不健壯和書寫隨意,這主要web前端技術(shù)精通門檻較高,還有大量小公司對(duì)web前端技術(shù)的重視度不夠所致,這樣的現(xiàn)狀就更不要說讓自己的web前端達(dá)到j(luò)avascriptMVC的程度,所以我覺得我們要對(duì)pc瀏覽器端的程序進(jìn)行重構(gòu),將pc端的前端做成javascriptMVC模式,那么javascriptMVC的客戶端就變成了SOA里的一個(gè)服務(wù)了,它和控制層的交互就可以像SOA架構(gòu)里不同系統(tǒng)調(diào)用那樣,定義好服務(wù)接口報(bào)文格式即可,這種做法也非常適合APP,因?yàn)锳PP開發(fā)時(shí)候也只是在需要服務(wù)端數(shù)據(jù)時(shí)候才會(huì)交互,而大部分頁面展示都可以在客戶端本地完成,例如我們可以讓所有的服務(wù)端數(shù)據(jù)交互都已json格式進(jìn)行,那么如果客戶端請(qǐng)求數(shù)據(jù)有變化我們頂多就是增加個(gè)新接口就行,PC端能被復(fù)用到移動(dòng)端的接口還是可以照用不誤。
我相信web前端技術(shù)不會(huì)沒落的,它只會(huì)越來越重要,如果有一天互聯(lián)網(wǎng)開發(fā)里真的出現(xiàn)了客戶端工程師,那也是web前端技術(shù)的升華,web前端會(huì)越來越專業(yè),要求的技能會(huì)越來越高,記得我4年前我打算往web前端發(fā)展時(shí)候,我曾經(jīng)碰到很多技術(shù)難題,當(dāng)我找到解答時(shí)候發(fā)現(xiàn)很多解答卻帶來了更多疑問,疑問源自解答里依賴于瀏覽器內(nèi)核的解釋,如是我在一些技術(shù)群里詢問相關(guān)瀏覽器內(nèi)核的資料,某個(gè)群里有位朋友跟我這么說研究瀏覽器內(nèi)核有啥用,那是老美做的事情,在中國研究這個(gè)一點(diǎn)前途都沒有,只要會(huì)用就行了,“不要沒事找抽,自找麻煩”,引號(hào)差不多是原話了,而前不久我在京東上買到一本講解webkit內(nèi)核的書籍,為了以后看懂他,我最近一段時(shí)間重溫了很多web前端的技術(shù),看看現(xiàn)在的招聘,很多公司都開始大規(guī)模招聘了解瀏覽器內(nèi)核的人才,這件事情讓我有點(diǎn)感慨,學(xué)習(xí)雖然最終都是為了達(dá)到某種功利心,但是要學(xué)好東西,一定得要報(bào)著解決自己疑問的目的,不畏艱險(xiǎn),而不要過多去考慮現(xiàn)在這個(gè)有用如否。
-
工程師
+關(guān)注
關(guān)注
59文章
1590瀏覽量
69480 -
互聯(lián)網(wǎng)
+關(guān)注
關(guān)注
55文章
11249瀏覽量
106381 -
前端
+關(guān)注
關(guān)注
1文章
214瀏覽量
18277
發(fā)布評(píng)論請(qǐng)先 登錄


硬件工程師看了只會(huì)找個(gè)角落默默哭泣#硬件工程師 #MDD #MDD辰達(dá)半導(dǎo)體 #產(chǎn)品經(jīng)理 #軟件工程師
物聯(lián)網(wǎng)工程師為什么要學(xué)Linux?
【華秋DFM】V4.6正式上線:工程師的PCB設(shè)計(jì)“好搭子”來了!

華為助力中國移動(dòng)全面升級(jí)“九州”算力互聯(lián)網(wǎng)



硬件工程師的終極幻想:焊板子焊上人生巔峰!#半導(dǎo)體器件 #硬件工程師 #MDD辰達(dá)半導(dǎo)體
因?yàn)橛⑽腄atasheet,工程師又吵起來了


不同時(shí)期的硬件工程師,最怕發(fā)生的事 #電子工程師 #硬件工程師 #內(nèi)容過于真實(shí) #YXC晶振 #揚(yáng)興科技
云互聯(lián)網(wǎng)是什么意思
穿越地域限制:海外動(dòng)態(tài)IP如何重塑互聯(lián)網(wǎng)體驗(yàn)與機(jī)遇

硬件工程師VS軟件工程師|硬件工程師看到這都淚目了!#硬件設(shè)計(jì) #硬件工程師 #電子工程師 #軟件工程師

評(píng)論