◆陳鵬旭 桑園
微信小程序開(kāi)發(fā)系統(tǒng)分析及在校園中具體場(chǎng)景的實(shí)現(xiàn)
◆陳鵬旭 桑園通訊作者
(鄭州西亞斯學(xué)院 河南 451150)
隨著社會(huì)和信息傳播載體的多樣化發(fā)展,人們更加注重信息的收發(fā)效率、傳播速度,也對(duì)信息的整合程度提出了更高的要求。小程序作為一款具有便捷、微小并且不需要下載和安裝就可使用的軟件,使用戶真正體驗(yàn)到了“用完即走”的理念,而這一理念也解決了之前用戶因程序安裝過(guò)多而帶來(lái)的手機(jī)內(nèi)存冗余的問(wèn)題,其次小程序的開(kāi)發(fā)不僅在Android平臺(tái)適用也同樣在iOS平臺(tái)適用,極大地減少了開(kāi)發(fā)者的工作負(fù)擔(dān),也降低了開(kāi)發(fā)成本,這也因此使小程序逐漸被許多開(kāi)發(fā)者和用戶所青睞。除此之外,微信小程序是一款以主流社交軟件微信為載體,并在其基礎(chǔ)上拓展微信功能的軟件,在以微信為基礎(chǔ)之上開(kāi)發(fā)的微信小程序相比于普通手機(jī)APP軟件將更容易被用戶所接受,也更符合互聯(lián)網(wǎng)及社會(huì)發(fā)展的方向。文章將對(duì)微信小程序的系統(tǒng)框架、關(guān)鍵技術(shù)、以及平臺(tái)特點(diǎn)和應(yīng)用前景進(jìn)行研究,為開(kāi)發(fā)者提供一種可行的思路。
微信小程序;軟件;小程序開(kāi)發(fā)
2019年,“酷鵝”用戶研究發(fā)布《2019年微信小程序用戶行為研究報(bào)告》,報(bào)告指出以微信搭建的社交、電商、娛樂(lè)為一體化的微信生態(tài)和板塊發(fā)展形勢(shì)良好。首先,小程序依靠微信的流量以及生態(tài)鏈的聚合、完善,在電商、零售、直播、娛樂(lè)、社交等領(lǐng)域逐步占據(jù)著越來(lái)越多的市場(chǎng),截至2018年底,微信用戶規(guī)模已超6億,越來(lái)越多的開(kāi)發(fā)者也正在使用小程序去代替常規(guī)APP,從而簡(jiǎn)化用戶的使用操作,方便用戶。其次,微信是基于MINA網(wǎng)絡(luò)通信應(yīng)用框架開(kāi)發(fā)的,擁有調(diào)用微信開(kāi)放平臺(tái)API接口、微信事件通知、業(yè)務(wù)請(qǐng)求等功能,相較于基于HTML5技術(shù)和瀏覽器Device Mode實(shí)現(xiàn)前后端交互的動(dòng)態(tài)網(wǎng)頁(yè),小程序擁有自己的一套開(kāi)發(fā)工具,可以實(shí)現(xiàn)更多定制的功能,同時(shí)微信也面向所有組織和開(kāi)發(fā)者開(kāi)放免費(fèi)注冊(cè),并提供開(kāi)發(fā)者平臺(tái)、開(kāi)發(fā)指導(dǎo)、項(xiàng)目管理、調(diào)用組件說(shuō)明以及調(diào)試等功能。
微信小程序采用了最先出現(xiàn)的C/S(Client-Sever)網(wǎng)絡(luò)架構(gòu)模式,通過(guò)wx.request或者socket連接服務(wù)器。C/S結(jié)構(gòu)通常采取兩層結(jié)構(gòu),服務(wù)器負(fù)責(zé)對(duì)數(shù)據(jù)的管理,而客戶機(jī)則負(fù)責(zé)與用戶的交互對(duì)接任務(wù)。C/S架構(gòu)幫助小程序得以實(shí)現(xiàn)高效運(yùn)行和數(shù)據(jù)傳輸、在線幫助、錯(cuò)誤提示等功能,并且該結(jié)構(gòu)的主要特點(diǎn)為增強(qiáng)程序的交互性,具有安全的存取模式,響應(yīng)速度較快等,有利于對(duì)大量數(shù)據(jù)的處理、優(yōu)化高并發(fā)、多線程網(wǎng)絡(luò)擁堵現(xiàn)象,更適合小型的局域網(wǎng),且相較于B/S架構(gòu)更能保證對(duì)用戶群的固定以及對(duì)用戶信息安全的需求可以實(shí)現(xiàn)多方位的保障。C/S概述如圖1所示。
圖1 C/S概述圖
微信小程序前端基于MINA框架搭建,樣式上基于ElementUi樣式庫(kù)。MINA框架是通用的網(wǎng)絡(luò)通信框架,該框架核心為實(shí)時(shí)響應(yīng)的數(shù)據(jù)綁定系統(tǒng),且采用MVVM模式。MINA框架保障了系統(tǒng)的視圖層和邏輯層的數(shù)據(jù)同步,當(dāng)數(shù)據(jù)需要更新時(shí),開(kāi)發(fā)者通過(guò)對(duì)邏輯層的操作則可以快速達(dá)到在視圖層自動(dòng)響應(yīng)并更新的效果,方便了開(kāi)發(fā)者在開(kāi)發(fā)過(guò)程中的操作。MINA框架在小程序中的架構(gòu)如圖2所示。
小程序后端架構(gòu)采用分布式架構(gòu),由開(kāi)發(fā)者對(duì)接微信開(kāi)發(fā)平臺(tái)API接口,通過(guò)調(diào)用來(lái)接收微信服務(wù)器發(fā)送的數(shù)據(jù),并回調(diào)以做出回復(fù)響應(yīng)。在整體小程序后端架構(gòu)中,主服務(wù)器作為核心部分負(fù)責(zé)靜態(tài)資源管理、微信服務(wù)器回調(diào)、API調(diào)用等一系列組件功能,從而實(shí)現(xiàn)小程序開(kāi)發(fā)的部分功能。在一般第三方平臺(tái)使用的后端架構(gòu)中,主服務(wù)器負(fù)責(zé)和云服務(wù)器連接傳送靜態(tài)資源,進(jìn)行對(duì)對(duì)象的存儲(chǔ)及實(shí)現(xiàn)其他云服務(wù)功能,并通過(guò)API和數(shù)據(jù)庫(kù)建立連接傳輸數(shù)據(jù)。業(yè)務(wù)服務(wù)器作為普通的應(yīng)用服務(wù)器提供小程序業(yè)務(wù)接口的實(shí)現(xiàn),通過(guò)分布式中間件配合Redis數(shù)據(jù)庫(kù)實(shí)現(xiàn)和主服務(wù)器部分?jǐn)?shù)據(jù)共享。小程序后端架構(gòu)如圖3所示。
小程序包含一個(gè)描述整體程序的App和多個(gè)描述各自頁(yè)面的Page。小程序整體程序文件結(jié)構(gòu)由App.js、App.WXSS、App.json三部分主要組成,在Pages下又劃分4個(gè)文件:WXML文件、WXSS文件、js文件、json文件,這4個(gè)文件組成視圖層和邏輯層兩部分。其中,App.js作用為小程序邏輯代碼,App.json作用為小程序公共配置,App.wxss作用為小程序公共樣式表,js作用為頁(yè)面邏輯,WXML作用為頁(yè)面結(jié)構(gòu),json作用為頁(yè)面配置、WXSS作用為頁(yè)面樣式表。
圖2 MINA框架在小程序中的架構(gòu)
圖3 小程序后端架構(gòu)
在微信小程序的關(guān)鍵技術(shù)中使用API無(wú)疑是最重要和便捷的一門技術(shù)。在底層框架里,微信開(kāi)發(fā)者工具是一個(gè)基于ne.js,使用API等工具來(lái)實(shí)現(xiàn)底層模塊,使用react、redux等技術(shù)來(lái)實(shí)現(xiàn)用戶交互功能,使代碼具有跨平臺(tái)性。微信開(kāi)發(fā)者平臺(tái)提供了一套非常全面的API調(diào)用說(shuō)明和實(shí)例演示,方便開(kāi)發(fā)者去開(kāi)發(fā)小程序。API按照功能屬性包括:網(wǎng)絡(luò)、用戶管理、媒體、數(shù)據(jù)緩存、設(shè)備、智能、界面、微信卡券、微信門店等接口。
小程序的啟動(dòng)機(jī)制分為兩種情況:冷啟動(dòng)和熱啟動(dòng)。更新機(jī)制可以分為啟動(dòng)時(shí)更新和未啟動(dòng)時(shí)的更新。
在程序未啟動(dòng)的時(shí)候,如果用戶本地曾經(jīng)打開(kāi)過(guò)小程序并且緩存有小程序的歷史版本,再次打開(kāi)小程序的時(shí)候?qū)?huì)默認(rèn)為舊版本,而這一情況造成了一些影響:如開(kāi)發(fā)者在管理后臺(tái)更新了小程序版本,并不能直接影響到正在使用的所有用戶。這種機(jī)制可以看作是對(duì)用戶當(dāng)前使用體驗(yàn)的一種保護(hù),但同時(shí)也可能會(huì)給開(kāi)發(fā)者造成一定困擾。
而另一種情況是在程序啟動(dòng)時(shí)的更新。與許多軟件一樣,小程序在每次冷啟動(dòng)的時(shí)候,系統(tǒng)都會(huì)自動(dòng)檢測(cè)當(dāng)前版本是否是最新版本、是否需要更新。如果檢測(cè)到開(kāi)發(fā)者后臺(tái)新版本的發(fā)布,小程序?qū)?huì)異步下載新版本的組件和代碼,同時(shí)使用客戶端本地緩存的代碼包啟動(dòng),新版本的代碼包則會(huì)等待下一次的程序冷啟動(dòng)時(shí)應(yīng)用。
小程序的生命周期和Android類似,界面線程總共有四個(gè)狀態(tài):初始化的狀態(tài)、首次渲染狀態(tài)、持續(xù)渲染狀態(tài)、結(jié)束狀態(tài)。服務(wù)線程可分為五個(gè)狀態(tài):初始化狀態(tài)、等待激活狀態(tài)、激活狀態(tài)、局部渲染狀態(tài)、后臺(tái)運(yùn)行狀態(tài)。
依靠小程序的開(kāi)發(fā)門檻降低、易推廣、成本低等特性,目前,對(duì)于高校來(lái)說(shuō),學(xué)??梢酝ㄟ^(guò)小程序簡(jiǎn)化辦公流程,將教務(wù)、學(xué)務(wù)等工作移植到小程序上,教師、教輔人員可以通過(guò)手機(jī)隨時(shí)隨地對(duì)學(xué)校通知和工作信息進(jìn)行收發(fā)和查閱,而不必通過(guò)Web端去登錄查詢和操作。對(duì)于學(xué)生的信息錄入工作,使用者可以通過(guò)掃描二維碼登錄微信小程序進(jìn)行注冊(cè)和填寫,同時(shí)在小程序上開(kāi)放學(xué)生交流和接收學(xué)校、學(xué)院通知等功能。進(jìn)一步地,通過(guò)小程序建立以學(xué)院或宿舍為單位的社區(qū),開(kāi)放師生、學(xué)生之間的交互功能,在后端接入數(shù)據(jù)庫(kù)對(duì)學(xué)生、教師信息進(jìn)行統(tǒng)一管理。就使用群體的便利性而言,小程序比手機(jī)APP、Web端網(wǎng)頁(yè)更符合學(xué)生的使用習(xí)慣。對(duì)于網(wǎng)絡(luò)購(gòu)物、交流、娛樂(lè)等社會(huì)服務(wù)性功能的開(kāi)發(fā),小程序?yàn)樵谛W(xué)生開(kāi)發(fā)群體提供了更大的施展空間和低成本需求。因此,小程序的開(kāi)發(fā)與應(yīng)用根植于校園這片土壤,不僅可以簡(jiǎn)化校園管理程序,給同學(xué)們帶來(lái)更加便捷、高效的校園生活體驗(yàn),還能為學(xué)生提供實(shí)戰(zhàn)開(kāi)發(fā)經(jīng)驗(yàn)。
相比于目前市場(chǎng)上常見(jiàn)的基于Android操作系統(tǒng)開(kāi)發(fā)的各種APP來(lái)說(shuō),小程序更加微小、便捷、易于使用和推廣,尤其重要的是小程序的出現(xiàn)解決了目前APP占用手機(jī)內(nèi)存大,啟動(dòng)速度慢等問(wèn)題外,也對(duì)程序占用手機(jī)運(yùn)行內(nèi)存進(jìn)行了優(yōu)化,從而較好地解決了手機(jī)卡頓的問(wèn)題。小程序的出現(xiàn)不僅為用戶帶來(lái)了極大的便利,同時(shí)也對(duì)開(kāi)發(fā)者提供了一個(gè)新的機(jī)遇和一個(gè)全新的市場(chǎng),開(kāi)發(fā)者可以便捷、高效的利用小程序平臺(tái)開(kāi)發(fā)出更低成本的程序,且微信小程序在市場(chǎng)的快速推廣方面具有先天優(yōu)勢(shì),更適合低成本開(kāi)發(fā)、企業(yè)規(guī)模較小、資金不充足的微小企業(yè)、學(xué)生創(chuàng)業(yè)者、學(xué)校組織等應(yīng)用需求。微信小程序只需要通過(guò)分享二維碼就可讓用戶注冊(cè)、登錄、快速體驗(yàn)和獲取信息。
隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的發(fā)展和用戶市場(chǎng)需求的增加,無(wú)論是開(kāi)發(fā)者還是用戶都對(duì)手機(jī)的軟件功能和服務(wù)多樣性提出了更高的要求。而作為新一代的手機(jī)軟件--微信小程序與傳統(tǒng)手機(jī)APP和Web端網(wǎng)頁(yè)相比較,不僅滿足了以上的需求,而且具有更為高效的開(kāi)發(fā)流程;更為全面的開(kāi)發(fā)指導(dǎo)和API說(shuō)明;更為簡(jiǎn)單的系統(tǒng)開(kāi)發(fā)架構(gòu)。同時(shí)結(jié)合小程序本身的特點(diǎn),其符合目前移動(dòng)互聯(lián)網(wǎng)產(chǎn)業(yè)發(fā)展對(duì)新一代手機(jī)軟件所提出的微小、高效、便捷、易操作的需求特性。綜上所述,小程序不僅在不久的將來(lái)會(huì)擁有更好的市場(chǎng)前景和校園發(fā)展空間,而且小程序也為下一代移動(dòng)互聯(lián)網(wǎng)軟件的開(kāi)發(fā)提供了很好的模板和發(fā)展方向。
[1]劉玉佳.微信“小程序”開(kāi)發(fā)的系統(tǒng)實(shí)現(xiàn)及前景分析[J].信息通信,2017(1):260-261.
[2]徐星明.微信小程序第三方平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].山東大學(xué),2020.
[3]王磊,王皓,基于C/S架構(gòu)的機(jī)場(chǎng)地理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].信息技術(shù)與網(wǎng)絡(luò)安全,2020(3):68-72.
[4]李哲,周靈.微信小程序的架構(gòu)與開(kāi)發(fā)淺析[J].福建電腦,2019(12):66-69.
[5]劉紅衛(wèi).微信小程序應(yīng)用探析[J].無(wú)線互聯(lián)科技,2016(23):11-12,40.
[6]郝磊.網(wǎng)絡(luò)商城微信小程序的設(shè)計(jì)與實(shí)現(xiàn)[D].西北民族大學(xué),2019.
[7]張曉燕.微信“小程序”開(kāi)發(fā)的系統(tǒng)實(shí)現(xiàn)及前景[J].電子技術(shù)與軟件工程,2018(12).
[8]騰訊.微信小程序API[EB/OL].2019.