小程序的官方開發(fā)文檔已經(jīng)公布,不少開發(fā)者已經(jīng)做過(guò)相關(guān)評(píng)審,本文將從一個(gè)微信資深第三開發(fā)者的角度,深度解析微信小程序開發(fā)。
一個(gè)通用技術(shù)同時(shí)開發(fā)IOS和安卓APP
通過(guò)一個(gè)通用的技術(shù)同時(shí)開發(fā)IOS和安卓?jī)蓚€(gè)版本APP,一直就是開發(fā)者們努力的方向,我們梳理業(yè)內(nèi)相關(guān)的開發(fā)方式:
1. Web APP: 將Native APP僅僅作為一個(gè)瀏覽器使用,里面跑在線或者離線的HTML代碼,H5代碼占比超過(guò)90%。
2.Hybrid APP:用一個(gè)Hybrid框架(如:wex5、bootstrap、cordova等)來(lái)做bridge制作APP,APP中包含了Native代碼,程序的底層框架、核心邏輯、界面框架用Native來(lái)完成,業(yè)務(wù)邏輯用H5完成,H5代碼占比在40%—80%左右。
3.混編APP:部分業(yè)務(wù)也開始使用Native,H5代碼占比繼續(xù)下降,達(dá)到20%—40%左右,例如Ctrip,Alipay。
4.React Native APP:使用頁(yè)面動(dòng)態(tài)化框架開發(fā),可以讓Native通過(guò)執(zhí)行動(dòng)態(tài)化的腳本(可以本地也可以下發(fā)),但渲染出Native的界面和邏輯。最出名的框架就是Facebook的React Native了。
從今天看來(lái),這四種方式仍是各有特點(diǎn),開發(fā)團(tuán)隊(duì)可根據(jù)項(xiàng)目的應(yīng)用場(chǎng)景,開發(fā)周期、開發(fā)成本靈活選擇。
騰訊在這方面也有考量,希望能夠通過(guò)一個(gè)通用技術(shù),解決開發(fā)團(tuán)隊(duì)需要同時(shí)開發(fā)IOS和安卓APP的問(wèn)題,小程序就是這個(gè)背景下誕生的產(chǎn)物。
小程序的技術(shù)實(shí)現(xiàn)
在一個(gè)通用技術(shù),即可完成IOS和安卓APP開發(fā)理念的支撐下,微信推出了小程序,這是一套相對(duì)封閉的技術(shù)體系。讓開發(fā)者能在微信中開發(fā)出接近原生體驗(yàn)的APP,只需要一次開發(fā)就能在IOS和安卓運(yùn)行。下圖將說(shuō)明公眾平臺(tái)小程序是怎么實(shí)現(xiàn)的。
小程序的技術(shù)解析
微信小程序?yàn)殚_發(fā)者提供了一系列工具方便開發(fā)者,編程、調(diào)試、上傳,從開發(fā)來(lái)分析:
編程語(yǔ)言:用于開發(fā)小程序的語(yǔ)言是微信定制的編程語(yǔ)言,這個(gè)語(yǔ)言和前端開發(fā)從業(yè)人員掌握的js、css、html、json并沒(méi)有太大區(qū)別,甚至微信定制的編程語(yǔ)言更加規(guī)范和清晰。南寧網(wǎng)站建設(shè)
小程序存放機(jī)制:上傳到微信服務(wù)端的小程序工程包估計(jì)會(huì)在服務(wù)端進(jìn)行一次預(yù)編譯,轉(zhuǎn)換成可以在微信客戶端運(yùn)行的語(yǔ)言,打成一個(gè)運(yùn)行包。估計(jì)預(yù)編譯出的運(yùn)行語(yǔ)言應(yīng)該盡可能的兼容了HTML5標(biāo)準(zhǔn),如果小程序沒(méi)有調(diào)用微信私有的組件和API,那么小程序理論上在瀏覽器上也是可以打開的。如果小程序調(diào)用了微信私有組件和API,那在微信以外的環(huán)境訪問(wèn)估計(jì)就會(huì)顯示不支持了。每個(gè)微信小程序都有一個(gè)類似666.appservice.open.weixin.qq.com格式的URL地址,通過(guò)這個(gè)URL地址(加參數(shù))應(yīng)該就能訪問(wèn)到小程序。每個(gè)小程序應(yīng)該也都有一個(gè)微信服務(wù)端(微信開放平臺(tái))的微容器對(duì)小程序可以使用的云端資源進(jìn)行監(jiān)控和管理。
小程序下載機(jī)制:用戶首次使用小程序時(shí),微信客戶端會(huì)從服務(wù)端下載小程序運(yùn)營(yíng)行包,下載的過(guò)程成會(huì)很快,用戶不需要等待很長(zhǎng)時(shí)間。因?yàn)?span style="margin: 0px; padding: 0px; max-width: 100%; line-height: 1.6; box-sizing: border-box !important; word-wrap: break-word !important;">開發(fā)者上傳的小程序體積是受限制的,必須在1MB以內(nèi)。
系統(tǒng)對(duì)接機(jī)制:小程序可以通過(guò)x.request接口發(fā)起https請(qǐng)求實(shí)現(xiàn)對(duì)接原有系統(tǒng)。如果原有系統(tǒng)不支持https協(xié)議,就需要對(duì)原系統(tǒng)服務(wù)器重新配置支持。南寧系統(tǒng)開發(fā)
數(shù)據(jù)機(jī)制:傳輸?shù)臄?shù)據(jù)是不經(jīng)過(guò)微信服務(wù)端中轉(zhuǎn)的,開發(fā)者不用十分擔(dān)心太多數(shù)據(jù)被微信拿到,微信只是起到通信協(xié)議中進(jìn)行幾次握手建立連接的作用。而開發(fā)者能從微信中獲得更多的數(shù)據(jù),比如用戶信息、位置、傳播關(guān)系鏈等。
審核機(jī)制:如果每次開發(fā)者更新小程序,微信都要審核的話,微信運(yùn)營(yíng)成本會(huì)很大,因此很有可能會(huì)將這部分成本轉(zhuǎn)嫁給開發(fā)者,估計(jì)小程序的開發(fā)者帳號(hào)和iOS的開發(fā)者帳號(hào)一樣,都是要收費(fèi)。
小程序的產(chǎn)品形態(tài)
小程序在微信中的產(chǎn)品形態(tài)是怎樣的?分享到聊天窗口的小程序可能是這個(gè)樣子的。
說(shuō)其實(shí)訪問(wèn)小程序就是訪問(wèn)一個(gè)標(biāo)準(zhǔn)的url地址,所以小程序理論上是可以在微信中任意傳播的!
可以想象下述場(chǎng)景,微信小程序可以轉(zhuǎn)發(fā)到群,轉(zhuǎn)給朋友、添加收藏、配置到公眾號(hào)菜單,轉(zhuǎn)到朋友圈,這個(gè)傳播能力和訂閱號(hào)的邏輯十分像。
可以預(yù)見(jiàn)的是,小程序的傳播鏈?zhǔn)穷愃朴嗛喬?hào)的傳播鏈,擁有大量社群、個(gè)人粉絲的從業(yè)人員,其小程序更能推廣更為迅速。
小程序的優(yōu)點(diǎn)
小程序的優(yōu)勢(shì)太多了,就重點(diǎn)說(shuō)幾個(gè)吧。
提高開發(fā)效率:小程序大幅度提高了移動(dòng)應(yīng)用的開發(fā)效率,實(shí)現(xiàn)同樣的功能,以前開發(fā)APP需要兩周,小程序開發(fā)只需要兩天,對(duì)于傳統(tǒng)企業(yè)想實(shí)現(xiàn)業(yè)務(wù)的互聯(lián)網(wǎng)化,小程序絕對(duì)是首選。以騰訊云為例,拿到首批內(nèi)測(cè)資格后,不到一周已經(jīng)開發(fā)出4個(gè)案例,同時(shí)有針對(duì)性的提出騰訊云+小程序的解決方案,進(jìn)一步提高小程序開發(fā)效率,詳見(jiàn)www.qcloud.com。
安全性更高:小程序的網(wǎng)絡(luò)請(qǐng)求必須使用http,同時(shí)必須通過(guò)微信審核后才能上線,可信度和安全性更高。之前公眾號(hào)內(nèi)容被微信封了之后,內(nèi)容還是可以通過(guò)url在微信外傳播,但小程序完全部署在微信控制的服務(wù)端,如果被封了將完全不可用。
體驗(yàn)更好:從小程序開發(fā)情況來(lái)看,是支持切換到后臺(tái)運(yùn)行的,能解決公眾號(hào)里,用戶中斷操作從深層頁(yè)面跳出后,還要重新操作很多步才能進(jìn)入之前使用頁(yè)面的問(wèn)題。同時(shí)微信官方也制定了小程序設(shè)計(jì)指南,新開頁(yè)面深度不能超過(guò)5層,保障了用戶的使用體驗(yàn)。
獲客成本低:微信有著移動(dòng)互聯(lián)網(wǎng)最大的用戶流量,蘋果各種機(jī)型的用戶加起來(lái)不到4億,而微信的用戶超過(guò)了8億,有著巨大的流量。借助微信開展的業(yè)務(wù),能基于數(shù)據(jù)分析后的用戶,精準(zhǔn)投放廣告,更容易獲客。
小程序開發(fā)的缺點(diǎn)
開發(fā)擴(kuò)展性受限:小程序開發(fā)有一套私有的技術(shù)規(guī)范,所以開發(fā)擴(kuò)展性上是受限制的,復(fù)雜的界面和控件,還需要微信官方支持。
開發(fā)工具不完善:部分微信自定義語(yǔ)言的文檔說(shuō)明還缺失(Tab控件說(shuō)明缺失);文檔和代碼沒(méi)有導(dǎo)航;開發(fā)工具中預(yù)覽界面自適應(yīng)有問(wèn)題等。
最后我們還收集了各種開源的小程序案例,放在git上請(qǐng)自行參考取用。
http://git.oschina.net/uctoo/Wechat-applet