• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于云開(kāi)發(fā)的垃圾分類微信小程序設(shè)計(jì)開(kāi)發(fā)

      2022-06-11 05:35:00高境廷杜娟胡生濤何志文
      電腦知識(shí)與技術(shù) 2022年13期
      關(guān)鍵詞:微信小程序垃圾分類

      高境廷 杜娟 胡生濤 何志文

      摘要:微信小程序因?yàn)殪`活便捷的優(yōu)點(diǎn)得到了廣泛應(yīng)用,其“用完即走”的特點(diǎn)非常適合于解決居民對(duì)垃圾分類不熟悉的問(wèn)題。該小程序利用微信開(kāi)發(fā)者工具,應(yīng)用WXML、WXSS和JavaScript技術(shù),依托百度云開(kāi)發(fā)提供的通用物體識(shí)別API,實(shí)現(xiàn)了3000多種生活常見(jiàn)垃圾的垃圾類別文字查詢及圖片查詢功能,并提供搜索記錄的查詢,可以幫助用戶方便快捷地查詢到垃圾類別從而更好地進(jìn)行垃圾分類。

      關(guān)鍵詞:微信小程序;云開(kāi)發(fā);垃圾分類

      中圖分類號(hào):TP393 ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A

      文章編號(hào):1009-3044(2022)13-0049-04

      1 引言

      垃圾分類是科學(xué)合理保護(hù)生態(tài)環(huán)境,推進(jìn)生態(tài)文明建設(shè)的重要一環(huán)。當(dāng)前遇到的最大問(wèn)題是居民在參與垃圾分類過(guò)程中不能對(duì)垃圾正確分類。為了提升居民垃圾分類意識(shí),提升居民對(duì)于垃圾分類知識(shí)的認(rèn)知度,使其更有意愿參與到垃圾分類的工作當(dāng)中去,解決目前普遍存在的居民“高意愿,低行動(dòng)”的難題,設(shè)計(jì)一款方便實(shí)用的垃圾分類小程序是非常有必要的。

      微信小程序是一種不需要下載安裝即可使用的應(yīng)用,它實(shí)現(xiàn)了應(yīng)用“觸手可及”的設(shè)想,也實(shí)現(xiàn)了“用完即走”的理念。用戶不用關(guān)心是否安裝太多應(yīng)用的問(wèn)題,可以隨時(shí)使用,又無(wú)須安裝卸載[1]。微信小程序開(kāi)發(fā)框架提供了自己的視圖層描述語(yǔ)言WXML和WXSS,以及基于JavaScript的邏輯層框架,并在視圖層和邏輯層之間提供了數(shù)據(jù)傳輸和事件系統(tǒng),使開(kāi)發(fā)人員可以輕松地專注于數(shù)據(jù)和邏輯[2]。

      2 系統(tǒng)設(shè)計(jì)

      用戶可通過(guò)圖像識(shí)別或手動(dòng)輸入文字的方法對(duì)程序輸入垃圾相關(guān)信息,程序根據(jù)提供用戶提供的信息查詢數(shù)據(jù)庫(kù),最后將數(shù)據(jù)庫(kù)中得到的數(shù)據(jù)輸出到用戶使用界面(UI)。程序執(zhí)行流程如圖1所示。

      2.1 用戶界面設(shè)計(jì)

      此小程序一共分為主頁(yè)、功能介紹、文字搜索和拍照搜索幾個(gè)功能頁(yè)面。

      首頁(yè):分為上下兩個(gè)view元素,頭部為swiper組件的輪播圖,輪播內(nèi)容為與垃圾分類和環(huán)境保護(hù)有關(guān)的一些圖片,可以豐富用戶的使用體驗(yàn),使整個(gè)頁(yè)面更加美觀。底部為具有快速前往每個(gè)功能的navigator組件,組件內(nèi)有包含簡(jiǎn)單解釋每個(gè)功能的image標(biāo)簽和text標(biāo)簽。

      功能介紹:頁(yè)面主要通過(guò)自定義組件父子互相傳遞數(shù)據(jù)實(shí)現(xiàn),界面設(shè)計(jì)為4個(gè)navigator組件,包含有圖標(biāo)文字和詳細(xì)介紹每個(gè)功能作用的文本信息。由于4個(gè)組件的結(jié)構(gòu)樣式一致,故采用自定義組件的方式減少重復(fù)的代碼量,在自定義文件中通過(guò)js文件properties對(duì)象中的內(nèi)容來(lái)接收父元素傳遞過(guò)來(lái)的數(shù)據(jù)。通過(guò)wx:for循環(huán)渲染nav自定義組件實(shí)現(xiàn)頁(yè)面效果,在修改樣式和結(jié)構(gòu)時(shí)只需修改一個(gè)自定義組件,大大縮短了在頁(yè)面的代碼量,也使整體結(jié)構(gòu)更加清晰。

      文字搜索:頁(yè)面中使用了background-image屬性使用背景圖,通過(guò)background-size和background-position屬性來(lái)調(diào)整背景圖的大小和顯示位置以達(dá)到設(shè)計(jì)圖的樣式。搜索框和搜索結(jié)構(gòu)分別用兩個(gè)塊元素包含。搜索結(jié)果框先通過(guò)display:none隱藏,等待觸發(fā)button的tap事件后顯示,并同時(shí)返回垃圾名和分類信息。

      拍照搜索:頁(yè)面先顯示開(kāi)始拍照上傳圖片的圓形button組件,觸發(fā)tap事件后顯示5個(gè)與所拍攝物品相關(guān)的物品的按鈕,用戶可點(diǎn)擊想查看的內(nèi)容顯示該物品的分類結(jié)果。在返回查找信息的最后設(shè)計(jì)有一個(gè)繼續(xù)查找的按鈕方便用戶進(jìn)行多次查找。

      為實(shí)現(xiàn)對(duì)不同機(jī)型的適配,在需要完美高度適配的頁(yè)面的onload生命周期函數(shù)中寫下返回用戶所用機(jī)型的顯示屏寬高并儲(chǔ)存到data域中的函數(shù),再利用內(nèi)聯(lián)樣式設(shè)置符合每個(gè)機(jī)型的最佳寬高。在對(duì)樣式的編寫時(shí)均采用less語(yǔ)法進(jìn)行編寫,此操作使樣式代碼結(jié)構(gòu)變得整潔清晰,同時(shí)也大大縮短了對(duì)樣式進(jìn)行編寫和修改的時(shí)間。

      2.2 數(shù)據(jù)庫(kù)的讀寫方法及其實(shí)現(xiàn)

      鑒于本小程序的規(guī)模,使用了微信官方提供的云數(shù)據(jù)庫(kù)功能來(lái)為整個(gè)程序提供后臺(tái)支持。云服務(wù)是一種簡(jiǎn)單高效、安全可靠、處理能力可彈性伸縮的計(jì)算服務(wù)[3]。小程序云開(kāi)發(fā)基于Serverless云服務(wù)的理念,為開(kāi)發(fā)者提供完整的云端支持和微信服務(wù)支持。開(kāi)發(fā)者無(wú)須搭建服務(wù)器,直接使用云數(shù)據(jù)庫(kù),弱化后端和運(yùn)維概念,使開(kāi)發(fā)者可以集中精力于核心業(yè)務(wù)[4]。云數(shù)據(jù)庫(kù)的使用方法可以歸納為存儲(chǔ)數(shù)據(jù)、使用數(shù)據(jù)、緩存數(shù)據(jù)三步。

      存儲(chǔ)數(shù)據(jù)。首先將垃圾分類數(shù)據(jù)通過(guò)Python轉(zhuǎn)換為可以上傳到數(shù)據(jù)庫(kù)的JSON格式,一條垃圾分類數(shù)據(jù)對(duì)應(yīng)一個(gè)JSON對(duì)象。通過(guò)轉(zhuǎn)換,得到了約六千個(gè)垃圾分類條目,并將其上傳至云數(shù)據(jù)庫(kù),以便在程序中使用。

      使用數(shù)據(jù)。云數(shù)據(jù)庫(kù)數(shù)據(jù)的使用可分為連接、請(qǐng)求、使用三個(gè)步驟。在程序中若需要使用數(shù)據(jù)庫(kù)的數(shù)據(jù),首先應(yīng)該與數(shù)據(jù)庫(kù)建立連接。只需要調(diào)用wx.cloud中的init()函數(shù)并提供環(huán)境id即可建立與數(shù)據(jù)庫(kù)的初步連接。通過(guò)調(diào)用db.collection()函數(shù),將垃圾名稱作為參數(shù)傳入函數(shù)即可對(duì)云數(shù)據(jù)庫(kù)發(fā)送請(qǐng)求,請(qǐng)求的結(jié)果會(huì)以Promise的形式返回到程序,故使用步驟需要嵌套在Promise的Consuming_Code中。使用步驟只需完成對(duì)用戶頁(yè)面的更新以及將首次獲得的垃圾分類數(shù)據(jù)存入緩存中。

      緩存數(shù)據(jù)。云數(shù)據(jù)庫(kù)技術(shù)的使用大大簡(jiǎn)化了開(kāi)發(fā)小程序的過(guò)程,但數(shù)據(jù)庫(kù)的每日讀寫次數(shù)限制會(huì)給用戶帶來(lái)極大的不便。在沒(méi)有每日讀寫限制的情況下,用戶希望在查詢過(guò)程中能夠從數(shù)據(jù)庫(kù)中獲得最新的信息,即每次查詢都從數(shù)據(jù)庫(kù)中獲得信息。緩存搜索記錄是考慮到云數(shù)據(jù)庫(kù)每日讀寫限制的讓步選擇,以信息時(shí)效性為代價(jià),有效減少了數(shù)據(jù)庫(kù)的讀寫次數(shù)。緩存數(shù)據(jù)的代碼是同步的,不需要考慮程序的異步邏輯,只需要考慮數(shù)據(jù)存儲(chǔ)格式的可用性即可。

      2.3 圖像識(shí)別獲取垃圾信息的方法及其實(shí)現(xiàn)

      百度AI開(kāi)放平臺(tái)提供的通用物體和場(chǎng)景辨認(rèn)接口支持識(shí)別10萬(wàn)個(gè)常見(jiàn)物體及場(chǎng)景,返回相應(yīng)的名稱結(jié)果[5]。本功能的實(shí)現(xiàn)依托于微信小程序豐富的API以及由百度云開(kāi)發(fā)提供的通用物體識(shí)別API,運(yùn)行邏輯實(shí)現(xiàn)如圖2所示。

      1)百度云開(kāi)發(fā)注冊(cè)與配置

      首先需要注冊(cè)百度賬號(hào),并登錄百度云,進(jìn)入管理控制臺(tái),創(chuàng)建圖像識(shí)別應(yīng)用,創(chuàng)建完應(yīng)用后,打開(kāi)應(yīng)用管理可見(jiàn)APP_ID、API_KEY和SECRET_KEY,需要用在小程序端調(diào)用圖像識(shí)別接口。

      2)獲取Access Token

      小程序服務(wù)端云函數(shù)是基于node.js的開(kāi)發(fā)。使用wx.request向百度云服務(wù)授權(quán)服務(wù)地址發(fā)送請(qǐng)求,將應(yīng)用管理中的參數(shù)發(fā)送即可得到每30天有效的Access Token。因此需要將該步驟寫入到app.js中,在每次小程序啟動(dòng)時(shí)運(yùn)行以獲取最新的Access Token。

      3)服務(wù)器域名配置

      每個(gè)微信小程序需要事先設(shè)置通訊域名,小程序只可以跟指定的域名進(jìn)行網(wǎng)絡(luò)通信。包括普通HTTPS請(qǐng)求(wx.request)、上傳文件(wx.uploadFile)、下載文件(wx.downloadFile)和 WebSocket通信(wx.connectSocket)。為了使用百度云開(kāi)發(fā)的API接口,需要在“小程序后臺(tái)-開(kāi)發(fā)-開(kāi)發(fā)設(shè)置-服務(wù)器域名”中進(jìn)行服務(wù)器配置,將所需的服務(wù)器域名添加進(jìn)去方可使用。

      4)小程序客戶端開(kāi)發(fā)

      使用wx. chooseImage獲取到用戶提供的圖片(相冊(cè)選取/相機(jī)拍攝),再使用wx.compressImage對(duì)圖片進(jìn)行壓縮及格式轉(zhuǎn)換處理,加快在后續(xù)請(qǐng)求中圖片的上傳速度。最后使用wx.request對(duì)圖像識(shí)別的網(wǎng)址進(jìn)行POST請(qǐng)求,輸入相應(yīng)的圖像,選擇信息等參數(shù)即可得到百度云開(kāi)發(fā)返回的JSON數(shù)據(jù)。

      3 系統(tǒng)實(shí)現(xiàn)

      3.1 小程序首頁(yè)

      首頁(yè)的頁(yè)面頭部是輪播圖展示,用于滾動(dòng)展示一些以環(huán)保和垃圾分類為主題的圖片。在頁(yè)面中部則是每個(gè)功能的快捷入口,每個(gè)選項(xiàng)由功能圖標(biāo)和解釋文字兩部分組成,用戶點(diǎn)擊這幾個(gè)選項(xiàng)后會(huì)跳轉(zhuǎn)到相應(yīng)的功能頁(yè)面。如圖3所示。

      3.2 文字搜索界面

      用戶點(diǎn)擊下方的搜索框即可輸入要查詢的信息,輸入后點(diǎn)擊右方的箭頭圖標(biāo)便會(huì)顯示搜索結(jié)果,如圖4所示。

      小程序會(huì)通過(guò)用戶在文本搜索框中的輸入返回相應(yīng)的垃圾分類信息,部分核心代碼如下:

      getsearchresult(){

      wx.showLoading({

      title: 'Loading..',

      });

      wx.cloud.callFunction({

      name:'cloud_searchclass',

      config:{

      env:this.data.envId

      },

      data:{

      name:this.data.key

      }

      }).then((resp)=>{

      console.log(resp.result);

      wx.hideLoading();

      }).catch((e)=>{

      this.setData({

      showUploadTip:true

      });

      });

      }

      3.3 拍照搜索界面

      點(diǎn)擊圖中的圓形按鈕即可開(kāi)始拍照識(shí)別,用戶上傳完圖片會(huì)顯示如圖5所示結(jié)果。

      在拍照搜索中上傳的圖片會(huì)通過(guò)與開(kāi)放的API交互返回分類信息,部分核心代碼如下:

      wx.request({

      url:'https://aip.baidubce.com/api/v1/solution/direct/imagerecognition/combination?access_token='+ app.globalData.access_token,

      method:'POST',

      header: {'Content-type': 'application/json;charset=utf-8'},

      data:{

      image: base64,

      scenes: ["advanced_general"]

      },

      success(res){

      console.log(res);

      if(res.statusCode == 200 && res.errMsg == "request:ok"){

      //檢測(cè)結(jié)果正確

      //返回識(shí)別信息

      var rubbish = res.data.result.advanced_general.result;

      console.log(rubbish);

      page.setData({img: tempPath});

      let len=rubbish.length;

      for(let i=0;i

      rubbish[i].clasf='';

      rubbish[i].name=rubbish[i].keyword;

      }

      //init trash list

      page.InitTrashList(rubbish);

      //隱藏加載窗口

      wx.hideLoading();

      }

      else{

      wx.showToast({

      title: '識(shí)別失敗'+res.data.error_msg,

      duration: 1000,

      });

      }

      }

      })

      為盡可能提高正確率,采取了用戶可以自行點(diǎn)擊要查看的搜索結(jié)果的方式來(lái)顯示,如圖6所示。

      3.4 搜索記錄查詢

      用戶可在此功能內(nèi)查看搜索過(guò)的歷史記錄,在點(diǎn)擊下方查詢記錄按鈕后會(huì)顯示查詢過(guò)的記錄,方便用戶進(jìn)行確認(rèn),具體結(jié)果如圖7。

      4 結(jié)束語(yǔ)

      本系統(tǒng)實(shí)現(xiàn)了用文字和圖片搜索垃圾分類的功能,方便用戶隨時(shí)隨地查詢垃圾的類別從而改變目前普遍存在的居民“高意愿,低行動(dòng)”的現(xiàn)狀,為推進(jìn)生態(tài)文明建設(shè)做出貢獻(xiàn)。

      參考文獻(xiàn):

      [1] 陳云貴,高旭.微信小程序開(kāi)發(fā)從入門到實(shí)戰(zhàn):微課視頻版[M].北京:清華大學(xué)出版社,2020.

      [2] 張巧嶺.基于微信小程序的垃圾分類系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子世界,2020(21):185-186.

      [3] 陳宏樣,馬秋宇,李麗君,等.“記憶幫”微信小程序的設(shè)計(jì)與開(kāi)發(fā)[J].科技與創(chuàng)新,2022(4):35-37,40.

      [4] 樂(lè)萬(wàn)德,程傳旭.基于云開(kāi)發(fā)的C語(yǔ)言客觀題練習(xí)小程序[J].信息技術(shù)與信息化,2021(7):207-209.

      [5] 鄧斌權(quán),李劍波,瞿先超.基于云開(kāi)發(fā)和微信小程序的垃圾分類系統(tǒng)實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2020,16(7):82-84.

      【通聯(lián)編輯:謝媛媛】

      猜你喜歡
      微信小程序垃圾分類
      圖書館微信小程序的應(yīng)用現(xiàn)狀及前景分析
      基于CNKI的微信小程序研究文獻(xiàn)計(jì)量分析
      信息技術(shù)與專業(yè)課程融合路徑探索
      決策探索(2017年12期)2017-07-13 11:11:12
      當(dāng)圖書館遇上微信小程序
      基于互聯(lián)網(wǎng)思維的再生資源智能回收系統(tǒng)設(shè)計(jì)(寶特瓶類)
      小學(xué)校本課程《垃圾分類》智慧教育案例研究
      淺析我國(guó)農(nóng)村垃圾處理難題
      日本城市垃圾分類的做法
      青春歲月(2016年22期)2016-12-23 16:15:10
      高校環(huán)境教育非課堂教學(xué)模式的探索
      芻議校園垃圾分類與高校學(xué)生管理
      科技視界(2016年3期)2016-02-26 20:27:07
      馆陶县| 湘潭县| 上思县| 开原市| 常州市| 高碑店市| 江山市| 兴安盟| 合阳县| 泾阳县| 冷水江市| 长乐市| 于田县| 兴宁市| 英吉沙县| 个旧市| 桐城市| 红桥区| 株洲市| 张家口市| 黑山县| 百色市| 凤城市| 波密县| 耿马| 抚州市| 岳普湖县| 色达县| 洛扎县| 尚义县| 林甸县| 昌吉市| 定边县| 曲靖市| 图们市| 深州市| 金寨县| 大安市| 广昌县| 永平县| 米脂县|