• 
    

    
    

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

      基于云開發(fā)的雙端結(jié)合學(xué)習(xí)教育管理系統(tǒng)設(shè)計(jì)

      2022-05-09 02:26:17李東升蘇煜輝陳正銘陳君豪
      電腦知識(shí)與技術(shù) 2022年7期
      關(guān)鍵詞:小程序學(xué)習(xí)教育移動(dòng)學(xué)習(xí)

      李東升 蘇煜輝 陳正銘 陳君豪

      摘要:學(xué)習(xí)教育資源的管理和獲取一直以來都是一個(gè)比較棘手的問題,存在難以獲取、反饋不及時(shí)、操作不方便等弊端?;谖⑿判〕绦蛟崎_發(fā)、PC Web雙端結(jié)合的學(xué)習(xí)教育管理系統(tǒng),采用了Vue-admin-template框架與Hybrid混合開發(fā)技術(shù)、JSON數(shù)據(jù)庫,提供了微信小程序?qū)W習(xí)答題、心得討論共享、后臺(tái)審核管理等功能,快速有效地解決了學(xué)習(xí)教育資源的利用問題。

      關(guān)鍵詞:學(xué)習(xí)教育;云開發(fā);小程序;移動(dòng)學(xué)習(xí);serveless

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

      文章編號(hào):1009-3044(2022)07-0043-04

      1 概述

      隨著微信用戶與日俱增,微信小程序也借此機(jī)會(huì)逐漸走入人們的學(xué)習(xí)生活中,而基于serverless理念的云開發(fā)技術(shù)更是給小程序帶來了更多的可能。面對(duì)計(jì)算機(jī)行業(yè)普遍存在的關(guān)于技術(shù)人員知識(shí)獲取的問題,包括技術(shù)棧老化、知識(shí)零散、技術(shù)更新快、學(xué)習(xí)效率低等,針對(duì)這些痛點(diǎn),以前端知識(shí)體系為例,采用基于云開發(fā)的雙端結(jié)合方式構(gòu)建出一個(gè)學(xué)習(xí)教育管理系統(tǒng)(Halo),探索學(xué)習(xí)教育資源的獲取和管理問題[1],讓用戶得以系統(tǒng)有效地汲取知識(shí),與其他用戶互相交流,以及存儲(chǔ)學(xué)習(xí)進(jìn)度、已發(fā)表信息等功能的私人空間。

      1.1 傳統(tǒng)學(xué)習(xí)教育管理系統(tǒng)存在的問題

      1) 傳統(tǒng)的學(xué)習(xí)教育管理系統(tǒng)更多的是采用App的形式,相比于小程序而言,為了兼顧多個(gè)機(jī)型等問題容易導(dǎo)致開發(fā)成本偏高。

      2) 同時(shí)由于過分強(qiáng)調(diào)用戶的留存和商業(yè)利益,偏離了原本學(xué)習(xí)教育的核心目的,容易讓用戶無所適從。

      3) 傳統(tǒng)App采用的前后端分離協(xié)作開發(fā)的模式溝通難度和成本都較大,同時(shí)也不利于相關(guān)工程化體系的搭建和適配。

      4) 傳統(tǒng)App難以有比較完善發(fā)達(dá)的生態(tài),難以與背靠高日活量微信的小程序相提并論,后期的推廣和發(fā)展會(huì)有比較大的限制。

      1.2 基于云開發(fā)學(xué)習(xí)教育管理系統(tǒng)的優(yōu)勢

      1) 首先因?yàn)槭且孕〕绦驗(yàn)檩d體,背靠微信龐大的生態(tài),有利于借用微信現(xiàn)有成熟的技術(shù)拓充本系統(tǒng)的功能,如廣場消息實(shí)時(shí)推送微信等,同時(shí)微信龐大的用戶基數(shù)也為本系統(tǒng)的使用推廣打下良好的基礎(chǔ),提高了用戶的留存[2]。

      2) 得益于云開發(fā)提供的各種云端能力,本系統(tǒng)不需要過分依賴后端的支持,減少因?yàn)樯婕扒昂蠖烁膭?dòng)的迭代造成的昂貴溝通成本,避免了實(shí)現(xiàn)兼顧前后端的工程化體系的困難,僅依靠前端常見的技術(shù)棧即可完成本系統(tǒng)的搭建。

      3) 在當(dāng)今注重效率和技術(shù)快速更新迭代的時(shí)代,云開發(fā)這種云端賦能的操作更是拓寬了開發(fā)者的能力邊界,除了可以獨(dú)自完成前后端的所有工作外,多端應(yīng)用部署、運(yùn)維等都可以高效的實(shí)現(xiàn)[3],本系統(tǒng)也是基于云開發(fā)提供的控制臺(tái)實(shí)現(xiàn)一個(gè)對(duì)數(shù)據(jù)實(shí)時(shí)監(jiān)控、相關(guān)業(yè)務(wù)設(shè)計(jì)日志的輸出、業(yè)務(wù)告警等后臺(tái)監(jiān)控,保障了系統(tǒng)的正常運(yùn)行和異常的及時(shí)處理。

      2 雙端結(jié)合構(gòu)成

      由微信小程序端、PC Web端雙端通過訪問一個(gè)基于云開發(fā)的JSON數(shù)據(jù)庫達(dá)到雙端結(jié)合,由此可以降低兩者的耦合度又保證了彼此的聯(lián)系,具體如圖1所示。

      2.1 微信小程序端

      本系統(tǒng)的微信小程序是基于云開發(fā)打造的,用戶只需要掃描對(duì)應(yīng)的小程序二維碼或者點(diǎn)擊通過小程序提供的分享功能即可打開享受服務(wù)。用戶首次進(jìn)入需要授權(quán)小程序,然后就可以解鎖對(duì)應(yīng)的收藏功能、反饋功能與查看歷史記錄功能。前往首頁選擇需要鞏固的知識(shí)體系即可開始學(xué)習(xí),相關(guān)知識(shí)點(diǎn)的答案可以自行打開與關(guān)閉[4]。如果用戶有交流需求可以前往廣場頁與其他用戶互動(dòng),支持搜索功能尋找感興趣的話題。

      2.2 PC Web端

      本系統(tǒng)的管理人員需要電腦Web端進(jìn)行登錄,即可查看用戶在小程序的行為,包括發(fā)言、反饋、評(píng)論等,針對(duì)違法違規(guī)的言論進(jìn)行刪除或處理用戶提交的反饋。管理人員還被允許根據(jù)實(shí)際情況添加新的知識(shí)點(diǎn)。

      2.3 雙端結(jié)合的優(yōu)勢

      由于系統(tǒng)是基于云開發(fā)的技術(shù)和思想,Web端則以微信SDK的方式來獲取存儲(chǔ)在云服務(wù)器中的內(nèi)容,如此降低了后端邏輯的重復(fù)編寫,只需要完成小程序端相關(guān)云函數(shù)的編寫并抽離成相應(yīng)的SDK給予Web端使用即可。

      同時(shí)因?yàn)閃eb端數(shù)據(jù)的請求是以SDK的方式,有微信服務(wù)器的支持,保障了傳輸過程中的安全性和可靠性。

      3 系統(tǒng)的構(gòu)成與業(yè)務(wù)流程圖

      本系統(tǒng)由微信小程序端和PC Web端兩部分組成,整個(gè)系統(tǒng)包括了兩種參與人員:系統(tǒng)管理員和用戶,圖2是展示具體的業(yè)務(wù)流程設(shè)計(jì)。

      4 核心設(shè)計(jì)技術(shù)

      4.1 Serverless架構(gòu)

      Serverless是一種構(gòu)建和管理基于微服務(wù)架構(gòu)的完整流程,本系統(tǒng)采用了小程序提供的云開發(fā)技術(shù),無須關(guān)心服務(wù)器部署、服務(wù)器容量等,只需要通過第三方API交互即可。通過運(yùn)用這種架構(gòu)可以大量地節(jié)省服務(wù)器費(fèi)用,同時(shí)還可以提高開發(fā)者的開發(fā)效率。Serverless有兩種常見的技術(shù)包括Faas[5]和Baas,本系統(tǒng)采用的是Faas也就是函數(shù)即服務(wù),具體到實(shí)際的開發(fā)過程就是所謂的云函數(shù)和SDK。

      4.2 Vue-element-admin框架

      Vue是目前非常流行的漸進(jìn)式框架,Element則是一套提供給開發(fā)者、設(shè)計(jì)師的桌面組件庫。Vue-element-admin則是基于Vue和Element實(shí)現(xiàn)的后臺(tái)前端解決方案,內(nèi)置了i18 國際化解決方案,動(dòng)態(tài)路由,權(quán)限驗(yàn)證,提煉了典型的業(yè)務(wù)模型,提供了豐富的功能組件,可以幫助開發(fā)者快速地搭建起一個(gè)企業(yè)級(jí)的中后臺(tái)產(chǎn)品原型。

      5 基于云開發(fā)的雙端結(jié)合學(xué)習(xí)教育管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

      5.1 微信小程序端核心功能的設(shè)計(jì)與實(shí)現(xiàn)

      微信小程序端比較重要的功能是對(duì)用戶身份的確認(rèn)和儲(chǔ)存等鑒權(quán)操作,在用戶打開小程序即可自動(dòng)獲取用戶頭像與姓名,同時(shí)微信小程序更多個(gè)性化的功能則需要用戶授權(quán),具體的授權(quán)方法如下:

      authorization () {

      wx.getSetting({

      success: (res) => {

      if (res.authSetting['scope.userInfo']) {

      wx.getUserInfo({

      success: (res) => {

      this.setData({

      userInfo: res.userInfo

      })

      }})

      } else {

      this.setData({

      showLogin: true

      })

      }}})

      },

      用戶的個(gè)人信息會(huì)記錄到云端,下次打開無須授權(quán)。用戶在廣場發(fā)表話題后小程序會(huì)自動(dòng)刷新當(dāng)前話題列表,但是話題集合中存儲(chǔ)的數(shù)據(jù)較多,每次云函數(shù)發(fā)起請求最多只能獲得100條數(shù)據(jù)[6],這可能導(dǎo)致用戶只能獲得部分的信息,所以這里使用了一個(gè)算法來突破這種限制。算法大體的思路就是利用異步函數(shù)的特點(diǎn),在每次請求回來數(shù)據(jù)時(shí)并不馬上返回而是存儲(chǔ)到一個(gè)數(shù)組中再統(tǒng)一返回,而是否請求完所有數(shù)據(jù)即需要請求次數(shù)的判斷則是根據(jù)數(shù)據(jù)庫中記錄的總條數(shù)去除以當(dāng)前數(shù)據(jù)限制數(shù),最終實(shí)現(xiàn)的具體突破算法如下:

      app.router('detail',async(ctx,next)=>{

      let blogId=event.blogId

      let detail= await blogCollection.where({_id:blogId}).get().then((res)=>{

      return res.data

      })

      const countResult=await blogCollection.count()

      const total=countResult.total

      let commentList={

      data:[]

      }

      if(total>0){

      const batchTimes=Math.ceil(total/MAX_LIMIT)

      const tasks=[]

      for(let i=0;i<batchTimes;i++){

      let promise=db.collection('blog-comment')

      .skip(i*MAX_LIMIT)

      .limit(MAX_LIMIT)

      .where({

      blogId

      })

      .orderBy('createTime','desc').get()

      tasks.push(promise)

      }

      if(tasks.length>0){

      commentList=(await Promise.all(tasks)).reduce((acc,cur)=>{

      return{

      data:acc.data.concat(cur.data)

      }})

      }

      ctx.body={

      commentList,

      detail

      }}})

      5.2 PC Web端核心功能的設(shè)計(jì)與實(shí)現(xiàn)

      PC端實(shí)現(xiàn)的功能比較復(fù)雜,主要包含了試題管理、發(fā)布管理、反饋管理、試題添加4個(gè)模塊。

      其中比較值得注意的是在node.js調(diào)用小程序云函數(shù)時(shí)需要的access_token,access_token是從微信平臺(tái)獲取然后保存到本地一個(gè)文件中,最多只能保存兩個(gè)小時(shí),為了確保其一直有效,需要定時(shí)不斷去獲取,但是考慮到服務(wù)器[7]突然中斷連接則定時(shí)器可能失效,導(dǎo)致access_token過期,所以需要重新處理讀取access_token的函數(shù),getAccessToken函數(shù)如下:

      const getAccessToken = async () => {

      try {

      const readRes = fs.readFileSync(fileName, 'utf8')

      const readObj = JSON.parse(readRes)

      const createTime = new Date(readObj.createTime).getTime()

      const nowTime = new Date().getTime()

      if ((nowTime - createTime) / 1000 / 60 / 60 >= 2) {

      await updateAccessToken()

      await getAccessToken()

      }

      return readObj.access_token

      } catch (error) {

      await updateAccessToken()

      await getAccessToken()

      }}

      最后,考慮到模塊化組件化的思想,為了降低程序文件間的耦合,封裝了兩個(gè)相應(yīng)的函數(shù),一個(gè)是讀取小程序云端數(shù)據(jù)庫:

      const getAccessToken = require('./getAccessToken.js')

      const rp = require('request-promise')

      const callCloudDB = async(ctx, fnName, query = {}) => {

      const ACCESS_TOKEN = await getAccessToken()

      const options = {

      method: 'POST',

      uri: `https://api.weixin.qq.com/tcb/${fnName}?access_token=${ACCESS_TOKEN}`,

      body: {

      query,

      env: ctx.state.env,

      },

      json: true // Automatically stringifies the body to JSON

      }

      return await rp(options)

      .then((res) => {

      return res

      })

      .catch(function (err) {

      console.log(err);

      })

      }

      module.exports = callCloudDB

      另一個(gè)是讀取小程序云端的云函數(shù):

      const getAccessToken = require('./getAccessToken.js')

      const rp = require('request-promise')

      const callCloudFn = async (ctx, fnName, params) => {

      const ACCESS_TOKEN = await getAccessToken()

      const options = {

      method: 'POST',

      uri: `https://api.weixin.qq.com/tcb/invokecloudfunction?access_token=${ACCESS_TOKEN}&env=${ctx.state.env}&name=${fnName}`,

      body: {

      ...params

      },

      json: true // Automatically stringifies the body to JSON

      }

      return await rp(options)

      .then((res) => {

      return res

      })

      .catch(function (err) {

      })

      }

      module.exports = callCloudFn

      5.3 實(shí)現(xiàn)效果展示

      微信小程序端如圖3所示。

      后臺(tái)前端管理系統(tǒng)如圖4所示。

      6 結(jié)束語

      系統(tǒng)通過結(jié)合微信小程序端和PC Web端,兩者由云服務(wù)器的JSON數(shù)據(jù)庫提供支持,可以實(shí)現(xiàn)管理人員便捷的管理和用戶隨時(shí)隨地的使用。這種方式既可以降低系統(tǒng)的耦合度,又可以解決當(dāng)前技術(shù)知識(shí)難以獲取和學(xué)習(xí)的困境,為以后社會(huì)教育事業(yè)的發(fā)展提供了一種思路[8]。當(dāng)然,目前的探索還存在一些諸如知識(shí)體系收集不夠完善、用戶交流形式相對(duì)單一等問題,本系統(tǒng)也將針對(duì)這些問題做進(jìn)一步的完善。

      參考文獻(xiàn):

      [1] 劉紅衛(wèi).微信小程序應(yīng)用探析[J].無線互聯(lián)科技,2016(23):11-12,40.

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

      [3] 黎雪,王芳.基于亞馬遜云的云開發(fā)課程設(shè)計(jì)[J].計(jì)算機(jī)與網(wǎng)絡(luò),2021,47(13):42-43.

      [4] 朱玉強(qiáng).微信小程序在圖書館移動(dòng)服務(wù)中的應(yīng)用實(shí)踐——以排架游戲?yàn)槔齕J].圖書館論壇,2017,37(7):132-138.

      [5] 李銘軒,常培,崔童,等.面向FaaS的算網(wǎng)異構(gòu)資源調(diào)度技術(shù)[J].信息通信技術(shù),2021,15(4):44-49,58.

      [6] 王天泥.當(dāng)圖書館遇上微信小程序[J].圖書與情報(bào),2016(6):83-86.

      [7] 張銳.確保無服務(wù)器架構(gòu)安全的“法門”[J].網(wǎng)絡(luò)安全和信息化,2021(4):109-111.

      [8] 劉玉佳.微信“小程序”開發(fā)的系統(tǒng)實(shí)現(xiàn)及前景分析[J].信息通信,2017,30(1):260-261.

      【通聯(lián)編輯:梁書】

      收稿日期:2021-09-28

      基金項(xiàng)目:廣東省“攀登計(jì)劃”專項(xiàng)資金(pdjh2021b0452)

      作者簡介:李東升,男,廣東潮州人,主要研究方向?yàn)榍岸碎_發(fā)、機(jī)器學(xué)習(xí);蘇煜輝,男,廣東潮州人,主要研究方向?yàn)榫W(wǎng)站開發(fā)、PHP開發(fā);陳正銘,信息系統(tǒng)項(xiàng)目管理師(高級(jí)),碩士;陳君豪,男,通信作者,農(nóng)藝師,經(jīng)濟(jì)師,碩士。

      猜你喜歡
      小程序學(xué)習(xí)教育移動(dòng)學(xué)習(xí)
      提高博物館宣教工作的策略分析
      關(guān)于創(chuàng)新開展“兩學(xué)一做”學(xué)習(xí)教育的實(shí)踐與探索
      智能手機(jī)在大學(xué)生移動(dòng)學(xué)習(xí)中的應(yīng)用研究
      超級(jí)微信的“小程序”
      淺談開展“兩學(xué)一做”學(xué)習(xí)教育要把握的基本點(diǎn)
      中國市場(2016年35期)2016-10-19 03:08:25
      基于云計(jì)算的移動(dòng)學(xué)習(xí)平臺(tái)的設(shè)計(jì)
      基于移動(dòng)學(xué)習(xí)的自動(dòng)問答系統(tǒng)設(shè)計(jì)
      移動(dòng)學(xué)習(xí)方式下實(shí)驗(yàn)教學(xué)資源建設(shè)的研究
      科技視界(2016年20期)2016-09-29 12:07:51
      把“兩學(xué)一做”落實(shí)在思想上和行動(dòng)上
      三河市| 施秉县| 砀山县| 南昌市| 普定县| 定结县| 福鼎市| 河东区| 定远县| 和平县| 茌平县| 东兴市| 凤冈县| 红安县| 黄石市| 栖霞市| 咸丰县| 南雄市| 安阳市| 奉化市| 岱山县| 茌平县| 手游| 深水埗区| 资源县| 闽侯县| 阿鲁科尔沁旗| 丹阳市| 专栏| 贵阳市| 常州市| 合作市| 新野县| 隆尧县| 永德县| 阿城市| 澄城县| 封丘县| 彰化县| 闽侯县| 灵璧县|