小程序開發(fā)怎樣做好程序優(yōu)化以及未來演進(jìn)方向探討。我們?cè)陂_發(fā)電商小程序項(xiàng)目為什么選擇小程序,而不是公眾號(hào)或App?
小程序開發(fā)公司認(rèn)為微信小程序能實(shí)現(xiàn)的事務(wù),App理論上都能實(shí)現(xiàn);但App能實(shí)現(xiàn)的功能,微信小程序卻受限于框架與微信開放的API,就不一定能做。所以微信小程序、微信及App應(yīng)用的關(guān)系如圖8-1所示。

圖8-1 微信小程序之范疇示意APP(App應(yīng)用集合)未來將包含若干的小程序。小程序最適合實(shí)現(xiàn)單一的、剛需、交互邏輯不太復(fù)雜的功能或服務(wù),足夠輕量與高效。這也符合微信團(tuán)隊(duì)所要求的:用完即走原則。小程序還有一個(gè)極其重要的場(chǎng)景,即作為App前期開發(fā)的一種思路驗(yàn)證?;蛘邔pp的某個(gè)常用功能模塊實(shí)現(xiàn)為小程序,也可以為App引流。但小程序不可能完全替代App,主要原因有:·小程序作為微信內(nèi)場(chǎng)景,如同閱讀文章一樣,同樣會(huì)遇到使用小程序和聊天之間的矛盾,這注定了小程序不能做很重很長(zhǎng)時(shí)間的操作。·企業(yè)應(yīng)用場(chǎng)景較多或者面向的對(duì)象不一樣,則所有的能力都放在微信內(nèi)也不一定合適。·小程序的入口可能會(huì)比較零散。未來大量的小程序出現(xiàn),如何讓用戶保持長(zhǎng)久關(guān)注以及方便快速找到使用,這里可能會(huì)有難度。·公眾號(hào)主要基于HTML5,可以實(shí)現(xiàn)豐富且比較重的功能,開發(fā)較復(fù)雜,但體驗(yàn)上也較小程序要差一些。基于此,深圳小程序開發(fā)公司認(rèn)為我們?nèi)绻请娚唐脚_(tái)項(xiàng)目,選擇小程序來開發(fā)是正確的選擇。
小程序開發(fā)公司關(guān)于未來演進(jìn)方向探討
1.小程序適用場(chǎng)景演進(jìn)
由于小程序是微信內(nèi)場(chǎng)景,必然面臨閱讀公眾號(hào)文章一樣,存在使用小程序與消息聊天之間的矛盾。小程序顯然不適合做非常重、或時(shí)間非常長(zhǎng)的操作。這樣也必然限制小程序的應(yīng)用場(chǎng)景。我們認(rèn)為未來有兩方面可以發(fā)展:一方面提升小程序開發(fā)的能力,另一方面與微信聊天切換的體驗(yàn)進(jìn)一步優(yōu)化。
2.小程序的入口及有效發(fā)現(xiàn)新小程序
小程序未來非常多的情況下,找到自己需要的小程序會(huì)變得越來越難。小程序的入口若繼續(xù)比較深或比較散,那么務(wù)必對(duì)有效找到所需要的小程序提出要求。這一方面的演進(jìn)方向,極有可能是搜索、推薦。
2016年11月18日晚,張小龍?jiān)谄渑笥讶Πl(fā)布一張截圖:寫著“程序猿的一小步,程序的一大步”。該截圖顯示在Android系統(tǒng)上,小程序的入口可上升到手機(jī)桌面。未來不排除iOS系統(tǒng)同樣有可能上升到桌面。
3.小程序的開發(fā)與運(yùn)營(yíng)
小程序的運(yùn)營(yíng)同樣面臨著與公眾號(hào)運(yùn)營(yíng)類似的注冊(cè)、認(rèn)證及打擊問題。由于微信小程序的框架仍在不斷升級(jí)演進(jìn)中,如同吳曉波描述騰訊的快速發(fā)展一樣:“沒有任何一個(gè)攝影師或者記者,能夠準(zhǔn)確地描述乃至定格一座正在噴發(fā)中的火山”,微信團(tuán)隊(duì)仍會(huì)帶來更豐富的組件、開放更豐富的API接口。
小程序開發(fā)公司關(guān)于小程序持續(xù)優(yōu)化方法分享
微信團(tuán)隊(duì)對(duì)Web開發(fā)工具持續(xù)與快速的迭代升級(jí),為小程序開發(fā)者集成更強(qiáng)大的功能及開放更多的API。需要開發(fā)者持續(xù)關(guān)注并應(yīng)用。我們將目前小程序開發(fā)過程中常見的問題及優(yōu)化方法在這里介紹一下。
1.網(wǎng)絡(luò)請(qǐng)求接口域名的限制
解決小程序?qū)W(wǎng)絡(luò)請(qǐng)求接口域名有明確要求。針對(duì)4種服務(wù)器域名(request、socket、uploadfile、downloadfile)每種只能指定一個(gè)合法域名。這樣,對(duì)于后臺(tái)業(yè)務(wù)十分復(fù)雜,并使用不同域名對(duì)業(yè)務(wù)進(jìn)行劃分的應(yīng)用就會(huì)有問題,比如騰訊的自選股,后臺(tái)就十分復(fù)雜。應(yīng)對(duì)這個(gè)限制,騰訊自選股最終通過統(tǒng)一代理方式將多個(gè)域名收斂為一個(gè)域名,由代理層將請(qǐng)求轉(zhuǎn)發(fā)。
2.應(yīng)用內(nèi)部支持https請(qǐng)求
微信小程序文檔中要求wx.request網(wǎng)絡(luò)請(qǐng)求發(fā)起的是HTTPS請(qǐng)求,這對(duì)于有各種接口的應(yīng)用也帶來影響。仍以騰訊自選股為例,通過在統(tǒng)一代理層部署證書支持HTTPS請(qǐng)求,這樣后端RS機(jī)器無(wú)需改動(dòng),成功解決必須是HTTPS請(qǐng)求的問題。iOS規(guī)則自2017.1開始服務(wù)器會(huì)只支持HTTPS協(xié)議的接口,所以,現(xiàn)在開始盡量統(tǒng)一為HTTPS。
3.小程序僅支持5個(gè)并發(fā)的網(wǎng)絡(luò)請(qǐng)求
微信小程序官方文檔中也提到了,同時(shí)打開頁(yè)面有5個(gè)的限制。所以不適合做太深層級(jí)頁(yè)面的交互應(yīng)用。像騰訊自選股這類深層級(jí)頁(yè)面交互的應(yīng)用,可以使用動(dòng)態(tài)接口將頁(yè)面需要的數(shù)據(jù)進(jìn)行合并,通過一個(gè)接口獲取頁(yè)面所需數(shù)據(jù)。
4.多個(gè)頁(yè)面代碼共用問題
小程序頁(yè)面與頁(yè)面之間代碼復(fù)用性差。當(dāng)多個(gè)頁(yè)面共用一個(gè)js或者json的時(shí)候(比如詳情頁(yè)面),需要打包和構(gòu)建工具的支持(如用webpack)。沒有工具就只能自己手工復(fù)制,一旦涉及修改的時(shí)候,要修改多個(gè)頁(yè)面就比較麻煩了。例如:目錄層級(jí)如下,而其實(shí)000343.js和000395.js的文件內(nèi)容完全一樣,就需要用到一些打包工具去輔助生成,否則就要手動(dòng)復(fù)制。/detail000343.wxml000343.js000343.wxss000395.wxml000395.js000395.wxss
5.關(guān)于有狀態(tài)的登錄問題
關(guān)于登錄,目前小程序不支持cookie,而是采用前端利用微信提供的接口獲取登錄憑證code,server端再用code獲取密鑰session_key的方式對(duì)用戶數(shù)據(jù)完成加密解密,整個(gè)過程需要server端對(duì)已有的登錄體系進(jìn)行再次封裝,而本地的登錄態(tài)可以利用微信提供的本地存儲(chǔ)進(jìn)行保存,如圖8-2所示。

圖8-2 小程序有狀態(tài)登錄實(shí)現(xiàn)架構(gòu)
6.開發(fā)目錄與發(fā)布目錄隔離管理
小程序開發(fā)公司建議引進(jìn)webpack將開發(fā)目錄與發(fā)布目錄區(qū)分開來。webpack是一個(gè)前端資源加載/打包工具,它能把各種資源,例如JS(含JSX)、coffee、樣式(含less/sass)、圖片等都作為模塊來使用和處理。通過引入webpack,可以實(shí)現(xiàn)對(duì)es6+sass+postcss的支持,更加靈活的模塊化體系,成功隔離了開發(fā)目錄和發(fā)布目錄,如圖8-3所示。

圖8-3 webpack隔離目錄如圖所示,我們指定發(fā)布目錄到/pub,圖片和CSS抽取合并后生成.wxss文件,例如allmatch頁(yè)面的資源文件全在component/allmatch文件夾內(nèi),打包后生成的allmatch.wxss文件直接放在pub目錄下。由于document、window對(duì)象的限制,Babelruntime相關(guān)、Commonchunk、codespliting、imports-loader等插件都不可用,想接入webpack的開發(fā)者們要引起注意。開發(fā)目錄和發(fā)布目錄分開后,針對(duì)每次開發(fā)目錄代碼變更后,都需要打包文件才能看到代碼效果的問題,這樣我們就需要編寫自動(dòng)更新模塊,保證發(fā)布目錄與開發(fā)目錄效果同步。webpack還有一個(gè)小問題,就是在調(diào)試的過程中會(huì)生成許多不必要的文件,為了解決這個(gè)問題,需要寫了一個(gè)清理發(fā)布文件夾的腳本,每次打包完成后會(huì)自動(dòng)運(yùn)行,清理非最終所需文件。清理不必要文件代碼如下,供大家參考:varfs=require('fs');varfiles=fs.readdirSync('./pub');console.log('cleanfiles:');files.forEach(function(file)){if(file.indexOf('app')===-1&&(file.indexOf('.wxss')!==-1||file.indexOf('.js')!==-1||file.indexOf('.map')!==-1)){fs.unlink('./pub/'+file);console.log(file);}};
7.小程序代碼包大小優(yōu)化問題
小程序的開發(fā)工具支持簡(jiǎn)單的模塊化,page路徑可單獨(dú)設(shè)置,但是提交代碼包的大小限制為1M,而小程序沒有提供相應(yīng)的文件壓縮與合并。我們可以先行壓縮,再提交。
好了,
深圳小程序開發(fā)公司本文關(guān)于“小程序開發(fā)怎樣做好程序優(yōu)化以及未來演進(jìn)方向探討”就分享到這里。如果您需要聯(lián)系深圳的小程序開發(fā)公司為您定制開發(fā)電商小程序項(xiàng)目,請(qǐng)咨詢我們網(wǎng)站在線客服或者撥打我們網(wǎng)站小程序開發(fā)技術(shù)客服聯(lián)系電話,為您提供詳細(xì)的電商小程序定制開發(fā)解決方案。謝謝關(guān)注,博納網(wǎng)絡(luò)編輯整理。