柏超宇 顧怡 楊麗雯 張建波
摘要
隨著微信小程序的普及,移動應(yīng)用開發(fā)也迎來了一次新的革命。本項(xiàng)目將基本的課表查詢,飯卡充值等功能進(jìn)行開發(fā)整合,學(xué)生可以更加便捷的使用各種學(xué)校系統(tǒng)。本文以南京郵電大學(xué)小程序?yàn)槔?,分析軟件的開發(fā)背景,介紹軟件的系統(tǒng)功能,同時(shí)對系統(tǒng)開發(fā)細(xì)節(jié)進(jìn)行分析。希望通過該研究,為學(xué)校的信息化建設(shè)作出貢獻(xiàn)。
【關(guān)鍵詞】智慧校園 微信小程序 高等學(xué)校
1 軟件開發(fā)背景
智慧校園建設(shè)近年來發(fā)展迅猛,高校也積極上線各類信息化系統(tǒng)代替原本的人工操作,南京郵電大學(xué)的智慧校園系統(tǒng)現(xiàn)己大大方便了老師學(xué)生的校園生活,但通過調(diào)查發(fā)現(xiàn)這也存在著一些問題。學(xué)校的大多數(shù)系統(tǒng)由不同人員開發(fā)而成,很多的系統(tǒng)或網(wǎng)站入口較深,域名不方便記憶,各個(gè)系統(tǒng)的用戶名和密碼大多不同,而最關(guān)鍵的是,基本上對于手機(jī)端沒有進(jìn)行適配,導(dǎo)致我們在外用手機(jī)進(jìn)行操作時(shí)存在一定困難。
因此,為了方便廣大學(xué)生的學(xué)習(xí)生活,本項(xiàng)目與校信息化建設(shè)與管理辦公室合作,通過構(gòu)建爬蟲和使用校信息辦提供接口,把學(xué)校的多個(gè)信息系統(tǒng)整合到一起。前端采用Vue.js,后端采用Spring,開發(fā)了基于微信平臺的南京郵電大學(xué)小程序。
2 軟件主要功能及技術(shù)開發(fā)方案
南京郵電大學(xué)小程序?qū)W(xué)校的數(shù)個(gè)系統(tǒng)整合到了一起,優(yōu)化用戶體驗(yàn),重新設(shè)計(jì)UI交互,重新分析用戶需求,讓同學(xué)們在實(shí)際使用過程中更加流暢。軟件所實(shí)現(xiàn)的主要功能如圖1,基本覆蓋了高校學(xué)生日常所需要的功能。
2.1 軟件主要功能
南京郵電大學(xué)小程序整合了十余個(gè)學(xué)生常用的系統(tǒng),如教務(wù)處系統(tǒng),一卡通系統(tǒng),圖書館系統(tǒng),跑操查詢系統(tǒng),自主化學(xué)分系統(tǒng)等。軟件主要界面如圖2所示。
當(dāng)點(diǎn)擊課表按鈕時(shí),前端會向后端發(fā)送相應(yīng)請求,后端通過模擬登陸教務(wù)處并獲取到你的課表,再將信息包裝后送向前端,最后由前端對課表進(jìn)行展示。當(dāng)用戶點(diǎn)擊成績查詢、跑操查詢、余額查詢、飯卡充值等按鈕時(shí),也進(jìn)行了類似的操作。
2.2 軟件技術(shù)開發(fā)方案
該軟件上線一年以來,經(jīng)歷了兩次大版本更新,前端一直采用基于JavaScript的Vue.js框架,后端原先采用原生PHP后改用基于Java的Spring框架,通過合理使用框架,軟件的安全性和性能有了一定的保障。
2.2.1 前端開發(fā)要點(diǎn)
(1)充分利用微信小程序提供的API,微信小程序本身目錄結(jié)構(gòu)非常的清晰,分為四種主要的文件類型wxml/.wxss/.js/json。第一類文件主要是類似于html的頁面結(jié)構(gòu),第二類文件是類似于CSS的樣式文件,第三類文件是傳統(tǒng)的js文件,但是在這個(gè)js文件中會實(shí)例化一個(gè)Page對象作為入口函數(shù),第四類文件是配置文件。其次,微信小程序提供很多已經(jīng)包裝好的函數(shù),例如Loading,request請求等等。
(2)Promise無阻塞請求,因?yàn)橐粋€(gè)頁面中存在類似于跑操信息,課表信息,一卡通信息等等數(shù)據(jù)需要請求,如果同時(shí)使用串行函數(shù)請求,會有阻塞發(fā)生,為了避免這種情況,我們引入了es6中的Promise函數(shù),將每一個(gè)請求包裝成一個(gè)Promise對象,然后并行無阻塞請求,這樣就不會發(fā)生,一個(gè)請求等另一個(gè)請求這種影響性能的情況。
(3)針對通用函數(shù)采用了工具包的形式,工具包使用的是模塊化接口設(shè)計(jì)對外提供工具函數(shù)工具包使用的是模塊化接口設(shè)計(jì)對外提供工具函數(shù),其主要原理是Javascript中的閉包,只獲取一個(gè)函數(shù)中我們需要利用的信息。
(4)前后端完全分離,后端只需要向前端提供接口。
2.2.2 后端開發(fā)要點(diǎn)
(1)采用了Springboot框架為基礎(chǔ)來構(gòu)建后端服務(wù),主要使用mysql,mybatis,redis來對數(shù)據(jù)庫進(jìn)行支持,又因?yàn)樯婕芭老x還使用了httpclient,jsoup等工具。
(2)對于爬蟲的處理:考慮不能對學(xué)校弱服務(wù)造成過大壓力,所以利用統(tǒng)一爬蟲對出口做了限制,每個(gè)站并發(fā)數(shù)限制在50。對于學(xué)校一些經(jīng)常崩的弱服務(wù),又采取了獨(dú)立爬蟲的方式,避免因?yàn)楸赖舻娜醴?wù)影響其他正常服務(wù)。
(3)對于產(chǎn)品邏輯的支持,竭盡所能去便利用戶,因?yàn)楹芏嗳硕疾粫膶W(xué)校某些服務(wù)的密碼,所以每一個(gè)模塊都采用了幫助用戶填充默認(rèn)賬號密碼的方式。
(4)后端代碼上的優(yōu)化:因?yàn)橛泻芏鄠€(gè)模塊(正方,一卡通,圖書館等等),但主要用戶信息(學(xué)號,姓名,班級,UserId等等)都是相同的,所以利用interceptor將用戶信息注入做了一個(gè)UserInfo,倘若需要使用用戶信息,直接在controller層使用就可以了。
3 總結(jié)
本項(xiàng)目以方便高校學(xué)生為出發(fā)點(diǎn),通過多種方式收集和調(diào)查學(xué)生們的需求,瞄準(zhǔn)了同學(xué)們在學(xué)習(xí)生活中的痛點(diǎn),前后端實(shí)現(xiàn)注重細(xì)節(jié),為流暢使用提供保障,重新設(shè)計(jì)UI和交互模式,更加注重用戶體驗(yàn)。
參考文獻(xiàn)
[1]吳旻瑜,劉歡,任友群.“互聯(lián)網(wǎng)+”校園:高校智慧校園建設(shè)的新階段[J].遠(yuǎn)程教育雜志,2015,33(04):8-13.
[2]曾超宇,李金香.Redis在高速緩存系統(tǒng)中的應(yīng)用[J].微型機(jī)與應(yīng)用,2013,32(12):11-13.
[3]張亮.基于HTMLParser和HttpClient的網(wǎng)絡(luò)爬蟲原理與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2011(20):94+103.
[4]薛峰,梁鋒,徐書勛,王彪任.基于Spring MVC框架的Web研究與應(yīng)用[J].合肥工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2012,35(03):337-340.
[5]呂方,崔慧敏,霍瑋,馮曉兵.面向并發(fā)性能下降的調(diào)度策略的綜述[J].計(jì)算機(jī)研究與發(fā)展,2014,51(01):17-30.