這是GMTC的開(kāi)場(chǎng),在主持人簡(jiǎn)單引言后梨睁,連著有三個(gè)議題:“PWA 移動(dòng)Web的現(xiàn)在與未來(lái)”,“LEAN APP Instagram Architecture at Scale”和“Re- 移動(dòng)開(kāi)發(fā)的未來(lái)”主要就是介紹一下現(xiàn)在移動(dòng)開(kāi)發(fā)的一些現(xiàn)狀娜饵。
PWA 移動(dòng)Web的現(xiàn)在與未來(lái)
演講人主要介紹了什么是PWA以及它的一些特性坡贺,然后花了大量篇幅介紹了怎么實(shí)現(xiàn)Service Worker。我這里的筆記只包含了怎么理解PWA,需要了解具體是怎么實(shí)現(xiàn)的遍坟,可以參見(jiàn)文中包含的鏈接拳亿。
演講人首先分析了當(dāng)前的移動(dòng)市場(chǎng),使用的2015年USA愿伴、18+數(shù)據(jù)
- 2014年開(kāi)始肺魁,Mobile用戶(hù)超過(guò)了Desktop的用戶(hù)
- 87%的時(shí)間花在了Apps
- 80%的時(shí)候花在了頭三個(gè)App上
- 用戶(hù)已經(jīng)基本不再下載新的app
這里介紹了PWA(Progressive Web Apps)是設(shè)計(jì)來(lái)徹底的提高Web用戶(hù)的體驗(yàn),這里主要可以包括Reliable隔节、Fast鹅经、Engaging這三點(diǎn):可靠性是指可以提供一個(gè)合理的界面,太過(guò)突兀的錯(cuò)誤示警頁(yè)面就不可仍踅搿瘾晃;速度不用解釋了;以及通過(guò)首頁(yè)幻妓、通知等保持對(duì)用戶(hù)的吸引力蹦误。
其實(shí)聽(tīng)到這里我還不是太怎么理解,后面又看了一些其他資料肉津,感覺(jué)這樣說(shuō)更易懂:
如果用戶(hù)需要强胰,網(wǎng)頁(yè)可以漸進(jìn)式地變成App,比如被添加到主屏幕阀圾、全屏方式運(yùn)行哪廓、離線(xiàn)工作狗唉、推送通知消息等初烘。但它仍是Web而非放到App Store里。
其實(shí)就是說(shuō)分俯,PWA是將Web變成App的一種方法肾筐,這些類(lèi)App的特性都是以漸進(jìn)的方式增強(qiáng)的,也就是說(shuō)可以選擇一部分缸剪。下面的例子是Chrome Dev Summit 2014的Web App吗铐,描述一個(gè)網(wǎng)頁(yè)變?yōu)锳pp的過(guò)程(怎么感覺(jué)就是一個(gè)桌面快捷方式?):
Your First PWA 這個(gè)鏈接可以作為PWA入門(mén)的一個(gè)不錯(cuò)的選擇杏节,它的首頁(yè)更詳細(xì)的介紹了PWA的一些特性:
Progressive - Works for every user, regardless of browser choice because it's built with progressive enhancement as a core tenet.
Responsive - Fits any form factor: desktop, mobile, tablet, or whatever is next.
Connectivity independent - Enhanced with service workers to work offline or on low-quality networks.
App-like - Feels like an app, because the app shell model separates the application functionality from application content.
Fresh - Always up-to-date thanks to the service worker update process.
Safe - Served via HTTPS to prevent snooping and to ensure content hasn't been tampered with.
Discoverable - Is identifiable as an "application" thanks to W3C manifest and service worker registration scope, allowing search engines to find it.
Re-engageable - Makes re-engagement easy through features like push notifications.
Installable - Allows users to add apps they find most useful to their home screen without the hassle of an app store.
Linkable - Easily share the application via URL, does not require complex installation.
PWA有一個(gè)核心基礎(chǔ)就是Service Worker:
你可以看到Service Worker架在了頁(yè)面和網(wǎng)絡(luò)/緩存之間唬渗,這就意味著頁(yè)面不需要直接處理網(wǎng)絡(luò)是否可用的問(wèn)題,也就是使頁(yè)面擁有了某種程度的離線(xiàn)能力奋渔,頁(yè)面不需要直接和服務(wù)器交流镊逝,Service Worker會(huì)根據(jù)情況處理緩存和服務(wù)器訪(fǎng)問(wèn)
A service worker is a script that your browser runs in the background, separate from a web page, opening the door to features that don't need a web page or user interaction. Today, they already include features like push notifications and background sync. In the future, service workers will support other things like periodic sync or geofencing. The core feature discussed in this tutorial is the ability to intercept and handle network requests, including programmatically managing a cache of responses.
The reason this is such an exciting API is that it allows you to support offline experiences, giving developers complete control over the experience.
可以用“caniuse”這個(gè)網(wǎng)站來(lái)查看一下瀏覽器對(duì)Service Worker的兼容性,我自己也試了一下嫉鲸,這是最新的結(jié)果:
可以看到撑蒜,目前只有Chrome和Firefox支持。
如果對(duì)PWA有興趣的話(huà),可用看一下GMTC的PPT座菠,然后就是Your First PWA , Service Worker這個(gè)有不錯(cuò)的介紹狸眼,還有Workbox這個(gè)給PWA用的JS類(lèi)庫(kù)
LEAN APP Instagram Architecture at Scale
總感覺(jué)Instagram的人做的PPT以及演講相對(duì)都有條理些,PPT一般都是簡(jiǎn)明扼要浴滴。
這個(gè)議題主要是用Instagram Android App來(lái)描述什么是一個(gè)Lean App拓萌,在演講人看來(lái),保持app“small and compact”的可度量標(biāo)準(zhǔn)可以包括
- Binary Size
- Build Time
- Java Method Count (Android Only)
1. Brief History of Instagram Android
由這些圖可以看到Instagram的用戶(hù)規(guī)模成長(zhǎng)的很快升略,伴隨著Android客戶(hù)端的代碼Commit量也是呈指數(shù)級(jí)增長(zhǎng)司志。在這種情況下,Instagram實(shí)現(xiàn)了APK同比舊版本的體積變薪嫡(22MB v. 13MB)
2. Challenges in Today's Android Development
碎片化的設(shè)備分布骂远、巨量的用戶(hù)群、永遠(yuǎn)的維護(hù)周期腰根、產(chǎn)品的快速迭代激才,這些都是現(xiàn)今在Android開(kāi)發(fā)過(guò)程中遇到的挑戰(zhàn)
3. Lean App Strategy
Instagram的Lean App的策略主要是分為下面這三個(gè)方向
3.1 Performance
這里提到了依賴(lài)注入(Dependency Injection),查了一下额嘿,說(shuō)是實(shí)現(xiàn)控制反轉(zhuǎn)(Inversion of Control)的一種方式瘸恼,另一種方式是依賴(lài)查找(Dependency Lookup)。
當(dāng)一個(gè)類(lèi)的實(shí)例需要另一個(gè)類(lèi)的實(shí)例協(xié)助時(shí)册养,在傳統(tǒng)的程序設(shè)計(jì)過(guò)程中东帅,通常由調(diào)用者來(lái)創(chuàng)建被調(diào)用者的實(shí)例。然而采用依賴(lài)注入的方式球拦,創(chuàng)建被調(diào)用者的工作不再由調(diào)用者來(lái)完成靠闭,因此叫控制反轉(zhuǎn),創(chuàng)建被調(diào)用者的實(shí)例的工作由IOC容器來(lái)完成坎炼,然后注入調(diào)用者愧膀,因此也稱(chēng)為依賴(lài)注入。
作用:將各層的對(duì)象以松耦合的方式組織在一起谣光,解耦檩淋,各層對(duì)象的調(diào)用完全面向接口。當(dāng)系統(tǒng)重構(gòu)的時(shí)候萄金,代碼的改寫(xiě)量將大大減少蟀悦。
實(shí)用:盡量?jī)?yōu)化堪滨,比如JSON Parser改為Streaming方式吏廉,減少Reflection和Allocation的使用。
簡(jiǎn)化:使用Helper類(lèi)來(lái)處理JSON Parser曙强,減少了Coding工作量福稳。
3.2 Quality
他這里一個(gè)有趣的點(diǎn)是希望對(duì)“bad input”直接Crash而不是掩蓋涎拉,我想他這里的目的應(yīng)該是可以盡可能早的發(fā)現(xiàn)問(wèn)題并修復(fù)(相對(duì)而言瑞侮,我們的產(chǎn)品是無(wú)法容忍Crash的,我們所做的應(yīng)該是避免Crash鼓拧,但是通過(guò)日志或者其他方式半火,快速發(fā)現(xiàn)Crash)。另外他使用強(qiáng)類(lèi)型API季俩,例如委托模型钮糖,各司其職,避免轉(zhuǎn)換產(chǎn)生的問(wèn)題酌住。
從這些數(shù)據(jù)可以看到Instagram真正實(shí)現(xiàn)了敏捷開(kāi)發(fā)的模式店归,小步快走,快速迭代酪我,從這些時(shí)間上顯示得淋漓盡致消痛。
3.3 Codebase Heath
代碼本身的質(zhì)量是一切的基礎(chǔ),經(jīng)常性做重構(gòu)和減少歷史代碼(這里我們就做的遠(yuǎn)遠(yuǎn)不夠都哭,很多refactor的計(jì)劃的優(yōu)先級(jí)都被設(shè)的很低秩伞,被業(yè)務(wù)功能給擠壓了)。
Re- 移動(dòng)開(kāi)發(fā)的未來(lái)
這是來(lái)自微信的一個(gè)議題欺矫,本著語(yǔ)不驚人死不休的套路纱新,這個(gè)分享一開(kāi)始就來(lái)了下面這段話(huà):
嚇得我大吃了一??,當(dāng)然穆趴,作為一個(gè)原生APP開(kāi)發(fā)者脸爱,這個(gè)已經(jīng)見(jiàn)怪不怪了,我們就來(lái)看看他到底說(shuō)了什么未妹。
這里提到了React Native簿废,近幾年最熱的話(huà)題,可以從這些不同的數(shù)據(jù)分析看到教寂,RN發(fā)展十分的迅猛捏鱼。
演講人接著提到了他們自己的微信小程序,包括wepy微信小程序組件化開(kāi)發(fā)框架以及wxParse微信小程序富文本解析自定義組件酪耕。自動(dòng)及年初開(kāi)源后,也得到了快速的增長(zhǎng)轨淌。
基本上迂烁,原生App的開(kāi)發(fā)已經(jīng)受到了各方的挑戰(zhàn)。
2017年移動(dòng)開(kāi)發(fā)趨勢(shì)
技術(shù)熱點(diǎn)
- 原生動(dòng)態(tài)化:東邊日出西邊?
- 組件化递鹉、開(kāi)源化?乎已經(jīng)成為標(biāo)配
- RN盟步、weex等大前端技術(shù)生態(tài)不斷完善
平臺(tái)影響
- Swift 仍在快速發(fā)展,kotlin 也提供了多一種可能
- Apple 和 Google 提高了對(duì)各自 App ?態(tài)的把控力
- 微信小程序正式推出躏结,一個(gè)全新的平臺(tái)
業(yè)務(wù)熱點(diǎn)
- 視頻內(nèi)容形式會(huì)持續(xù)力却盘,在視頻編碼、模式識(shí)別等?方向會(huì)有更加高的技術(shù)要求
- VR/AR:在 Facebook、Google 之后黄橘,Apple 也終于加?入戰(zhàn)局
- bots 類(lèi)應(yīng)?用持續(xù)升溫:Facebook Chatbots升級(jí)兆览、Google Assistant API、智能?響攻占客廳
- AI 技術(shù)加持塞关,更多想象空間
- Brillo 更名 Android Things抬探,Android的成熟生態(tài)會(huì)快速覆蓋IoT
這里詳細(xì)討論了現(xiàn)今移動(dòng)開(kāi)發(fā)的一些趨勢(shì):
在技術(shù)熱點(diǎn)這一塊,國(guó)內(nèi)和美國(guó)還是有一些不一樣帆赢,比如原生動(dòng)態(tài)化這一塊小压,基本上是國(guó)內(nèi)超級(jí)熱,也做出了一些很NB的方案椰于。這篇文章iOS動(dòng)態(tài)化的故事可以作為一個(gè)有趣的參考怠益。
平臺(tái)也在不斷的發(fā)展,比如Apple和Android各自推出了新的編程語(yǔ)言瘾婿。并且也都可以加強(qiáng)對(duì)各自平臺(tái)的掌控力溉痢,比如最近蘋(píng)果對(duì)動(dòng)態(tài)化的新規(guī)定等。
然后在新的業(yè)務(wù)熱點(diǎn)方面主要是各種生活應(yīng)用場(chǎng)景的持續(xù)深入憋他,包括視頻應(yīng)用孩饼、虛擬現(xiàn)實(shí)、智能家具等竹挡。
這也就要求我們必須 持續(xù)關(guān)注新的移動(dòng)技術(shù)趨勢(shì):
框架镀娶、語(yǔ)言、工具
一切應(yīng)用的基礎(chǔ)是最底層的框架語(yǔ)言和工具揪罕,演講人在這里想要強(qiáng)調(diào)的內(nèi)容其實(shí)主要是大前端技術(shù)在移動(dòng)端的應(yīng)用梯码。所謂“人多就是力量大”,哈哈好啰,因?yàn)槭袌?chǎng)上存量的Web開(kāi)發(fā)人員非常多轩娶,相關(guān)的資源和積累也是很豐富,再加上Web天生的跨平臺(tái)功能框往,如何是的Web開(kāi)發(fā)人員更容易的開(kāi)發(fā)移動(dòng)產(chǎn)品就成了一個(gè)需要關(guān)注的要點(diǎn):
開(kāi)發(fā)者生態(tài)
- javascript 的積累鳄抒,開(kāi)源化、社區(qū)化椰弊、組件化
跨平臺(tái)開(kāi)發(fā)
- ?論是 “l(fā)earn once, write everywhere”许溅,還是 “write once, run everywhere” 都在移動(dòng)端上再次變得可能
快速交付
- 出?的動(dòng)態(tài)化能力,快速交付到最終用戶(hù)
低成本開(kāi)發(fā)
- 相比原生App開(kāi)發(fā)秉版,前端開(kāi)發(fā)人員的供給量和成本都有優(yōu)勢(shì)
- 跨平臺(tái)使得?量代碼復(fù)用成為可能贤重,可以削減?力成本投?入
- 替換部分變更頻繁、難度不是很?的需求類(lèi)開(kāi)發(fā)任務(wù)
平臺(tái)清焕、生態(tài)
這個(gè)議題主要解釋了為什么微信還在堅(jiān)持原生開(kāi)發(fā)已經(jīng)開(kāi)源化
為什么堅(jiān)持原?開(kāi)發(fā)
? 微信的人才儲(chǔ)備與技術(shù)儲(chǔ)備
? 對(duì)用戶(hù)體驗(yàn)的追求
? 原生 App 開(kāi)發(fā)依然有最成熟并蝗、最有保障的移動(dòng)開(kāi)發(fā)生態(tài)
為什么堅(jiān)持開(kāi)源化
? 保持團(tuán)隊(duì)和外界的信息通暢
? 保持?效的技術(shù)獲取與傳播渠道
? 打造可被行業(yè)認(rèn)可的精品
? 勇敢祭犯、辯證的看待技術(shù)的挑戰(zhàn)
用戶(hù)
不斷發(fā)掘用戶(hù)新的需求,不斷的使用新的技術(shù)去解決用戶(hù)的實(shí)際問(wèn)題滚停,是我們通過(guò)移動(dòng)平臺(tái)創(chuàng)造用戶(hù)價(jià)值的理念所在沃粗。
為什么視頻類(lèi)移動(dòng)技術(shù)值得被關(guān)注
- 視覺(jué)是人接收信息的主要來(lái)源
- 移動(dòng)網(wǎng)絡(luò)基礎(chǔ)設(shè)施已不再成為瓶頸
- ?戶(hù)對(duì)各個(gè)品類(lèi)視頻應(yīng)用有訴求
- 新的編解碼和模式識(shí)別技術(shù)讓內(nèi)容更加豐富
AI 的想象空間有多大
- AI 會(huì)滲透到所有以往出現(xiàn)過(guò)的?戶(hù)場(chǎng)景
- AI 能夠幫助?戶(hù)了解?己,挖掘更個(gè)性化的需求
- AI 有機(jī)會(huì)?撐更多?命性的新需求場(chǎng)景