殷鳳梅 靜育玉
摘要:為了方便寵物主獲取飼養(yǎng)寵物的科學(xué)知識(shí),開發(fā)了一個(gè)基于微信小程序的助寵系統(tǒng)。該系統(tǒng)使用微信提供的MINA框架,選用JSON數(shù)據(jù)庫(kù),利用云開發(fā)控制臺(tái)手動(dòng)創(chuàng)建并引用數(shù)據(jù)庫(kù),通過用戶的OpenID判斷用戶的身份權(quán)限,構(gòu)造正則表達(dá)式實(shí)現(xiàn)模糊查詢。使用該系統(tǒng)不僅能獲取飼養(yǎng)寵物的科學(xué)小知識(shí),還能查詢與寵物相關(guān)的信息,這樣可以讓更多的家庭愛護(hù)好寵物,讓更多的寵物健康快樂地生活。
關(guān)鍵詞:微信小程序;云開發(fā);信息查詢;寵物健康
中圖分類號(hào):TP311.1? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2022)14-0037-03
1 引言
據(jù)《2020年中國(guó)寵物行業(yè)白皮書》(消費(fèi)報(bào)告)統(tǒng)計(jì),2020年全國(guó)城鎮(zhèn)的貓犬?dāng)?shù)量已多于一億只,相對(duì)2019年增長(zhǎng)了1.7%,隨著寵物數(shù)量的不斷增長(zhǎng),寵物在家庭中的身份地位也在提高,寵主們也越來越多地關(guān)注自家的寵物,然而給寵物看病貴已成為2020年最大的養(yǎng)寵痛點(diǎn)[1]。目前寵物醫(yī)療成本高,短時(shí)間內(nèi)難以降低,但是如果人們能在日常的生活中更加科學(xué)健康地飼養(yǎng)寵物,也許就能減小寵物患病的概率。通過傳統(tǒng)的線下咨詢方式很難及時(shí)、高效地獲取寵物相關(guān)知識(shí)。隨著“互聯(lián)網(wǎng)+”的快速發(fā)展,飼養(yǎng)寵物的服務(wù)系統(tǒng)和網(wǎng)絡(luò)平臺(tái)逐漸增多[2-5]。在這些系統(tǒng)和平臺(tái)中,很少有涉及寵物心理健康方面的知識(shí)。但是寵物也會(huì)有自己的心理情緒,若不及時(shí)地發(fā)現(xiàn)和處理,寵物可能會(huì)產(chǎn)生嚴(yán)重的心理問題,如:抑郁癥、分離焦慮癥、狂躁癥等,甚至?xí)?dǎo)致嚴(yán)重的生理疾病?;诖耍O(shè)計(jì)“助寵”小程序,給寵主提供一個(gè)獲取養(yǎng)寵知識(shí)干貨的平臺(tái),讓寵物主快速精準(zhǔn)地獲取與寵物健康相關(guān)的信息,滿足寵物主對(duì)寵物生理健康、心理健康等知識(shí)的渴求。
小程序依附于微信平臺(tái),使用時(shí)用戶只需采用掃碼等方式打開,無須下載軟件;退出時(shí)可自動(dòng)進(jìn)行隱藏,無須其他操作[6]。微信聯(lián)合騰訊云提供的云開發(fā)服務(wù),采用了Serverless開發(fā)模式,涵蓋了云函數(shù)、數(shù)據(jù)庫(kù)、CDN (Content Delivery Network,內(nèi)容分發(fā)網(wǎng)絡(luò))、存儲(chǔ)和云調(diào)用能力。開發(fā)者無須擔(dān)心服務(wù)器購(gòu)買、環(huán)境搭建、域名備案、上線運(yùn)維等問題[7],極大地弱化了開發(fā)難度。
“助寵”小程序使用微信小程序提供的MINA (Multipurpose Infrastructure for Network Applications) 框架進(jìn)行開發(fā)。前端采用 WXML (WeiXin Markup Language)、WXSS (WeiXin Style Sheets)、JavaScript語言和JSON(JavaScript Object Notation)數(shù)據(jù)格式,后端采用云開發(fā)技術(shù),通過云數(shù)據(jù)庫(kù)實(shí)現(xiàn)信息的集中存儲(chǔ)和管理,借助云存儲(chǔ)實(shí)現(xiàn)圖片的存儲(chǔ),使用云函數(shù)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的訪問。
2 相關(guān)技術(shù)介紹
2.1 微信小程序
1)代碼構(gòu)成
小程序代碼由JSON配置文件(.json后綴)、WXML模板文件(.wxml后綴)、WXSS樣式文件(.wxss后綴)以及JS腳本邏輯文件(.js后綴)構(gòu)成。JSON是一種數(shù)據(jù)格式,起到靜態(tài)配置的作用。配置文件通常分:小程序配置(app.json)、工具配置(project. config.json)和頁(yè)面配置(page.json)。WXML模板類似HTML,用來描述某個(gè)頁(yè)面的結(jié)構(gòu),WXSS樣式用于描述WXML中的組件樣式,JS交互邏輯用來實(shí)現(xiàn)用戶的交互功能,即處理事件的響應(yīng)[8]。
2)MINA框架
MINA框架是一個(gè)可以及時(shí)響應(yīng)的數(shù)據(jù)綁定系統(tǒng),系統(tǒng)分為邏輯層(App Service)和視圖層(View),如圖1所示。邏輯層基于JavaScript來實(shí)現(xiàn),視圖層由WXML和WXSS來描述。開發(fā)者僅需關(guān)注數(shù)據(jù)和邏輯,視圖層和邏輯層之間的交互通過數(shù)據(jù)傳輸和事件系統(tǒng)來實(shí)現(xiàn)。MINA框架不僅提供了基礎(chǔ)的組件以及豐富的微信原生應(yīng)用程序接口API(Application Programming Interface),還對(duì)整個(gè)小程序的頁(yè)面路由進(jìn)行管理[9]。因此,開發(fā)者使用MINA框架時(shí),不用去處理線程并發(fā)與底層I/O等相對(duì)復(fù)雜的工作,可以將更多關(guān)注點(diǎn)放到業(yè)務(wù)設(shè)計(jì)和開發(fā)中去[10]。
2.2 云開發(fā)
1)數(shù)據(jù)庫(kù)
云開發(fā)提供了既可在小程序端操作,也可在云函數(shù)中讀寫的JSON數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)中的每條記錄都可以看作是一個(gè)JSON格式的對(duì)象,每個(gè)數(shù)據(jù)庫(kù)中可存在多個(gè)JSON數(shù)組,每個(gè)數(shù)組認(rèn)為是一個(gè)集合。JSON數(shù)據(jù)庫(kù)與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)的概念對(duì)應(yīng)關(guān)系如表1所示。
數(shù)據(jù)庫(kù)API提供了增、刪、改、查的功能。開發(fā)者在小程序內(nèi)可直接調(diào)用小程序端API去處理數(shù)據(jù)庫(kù)中的非敏感數(shù)據(jù),也可在云函數(shù)里通過調(diào)用服務(wù)端API對(duì)數(shù)據(jù)庫(kù)進(jìn)行更加私密安全的操作。
2)存儲(chǔ)
云開發(fā)提供了一塊開發(fā)者可以在小程序端和云函數(shù)端使用API進(jìn)行存儲(chǔ)操作的空間。云存儲(chǔ)提供了高可用、高穩(wěn)定、強(qiáng)安全的云端存儲(chǔ)服務(wù),可以存儲(chǔ)任意數(shù)量、任何形式的數(shù)據(jù),并且提供了可視化的管理功能,便于操作。
3)云函數(shù)
云函數(shù)是在云端(服務(wù)器端)運(yùn)行的函數(shù),開發(fā)者無須購(gòu)買服務(wù)器,僅需在開發(fā)者工具內(nèi)進(jìn)行編寫,然后部署到云端,通過小程序內(nèi)提供的專用API進(jìn)行調(diào)用。云函數(shù)的寫法類似于JavaScript,代碼運(yùn)行在云端的Node.js 中,可在云函數(shù)中通過使用云函數(shù)后端SDK提供的數(shù)據(jù)庫(kù)和存儲(chǔ)API對(duì)數(shù)據(jù)庫(kù)和存儲(chǔ)進(jìn)行操作。
微信小程序和云開發(fā)之間的邏輯關(guān)系如圖2所示。
3 軟件相關(guān)設(shè)計(jì)
3.1 小程序總體結(jié)構(gòu)設(shè)計(jì)
小程序前端主要由“首頁(yè)”“商品”“信息”“我的”四個(gè)頁(yè)面組成,當(dāng)啟動(dòng)“助寵”小程序后,用戶默認(rèn)進(jìn)入首頁(yè),并根據(jù)是否管理員來決定是否顯示特殊功能。
“首頁(yè)”主要由寵物信息圖片輪播圖和熱點(diǎn)推送文章組成;在“商品”頁(yè)面中,用戶可以瀏覽商品以及通過關(guān)鍵字進(jìn)行商品或店鋪的查詢;在“信息”頁(yè)面中,可以看到寵物科學(xué)飼養(yǎng)小知識(shí)、寵物病狀的分析等,也可實(shí)現(xiàn)寵物相關(guān)信息的查詢功能;在“我的”頁(yè)面中,可以實(shí)現(xiàn)寵物領(lǐng)養(yǎng)小程序的跳轉(zhuǎn)功能,也可以聯(lián)系客服進(jìn)行咨詢或是意見反饋。小程序總體結(jié)構(gòu)框架如圖3所示。
3.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
根據(jù)小程序所需實(shí)現(xiàn)的功能,在數(shù)據(jù)庫(kù)中設(shè)計(jì)了5個(gè)集合:root、swiper、shop、skill、message來存儲(chǔ)相關(guān)的數(shù)據(jù),每個(gè)集合都由若干個(gè)字段組成,5個(gè)集合具體說明如下:
root:存放管理員賬戶信息,用于判斷是否顯示特殊功能。
swiper:存放首頁(yè)中的輪播圖片信息,用于輪播圖的顯示。
shop:存放商品及店鋪相關(guān)的信息,用于顯示和查詢。
skill:存放寵物飼養(yǎng)相關(guān)的信息,用于顯示和查詢。
message:存放首頁(yè)推送文章信息,用于顯示文章。
4 主要功能實(shí)現(xiàn)
4.1 小程序的目錄結(jié)構(gòu)和頁(yè)面
將不同的文件存放在不同的文件夾中,可以便于項(xiàng)目的管理,如圖4所示。根據(jù)需求分析,設(shè)計(jì)對(duì)應(yīng)的頁(yè)面,如表2所示。
4.2 數(shù)據(jù)庫(kù)、云函數(shù)
使用微信開發(fā)者工具創(chuàng)建云函數(shù)并部署,通過如下代碼在小程序端進(jìn)行調(diào)用來獲取用戶OpenID以及對(duì)數(shù)據(jù)庫(kù)進(jìn)行刪除、查詢、修改等操作。
wx.cloud.callFunction({
name: 'XXX',
data: {
value: X,
}
}).then(res => {
…
}).catch(err => {
…
})
通過云開發(fā)控制臺(tái)手動(dòng)創(chuàng)建數(shù)據(jù)庫(kù),并通過代碼const db = wx.cloud.database( )來獲取數(shù)據(jù)庫(kù)的引用,對(duì)其進(jìn)行條件查詢、刪除、修改操作。
4.3 判斷管理員權(quán)限
當(dāng)用戶進(jìn)入“助寵”小程序時(shí),小程序會(huì)調(diào)用云函數(shù)獲取用戶的OpenID,通過對(duì)數(shù)據(jù)庫(kù)中root集合中的記錄進(jìn)行查詢,若此用戶的OpenID在集合中,則斷定為管理員,會(huì)顯示特定的功能按鈕,否則不顯示。
4.4 查詢功能
點(diǎn)擊“商品”和“信息”界面中的搜索框可以跳轉(zhuǎn)到信息查詢界面,輸入要查詢內(nèi)容的關(guān)鍵字,可以在頁(yè)面中出現(xiàn)多條符合條件的記錄,任意點(diǎn)擊一條記錄可以查看到記錄的詳細(xì)信息。查詢功能的實(shí)現(xiàn)原理如下:首先將從輸入框中獲取的值作為關(guān)鍵字,將關(guān)鍵字作為參數(shù)調(diào)用云函數(shù),云函數(shù)通過云開發(fā)中的模糊查詢來找到符合條件的記錄,其中模糊查詢是通過構(gòu)造正則表達(dá)式來實(shí)現(xiàn)的,關(guān)鍵代碼如圖5所示。
5 結(jié)束語
采用云開發(fā)實(shí)現(xiàn)的“助寵”小程序,給寵物主提供了一個(gè)固定的線上寵物信息獲取平臺(tái)。寵物主可通過該平臺(tái)快速定位到所需求的信息,了解到寵物相關(guān)的知識(shí)。該平臺(tái)旨在于普及寵物健康知識(shí)、分享寵物疾病的預(yù)防和治療手段,希望能讓更多的人了解到、關(guān)注到寵物的健康問題,讓更多的寵物可以擁有健康快樂的生活。
參考文獻(xiàn):
[1] 狗民網(wǎng).2020年中國(guó)寵物行業(yè)白皮書[EB/OL].(2021-01-25)[2021-11-07].https://www.shangyexinzhi.com/article/3253029.html.
[2] 董發(fā)志,丁洪偉,袁洪,等.基于微信平臺(tái)的寵物喂養(yǎng)遠(yuǎn)程控制系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)[J].實(shí)驗(yàn)科學(xué)與技術(shù),2019,17(2):1-5.
[3] 葛昊東.新零售模式社區(qū)寵物店服務(wù)系統(tǒng)設(shè)計(jì)[J].電子技術(shù)與軟件工程,2020(4):60-61.
[4] 胡名睿,郝曉健,王昊辰,等.基于互聯(lián)網(wǎng)+及云存儲(chǔ)的寵物自動(dòng)喂食嵌入式系統(tǒng)[J].電子制作,2021(11):64-67.
[5] 葉軍,華旭奮,孫曉艷.基于用戶體驗(yàn)的互聯(lián)網(wǎng)+寵物管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].科技創(chuàng)新與應(yīng)用,2020(31):87-89.
[6] 趙智敏,李俊嶠,謝濤,等.基于微信小程序云開發(fā)的客觀題練習(xí)程序設(shè)計(jì)與開發(fā)[J].電子世界,2020(16):66-67.
[7] 小程序云開發(fā)參考文檔[EB/OL].[2021-11-07].https://developers.weixin.qq.com/miniprogram/dev/wxcl-oud/basis/getting-started.html.
[8] 微信開放文檔[EB/OL].[2021-11-07].https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart.
[9] 李哲,周靈.微信小程序的架構(gòu)與開發(fā)淺析[J].福建電腦,2019,35(12):66-69.
[10] 張利香,甘發(fā)旺,薄建國(guó).基于微信小程序與云開發(fā)的成績(jī)查詢系統(tǒng)實(shí)現(xiàn)[J].內(nèi)蒙古科技與經(jīng)濟(jì),2019(13):59-60.
收稿日期:2022-03-09
基金項(xiàng)目:安徽省高等學(xué)校省級(jí)質(zhì)量工程項(xiàng)目(項(xiàng)目編號(hào):2020kfkc434、2020jyxm1572、2020xsxxkc377);安徽省教學(xué)示范課(項(xiàng)目編號(hào):1940);安徽省高等學(xué)校省級(jí)質(zhì)量工程項(xiàng)目省級(jí)教學(xué)團(tuán)隊(duì)(項(xiàng)目編號(hào):2019jxtd090);國(guó)家級(jí)大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目(項(xiàng)目編號(hào):202114098027;合肥師范學(xué)院校級(jí)科研項(xiàng)目(項(xiàng)目編號(hào):2021KJZD15)
作者簡(jiǎn)介:殷鳳梅(1981—),女,安徽合肥人,副教授,主要研究方向?yàn)樾畔踩?/p>