www涩-www黄网站-www黄色-www黄色com-国产免费拍拍视频在线观看网站-国产免费怕怕免费视频观看

App架構(gòu)設(shè)計(jì)經(jīng)驗(yàn)談:技術(shù)選型

2018-03-27 16:47:03 sohu 程序員大咖  點(diǎn)擊量: 評(píng)論 (0)
當(dāng)你做架構(gòu)設(shè)計(jì)時(shí),必然會(huì)面臨技術(shù)選型的抉擇,不同的技術(shù)方案,架構(gòu)也可能完全不同。有哪些技術(shù)選型需要做決策呢?比如,App是純?cè)_發(fā)

當(dāng)你做架構(gòu)設(shè)計(jì)時(shí),必然會(huì)面臨技術(shù)選型的抉擇,不同的技術(shù)方案,架構(gòu)也可能完全不同。有哪些技術(shù)選型需要做決策呢?比如,App是純?cè)_發(fā),還是Web App,抑或Hybrid App?iOS開發(fā),語言上是選擇Objective-C還是Swift?架構(gòu)模式用MVC,還是MVP,或者M(jìn)VVM?下面根據(jù)我的一些經(jīng)驗(yàn)對(duì)某些方面做點(diǎn)總結(jié)分享。

原生/H5

關(guān)于用原生好,還是用H5好的爭(zhēng)論從沒間斷過。但我覺得,脫離了實(shí)際場(chǎng)景來討論孰好孰壞意義不大。就說我們目前正在做的項(xiàng)目,先說明下背景:

  1. 不止要做Android和iOS App,也要做微信公眾號(hào);
  2. H5人員缺乏,只有一兩個(gè)兼職的可用,而且不可控因素很高;
  3. 我們對(duì)原生比較熟;
  4. 開發(fā)時(shí)間只有半個(gè)月。

首先,需求上來說,大部分頁(yè)面用H5實(shí)現(xiàn),可以減少很多工作量。但因?yàn)椴豢煽匾蛩靥撸鴷r(shí)間又短,風(fēng)險(xiǎn)太大。而我們對(duì)原生比較熟,開發(fā)效率比較高,很多東西我也控制得了,風(fēng)險(xiǎn)相對(duì)比較低。而且,我們的主推產(chǎn)品是App,微信屬于輔助性產(chǎn)品,所以,微信要求也沒那么高。因此,我決定以原生為主,H5為輔,App大部分頁(yè)面用原生完成,小部分用WebView加載H5。

另外,WebView加載H5也有兩種模式,一種是加載服務(wù)器的H5頁(yè)面,一種是加載本地的H5頁(yè)面。加載服務(wù)器的H5頁(yè)面比較簡(jiǎn)單,WebView只要load一下URL就可以了。加載本地的H5頁(yè)面,則需要將H5文件存放在本地,包括關(guān)聯(lián)的CSS和JS文件。這種方式相對(duì)比較復(fù)雜,不過,加載速度會(huì)比第一種快很多。我們當(dāng)前項(xiàng)目基于上面考慮,只能選擇第一種方案。

如果人員和時(shí)間資源充足的話,那又如何選型呢?毫無疑問,我會(huì)以H5為主,微信和App都有的頁(yè)面統(tǒng)一用H5,App專有的部分,比如導(dǎo)航欄、標(biāo)題欄、登錄等,才用原生實(shí)現(xiàn)。另外,WebView里的H5有點(diǎn)擊事件時(shí),也許是URL鏈接,也許是調(diào)用JS的,都不會(huì)讓它直接在該WebView里做跳轉(zhuǎn),需要攔截下來做些原生處理后跳轉(zhuǎn)到一個(gè)新的原生頁(yè)面,原生頁(yè)面也許嵌入另一個(gè)WebView,用來展示新的H5頁(yè)面。這是簡(jiǎn)單的例子,關(guān)于Hybrid App詳細(xì)的設(shè)計(jì),以后再講。另外,關(guān)于H5,絕對(duì)是大趨勢(shì),強(qiáng)烈建議所有App開發(fā)人員都去學(xué)習(xí)。

Objective-C/Swift

我在項(xiàng)目中選擇了Swift,主要基于三個(gè)原因:

  1. Swift真的很簡(jiǎn)潔,生產(chǎn)效率很高;
  2. Swift取代Objective-C是必然的趨勢(shì);
  3. 目前iOS只有我一個(gè)人開發(fā),不需要顧慮到團(tuán)隊(duì)里沒人懂Swift。

如果你的團(tuán)隊(duì)里沒人懂Swift,那還是乖乖用Objective-C吧;如果有一兩個(gè)懂Swift的,那可以混合開發(fā),并讓不懂的人盡快學(xué)會(huì)Swift;如果都懂了,不用想了,直接上Swift吧。

當(dāng)語言上選擇了Swift,相應(yīng)的一些第三方庫(kù)也面臨著選型。比如,依賴庫(kù)管理,Objective-C時(shí)代大部分用CocoaPods,Swift時(shí)代,我更喜歡Carthage。Carhage是用Swift寫的,和CocoaPods相比,輕耦合,也更靈活。我個(gè)人也不太喜歡CocoaPods,使用起來比較麻煩,耦合性也較高,我使用過程中也經(jīng)常出問題,而且還總是不知道該怎么解決,要移除時(shí)也是非常麻煩。

再推薦幾個(gè)關(guān)于Swift的第三方庫(kù):

  1. Alamofire:Swift版本的網(wǎng)絡(luò)基礎(chǔ)庫(kù),和AFNetworking是同一個(gè)作者
  2. AlamofireImage:基于Alamofire的圖片加載庫(kù)
  3. ObjectMapper:Swift版本的Json和Model轉(zhuǎn)換庫(kù)
  4. AlamofireObjectMapper:Alamofire的擴(kuò)展庫(kù),結(jié)合了ObjectMapper,自動(dòng)將JSON的Response數(shù)據(jù)轉(zhuǎn)換為了Swift對(duì)象

MVC/MVP/MVVM

先分別簡(jiǎn)單介紹下這三個(gè)架構(gòu)模式吧:

  • MVC:Model-View-Controller,經(jīng)典模式,很容易理解,主要缺點(diǎn)有兩個(gè):
    1. View對(duì)Model的依賴,會(huì)導(dǎo)致View也包含了業(yè)務(wù)邏輯;
    2. Controller會(huì)變得很厚很復(fù)雜。
  • MVP:Model-View-Presenter,MVC的一個(gè)演變模式,將Controller換成了Presenter,主要為了解決上述第一個(gè)缺點(diǎn),將View和Model解耦,不過第二個(gè)缺點(diǎn)依然沒有解決。
  • MVVM:Model-View-ViewModel,是對(duì)MVP的一個(gè)優(yōu)化模式,采用了雙向綁定:View的變動(dòng),自動(dòng)反映在ViewModel,反之亦然。

架構(gòu)模式上,我不會(huì)推崇說哪種模式好,每種模式都各有優(yōu)點(diǎn),也各有極限性。越高級(jí)的模式復(fù)雜性越高,實(shí)現(xiàn)起來也越難。最近火熱的微服務(wù)架構(gòu),比起MVC,復(fù)雜度不知增加了多少倍。

我在實(shí)際項(xiàng)目中思考架構(gòu)時(shí),也不會(huì)想著要用哪種模式,我只思考現(xiàn)階段,以現(xiàn)有的人力資源和時(shí)間資源,如何才能更快更好地完成需求,適當(dāng)考慮下如何為后期擴(kuò)展或重構(gòu)做準(zhǔn)備。就說我前段時(shí)間分享的Android項(xiàng)目重構(gòu)之路系列中講的那個(gè)架構(gòu),確切地說,都不屬于上面三種架構(gòu)模式之一。

寫在最后

技術(shù)選型,決策關(guān)鍵不在于每種技術(shù)方案的優(yōu)劣如何,而在于你團(tuán)隊(duì)的水平、資源的多寡,要根據(jù)實(shí)際情況選擇最適合你們當(dāng)前階段的架構(gòu)方案。當(dāng)團(tuán)隊(duì)拓展了,資源也充足了,肯定也是需要再重構(gòu)的,到時(shí)再思考其他更合適更優(yōu)秀的方案。

大云網(wǎng)官方微信售電那點(diǎn)事兒

責(zé)任編輯:售電衡衡

免責(zé)聲明:本文僅代表作者個(gè)人觀點(diǎn),與本站無關(guān)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實(shí),對(duì)本文以及其中全部或者部分內(nèi)容、文字的真實(shí)性、完整性、及時(shí)性本站不作任何保證或承諾,請(qǐng)讀者僅作參考,并請(qǐng)自行核實(shí)相關(guān)內(nèi)容。
我要收藏
個(gè)贊
?
主站蜘蛛池模板: 欧洲女同互慰在线视频 | 国产99视频精品一区 | 免费一级在线 | 国产欧美亚洲三区久在线观看 | 亚洲国产成人精品91久久久 | 三级理论手机在线观看视频 | 男操美女| 99精品欧美| 老湿菠萝蜜在线看 | 波多野结衣一级 | 成人网中文字幕色 | 三级毛片免费观看 | 成人男女网18免费91 | 国产高清国产专区国产精品 | 精品一区二区三区五区六区 | 久久频这里精品香蕉久久 | 三上悠亚免费一区二区在线 | 高清国产一级精品毛片基地 | 亚洲人成免费网站 | 久久国产成人精品国产成人亚洲 | 美女视频很黄很a免费国产 美女视频黄.免费网址 | 一个人看的www日本视频 | 亚洲国产成人久久综合一区77 | 99视频只有精品 | 黑人黄色毛片 | 欧美高清视频手机在在线 | 久草97 | 国产精品正在播放 | 久草在线中文视频 | 一级香蕉免费毛片 | 久久精品最新免费国产成人 | 免费三级网站 | 久久综合久久88 | 手机在线黄色网址 | 免费看欧美xxx片 | 欧美极品大肚孕妇孕交 | 中国黄色一级毛片 | 日本免费在线一区 | 美国一级片在线观看 | 国产第一页久久亚洲欧美国产 | 在线免费观看毛片网站 |