邱煜炎,盧小蝶,吳福生
(蚌埠醫(yī)學院衛(wèi)生管理系,安徽蚌埠233000)
在互聯(lián)網時代飛快發(fā)展的浪潮之中,移動學習已經成為教育行業(yè)發(fā)展的必然趨勢。與傳統(tǒng)的課堂學習相比,移動學習可以使用戶隨時隨地根據(jù)自己安排進行知識獲取,從而激發(fā)學習興趣[1]。Python作為一門編程語言,語法簡潔優(yōu)雅、兼容眾多平臺[2],并且具有豐富而強大的第三方庫,近年來隨著人工智能應用的廣泛普及,Python語言的熱度和影響力持續(xù)上升。為此,本文設計并實現(xiàn)了基于微信小程序的Python語言在線移動學習平臺,使用戶快速掌握Python編程語言,并提供自測練習及第三方庫的查閱接口,以滿足用戶隨時學習和方便使用的需要。
隨著移動互聯(lián)網的蓬勃發(fā)展,各種在線學習平臺不斷涌現(xiàn),脫穎而出的有中國大學生慕課網、網易云課堂、學堂在線等。平臺發(fā)布及使用方式主要分為兩類:一類是基于CS架構,另一類是基于BS架構[3]。
CS架構,即客戶機-服務器(Client-Server)架構,該類平臺需要在手機端安裝專門的應用軟件與平臺進行交互。因此,龐雜的應用勢必耗費手機大量的硬件資源。BS架構,即瀏覽器-服務器(Browser-Server)架構,該類平臺依托手機端瀏覽器進行網頁發(fā)布,用戶雖然無須安裝應用軟件,但是各種在線學習平臺網址冗長、標簽收藏混亂,不方便用戶管理、查閱困難,用戶體驗效果不高。
微信是當前發(fā)展最為迅速、使用人數(shù)最多的社交應用手機軟件。微信小程序是一個基于微信客戶端構建的網頁版應用程序,它設計理念簡單,無須下載安裝即可使用,易于傳播,實現(xiàn)了應用程序“觸手可及”的目標[4]。
基于以上原因,本文設計了基于微信小程序的Python語言在線學習平臺,無須安裝軟件,不占用內存,方便管理,以達到用戶高效檢索、便捷學習的目的[5]。
本項目使用的是騰訊公司推出的微信開發(fā)者工具,其提供了完整的MINA框架[6]。MINA是一個網絡通信應用框架,主要分為兩個部分:頁面視圖層和應用邏輯層。其中,頁面視圖層進行界面的渲染,渲染部分由wxss和wxml文件共同構成,wxml用來設計頁面的結構,wxss用來設計頁面的樣式[7]。應用邏輯層有處理事務的功能,由Java Script實現(xiàn)邏輯交互、網絡請求、數(shù)據(jù)請求等功能[8]。視圖層和邏輯層利用系統(tǒng)層的JSBridge通信,視圖層將觸發(fā)的事件通知邏輯層進行數(shù)據(jù)處理;邏輯層把數(shù)據(jù)變化返回到視圖層,從而實現(xiàn)視圖層頁面更新,如圖1所示。
圖1 MINA框架
本文利用ThinkPHP框架實現(xiàn)服務器后臺業(yè)務邏輯功能。ThinkPHP是一種高效敏捷的Web框架,可以讓開發(fā)更關注具體業(yè)務邏輯實現(xiàn),不需要關心程序的底層實現(xiàn)原理,提高程序的開發(fā)效率[9]。它基于PHP語言,采用MVC設計模式,即模型(Model)、視圖(View)和控制(Control)實現(xiàn)業(yè)務邏輯??蚣芤呀洏嫿ê贸S玫墓δ茴悗?,以幫助構建穩(wěn)定、快速、高效建立在線學習平臺系統(tǒng);其次,該系統(tǒng)因為框架的使用使得本身的擴展性、靈活性、維護性、適應需求方面獲得最大化的增強。
Mysql數(shù)據(jù)庫是互聯(lián)網行業(yè)最流行的關系型數(shù)據(jù)庫管理系統(tǒng),通過微信小程序開發(fā)者工具與數(shù)據(jù)庫連接實現(xiàn)系統(tǒng)的數(shù)據(jù)管理功能,在微信小程序開發(fā)者工具JS中編寫請求代碼,向數(shù)據(jù)庫發(fā)送數(shù)據(jù)請求,數(shù)據(jù)庫接收到數(shù)據(jù)請求后在數(shù)據(jù)庫中查詢到所需數(shù)據(jù)并返回給微信小程序的邏輯層,最終的數(shù)據(jù)通過視圖層顯示在微信小程序的界面。以獲取自測成績數(shù)據(jù)為例,微信小程序請求數(shù)據(jù)代碼和數(shù)據(jù)庫返回數(shù)據(jù)代碼如下:
請求數(shù)據(jù)代碼
本系統(tǒng)基于ThinkPHP框架的MVC開發(fā)模式,系統(tǒng)架構設計見圖2。程序運行流程是首先通過微信小程序打開Python語言在線學習平臺,進行授權操作,以獲取用戶的基本信息如頭像、用戶名等,如果拒絕授權將退出返回。用戶身份認證體系采用token令牌請求接口,微信小程序調用接口,經過數(shù)據(jù)驗證層,判斷參數(shù)是否合法,然后由Controller層訪問Model數(shù)據(jù)層,業(yè)務邏輯需要調用Server層里面的方法,最后由Model層訪問數(shù)據(jù)庫DB層,返回數(shù)據(jù)給小程序。Controller層主要進行請求的分發(fā),Model層主要處理業(yè)務邏輯和訪問數(shù)據(jù)庫獲取數(shù)據(jù),Server層主要進行業(yè)務代碼的封裝,為Controller層提供調用。
用戶模塊主要有3個功能,一是獲取微信用戶信息,二是獲取用戶學習進度,三是瀏覽收藏的第三方庫條目。通過微信小程序自帶的登錄認證體系獲取微信用戶信息,如圖3所示。
圖2 系統(tǒng)架構設計
圖3 用戶登錄界面
打開微信小程序,掃碼登錄之后,會顯示出微信小程序的首頁。微信小程序的界面主要是通過wxml和wxss來顯示的,對微信小程序來說,視圖層就是他們的集合,首頁是一個歡迎頁面,windows用來設定標題、背景、顏色等屬性,代碼為
此外,tarBar用來實現(xiàn)與其他功能頁面的銜接與跳轉。
視頻課程以章節(jié)目錄方式進行展示,用戶通過滑動列表進行點擊、選擇學習視頻,見圖4。章節(jié)界面代碼由wxml與wxss組成,wxml中使用swiper輪播圖組件實現(xiàn)圖片的動態(tài)變化,使用navigator實現(xiàn)章節(jié)的對應跳轉.wxss中設置了輪播圖和圖片的長、寬屬性,設置了button按鈕邊框、顏色以及view的屬性。
視頻播放界面主要由視頻跟內容簡介組成,簡介與視頻內容同步以方便用戶理解與記憶。視頻內容以wxml形式進行播放,文字簡介以text文本框進行展示,見圖5。視頻數(shù)據(jù)流通過微信小程序開發(fā)者工具與云存儲服務器建立連接,利用JavaScript腳本向服務器發(fā)送請求,當服務器接收到視頻請求后將相關視頻并返回給微信小程序的邏輯層,最終的視頻會通過視圖層顯示在微信小程序的界面。
圖4 課程目錄列表
圖5 視頻播放界面
自測模塊主要分為在線測試和成績解析兩部分。習題庫通過程序后臺管理端進行操作,題型涉及判斷、單選、多選和填空四類。題型、分值、題目及答案以數(shù)組形式構建數(shù)據(jù)結構,以單選題為例,其代碼為
前端利用微信小程序開發(fā)工具的wxml和wxss對習題界面進行布局與構造,見圖6。
圖6 習題界面
強大而易用的第三方庫,使Python語言在人工智能領域受到學界和工業(yè)界的強烈追捧。為方便用戶查詢,并能做到收集和掌握,平臺嵌入了Pyhton第三方庫匯總和查詢模塊。利用Python的Scrapy跟蹤github網站,并周期性抓取第三方庫資源列表以做到實時更新。抓取內容主要涉及庫名、簡介以及官網鏈接地址,此外,小程序界面通過JavaScript設置收藏功能,以方便用戶保存利用,代碼為
小程序發(fā)布的流程如圖7所示。
圖7 發(fā)布流程圖
首先在本地計算機設計完成系統(tǒng)的主要功能模塊的開發(fā)版本,然后,利用微信公眾平臺提交開發(fā)版本程序,當審核通過后就轉換成線上版本。用戶通過微信掃碼關注該小程序即可在線學習。
在服務器端,平臺采用阿里云服務器基于Linux內核的Centos7.0操作系統(tǒng),并需要安裝配置相關支持軟件如PHP、Python、mysql和nginx等,代碼為
為檢驗平臺運行效果,需要進行相關系統(tǒng)評測,相關指標見表1。
表1 系統(tǒng)測試指標
當平臺通過以上一系列性能指標評測后,筆者邀請20名在校大學生進行用戶體驗測試。
參與者通過微信掃描二維碼登錄,使用學習平臺,并給出反饋意見。總體上說,用戶對該平臺的使用滿意度評價較高,體會到基于微信小程序的平臺學習Python編程語言帶來的新穎性和便利性。此外,評價的反饋缺陷主要體現(xiàn)在3方面,①平臺學習模塊單一,內容不夠豐富,不能滿足多層次用戶的知識需求;②界面不夠美觀,顏色搭配不合理,UI交互不夠友好;③用戶體驗不流暢,多并發(fā)條件下易出現(xiàn)卡頓現(xiàn)象。
隨著微信用戶體量的不斷增加,基于微信小程序無須下載即可使用的特點,本文設計并開發(fā)了基于微信小程序的Python語言在線學習平臺。實現(xiàn)了在線視頻學習、在線測試、Python第三方庫查詢收藏等功能,具有移動學習便利性的優(yōu)勢。在以后的設計中,逐漸豐富學習平臺的功能,如增加學習社群、在線編譯等內容;優(yōu)化設計界面,可參考優(yōu)秀的小程序模板,對界面及按鈕等細節(jié)的顏色做合理搭配,以做到統(tǒng)一協(xié)調[10];后臺增加Redis緩存,已滿足多用戶并發(fā)訪問的需要。此外,要設置平臺安全機制,增加防火墻以及數(shù)據(jù)加密功能,以保證用戶數(shù)據(jù)不受侵犯。