朱曉陽 劉苑如 范仲言



摘要:為了實(shí)現(xiàn)在線學(xué)習(xí)平臺(tái)的高效利用,該文設(shè)計(jì)并實(shí)現(xiàn)了可供多個(gè)前端平臺(tái)使用的后端系統(tǒng)。學(xué)習(xí)平臺(tái)采用前后端分離開發(fā)方式,其中后端系統(tǒng)的設(shè)計(jì)采用Node.js腳本語言與MySQL數(shù)據(jù)庫技術(shù),可以與APP或者網(wǎng)頁端等前端系統(tǒng)通過JSON格式接口進(jìn)行信息交互。系統(tǒng)設(shè)計(jì)包含總體設(shè)計(jì),業(yè)務(wù)邏輯設(shè)計(jì)和數(shù)據(jù)庫等設(shè)計(jì)模塊。經(jīng)過系統(tǒng)實(shí)現(xiàn)與測試,后端系統(tǒng)可以正常提供服務(wù),為學(xué)習(xí)平臺(tái)的搭建提供一種后端解決方案。
關(guān)鍵詞:Node.js;學(xué)習(xí)平臺(tái);后端系統(tǒng);MySQL;JSON
中圖分類號(hào):TP311.52 ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)13-0116-03
Abstract: In order to make efficient use of online learning platform, this paper designs and implements a background system which can be used by many foreground platforms. The learning platform development uses the method of separation of front and back development. The design of background system adopts Node.js script language and MySQL database technology. It can interact with foreground platforms such as APP or web page through JSON format interface. The system design includes general design, business logic design and database design modules. After system implementation and testing, the background system can provide normal services, and provide a practical scheme of background system for the construction of learning platform.
Key words: Node.js; learning platform; background system; MySQL; JSON
1 背景
隨著信息網(wǎng)絡(luò)的普及,學(xué)生的學(xué)習(xí)途徑不僅僅局限于課堂上。學(xué)生通過互聯(lián)網(wǎng)可以在電腦端、手機(jī)端來實(shí)現(xiàn)學(xué)習(xí)資源的獲取。針對(duì)多平臺(tái)學(xué)習(xí)的需求,同時(shí)保持各個(gè)平臺(tái)之間學(xué)習(xí)進(jìn)度的統(tǒng)一性,需要開發(fā)一項(xiàng)可以多個(gè)前端平臺(tái)可以共用的后端系統(tǒng)[1],提供全新的學(xué)習(xí)平臺(tái)服務(wù)。
本后端系統(tǒng)的實(shí)現(xiàn)是一款基于Node.js腳本語言[2]的系統(tǒng),可供多個(gè)前臺(tái)系統(tǒng)使用,在同一后臺(tái)情況下,多平臺(tái)可以使用同一賬號(hào)體系登錄系統(tǒng),同時(shí)學(xué)生的學(xué)習(xí)進(jìn)度在多平臺(tái)直接保持同步,實(shí)現(xiàn)了一個(gè)后端系統(tǒng),多個(gè)前端平臺(tái)共用[3]的效果,提高了系統(tǒng)的使用率。
2 在線學(xué)習(xí)平臺(tái)的主要技術(shù)
在線學(xué)習(xí)平臺(tái)的實(shí)現(xiàn)離不開服務(wù)器后端開發(fā)技術(shù)與數(shù)據(jù)庫技術(shù)。本系統(tǒng)設(shè)計(jì)過程中采用服務(wù)器后端開發(fā)技術(shù)是Node.js,數(shù)據(jù)庫技術(shù)采用的MySQL[4]。
Node.js是用基于Chrome JavaScript的一種運(yùn)行環(huán)境,由于它經(jīng)常用來構(gòu)建響應(yīng)快速與易于擴(kuò)展的網(wǎng)絡(luò)應(yīng)用程序。所以Node.js作為一個(gè)非常流行的框架,適合事件驅(qū)動(dòng)和異步編程,能夠提高服務(wù)器后端系統(tǒng)的性能與優(yōu)秀的負(fù)載能力,適合作為為前端系統(tǒng)提供接口的語言。
MySQL作為數(shù)據(jù)存儲(chǔ)和管理的數(shù)據(jù)庫系統(tǒng),由于其速度快、體積小、總體擁有成本低,尤其是開源這一特點(diǎn),一般中小型網(wǎng)站的后臺(tái)數(shù)據(jù)庫開發(fā)都選擇 MySQL。作為一種關(guān)系型數(shù)據(jù)庫,支持多線程Thread,多用戶以及支持規(guī)范的SQL數(shù)據(jù)庫語言。
3 系統(tǒng)總體設(shè)計(jì)
該學(xué)習(xí)平臺(tái)分為信息服務(wù)和后臺(tái)數(shù)據(jù)管理兩部分:信息服務(wù)部分向?qū)W生提供教學(xué)視頻同時(shí)采集學(xué)生信息和相關(guān)學(xué)習(xí)記錄;后臺(tái)數(shù)據(jù)管理系統(tǒng)實(shí)現(xiàn)用戶的權(quán)限和用戶的信息管理兩部分。系統(tǒng)具體模塊如圖 1 所示,包含顯示層、業(yè)務(wù)層和數(shù)據(jù)訪問層[5],顯示層是用戶與平臺(tái)的接口,負(fù)責(zé)頁面顯示,處理不同角色接收的信息和角色的頁面;業(yè)務(wù)層處理學(xué)生與教師的數(shù)據(jù)業(yè)務(wù)邏輯操作,包括資源管理、用戶管理和統(tǒng)計(jì)分析等;數(shù)據(jù)訪問層用于實(shí)現(xiàn)用戶信息的查詢、增加、修改和刪除等功能。
3.1 角色模塊設(shè)計(jì)
該系統(tǒng)有3大模塊,分別是學(xué)生、教師以及管理員,管理員主要負(fù)責(zé)信息管理和設(shè)置權(quán)限,對(duì)學(xué)生、教師分配不同的平臺(tái)使用權(quán)限。同時(shí)根據(jù)學(xué)號(hào)的匹配將教師與學(xué)生之間連接。學(xué)生主要使用學(xué)習(xí)中心和個(gè)人中心來完成自己的學(xué)習(xí)任務(wù)。學(xué)習(xí)中心包含教學(xué)視頻;個(gè)人中心主要用于顯示個(gè)人需要完成的學(xué)習(xí)任務(wù)和學(xué)習(xí)進(jìn)度等。教師主要訪問課程和學(xué)生模塊。任課教師通過課程模塊查看代課信息,任課教師、導(dǎo)師通過學(xué)生管理模塊查看學(xué)生的課程學(xué)習(xí)情況以及其他相關(guān)聯(lián)的記錄,給出相應(yīng)的指導(dǎo)或建議。系統(tǒng)管理員可以通過信息管理模塊了解師生交流互動(dòng)情況同時(shí)利用數(shù)據(jù)分析結(jié)果調(diào)整服務(wù)。
3.2 業(yè)務(wù)邏輯設(shè)計(jì)
學(xué)生客戶端,作為登錄本學(xué)習(xí)平臺(tái)的重要入口,界面設(shè)計(jì)簡潔為主,擁有基礎(chǔ)的用戶名密碼輸入框和登陸與注冊的按鈕,充分考慮到用戶注冊的便利性。
教師端側(cè)重于教師上傳學(xué)習(xí)資料與統(tǒng)計(jì)學(xué)生的學(xué)習(xí)行為,在教師端設(shè)置了課程模塊,課程模塊中設(shè)置有上傳接口,后端系統(tǒng)的設(shè)計(jì)包含上傳學(xué)習(xí)視頻與學(xué)習(xí)步驟,學(xué)習(xí)作業(yè)的接口。
管理員的權(quán)限最高,它可以新建、修改、刪除用戶和用戶信息,授權(quán)用戶登錄系統(tǒng)。學(xué)生能查看修改個(gè)人信息,查看學(xué)習(xí)中心內(nèi)容,教師能查看和修改個(gè)人信息、查看相關(guān)學(xué)生提交的課程記錄,給出意見或建議。所有數(shù)據(jù)的更改都經(jīng)過后臺(tái)的數(shù)據(jù)庫。具體業(yè)務(wù)邏輯關(guān)系如圖 2所示。管理員位于系統(tǒng)的中心位置,學(xué)生與教師賬號(hào)登錄之后獲取不同的權(quán)限,兩者之間的數(shù)據(jù)交互通過后臺(tái)數(shù)據(jù)庫來完成,而管理員對(duì)整體數(shù)據(jù)擁有完全權(quán)限,完成分配角色權(quán)限的功能與信息交互的功能,進(jìn)而三者之間可以緊密關(guān)聯(lián)業(yè)務(wù),是此系統(tǒng)的業(yè)務(wù)邏輯關(guān)鍵部分。
4 后端系統(tǒng)的實(shí)現(xiàn)
4.1 系統(tǒng)整體架構(gòu)與Node.js服務(wù)配置實(shí)現(xiàn)
該系統(tǒng)采用Node.js 語言開發(fā),采用MySQL數(shù)據(jù)庫。Node.js使用Visual Studio Code1.32作為主要開發(fā)工具來編寫腳本語言。數(shù)據(jù)庫MySQL安裝在CentOS服務(wù)器中,并且數(shù)據(jù)庫架設(shè)在單獨(dú)服務(wù)器的方式提供數(shù)據(jù)服務(wù),這樣可以保證數(shù)據(jù)庫服務(wù)的穩(wěn)定獨(dú)立運(yùn)行,同時(shí)也為未來后端服務(wù)的可擴(kuò)展性提供保障,前后端的整體架構(gòu)如圖3所示。
Node.js 服務(wù)利用框架來實(shí)現(xiàn)開發(fā),采用MVC 的設(shè)計(jì)模式,本后端系統(tǒng)借助 Express 框架實(shí)現(xiàn)[6]。在 Express 的作用下建立一個(gè)項(xiàng)目,之后對(duì)項(xiàng)目依賴性進(jìn)行評(píng)估,并結(jié)合 MVC 架構(gòu),model 層依賴于 Modelproxy,controller 層依賴于 Express,view層依賴于 Handlebars。在package.json 中進(jìn)行配置,并全面執(zhí)行npm install,自動(dòng)安裝對(duì)應(yīng)依賴,當(dāng)項(xiàng)目全部配置完成后,執(zhí)行命令npm start可以啟動(dòng)后端服務(wù)。
4.2 數(shù)據(jù)庫服務(wù)器實(shí)現(xiàn)
為了保證數(shù)據(jù)的安全性,對(duì)外開放的Node.js服務(wù)器僅通過內(nèi)網(wǎng)鏈接數(shù)據(jù)庫服務(wù)器,在內(nèi)網(wǎng)服務(wù)器中安裝CentOS7,并在安裝MySQL組件之后,完成MySQL初始化任務(wù),最后通過進(jìn)入到MySQL的命令行界面輸入SQL語句創(chuàng)建后端系統(tǒng)相關(guān)數(shù)據(jù)表,以用戶信息表為例的創(chuàng)建語句核心代碼如下:
CREATE TABLE `user`. ?(
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NULL,
`age` tinyint(4) NULL,
`class` varchar(50) NULL,
PRIMARY KEY (`id`)
);
4.3 數(shù)據(jù)庫服務(wù)器連接實(shí)現(xiàn)
本系統(tǒng)是基于Node.js和MySQL運(yùn)行實(shí)現(xiàn)的,在Node.js服務(wù)器中需要通過內(nèi)網(wǎng)IP地址鏈接MySQL服務(wù)器,具體的Node.js連接數(shù)據(jù)庫服務(wù)器的核心代碼如下:
module.exports = {
mysql: {
host: '192.168.80.124',
user: 'remote',
password: '$#%!.coM',
database:'leandb',
port: 3306
}
4.4 API數(shù)據(jù)接口實(shí)現(xiàn)
利用Node.js中的Express框架實(shí)現(xiàn)API接口[7],在接口中需求可以get與post數(shù)據(jù),并且多平臺(tái)直接以JSON[8]數(shù)據(jù)格式進(jìn)行交互,添加用戶數(shù)據(jù)與修改用戶數(shù)據(jù)的路由代碼如下:
router.get('/addUser', function(req, res, next) {
userDao.add(req, res, next);
});
router.post('/updateUser', function(req, res, next) {
userDao.update(req, res, next);
});
Node.js服務(wù)器的IP地址為192.168.80.88,在瀏覽器中進(jìn)行測試如圖4所示,通過get方法傳遞name與age的值成功把值添加到數(shù)據(jù)庫服務(wù)器。
Node.js服務(wù)器同時(shí)實(shí)現(xiàn)了API接口的POST方法,在火狐FireFox瀏覽器中進(jìn)行測試,利用的Hackbar插件進(jìn)行post數(shù)據(jù)實(shí)現(xiàn)了API接口的更新功能,測試結(jié)果如圖5所示。
5 結(jié)論
為解決高校學(xué)生能夠多平臺(tái)學(xué)習(xí)教師在線教學(xué)資源,實(shí)現(xiàn)在線資源的高效利用。學(xué)習(xí)平臺(tái)的后端系統(tǒng)采用Node.js中成熟的Express框架實(shí)現(xiàn)JSON數(shù)據(jù)與多平臺(tái)客戶端交互的功能。后端系統(tǒng)設(shè)計(jì)包含總體設(shè)計(jì),業(yè)務(wù)邏輯設(shè)計(jì)和數(shù)據(jù)庫等設(shè)計(jì)。系統(tǒng)的實(shí)現(xiàn)部分詳細(xì)闡述了后端的數(shù)據(jù)庫實(shí)現(xiàn)與API接口實(shí)現(xiàn),最后通過系統(tǒng)測試,后端系統(tǒng)可以正常運(yùn)行,為在線學(xué)習(xí)平臺(tái)的搭建提供一種后端解決方案。
參考文獻(xiàn):
[1] 孫娉娉, 李新, 史廣軍. 基于前后端分離的內(nèi)容管理系統(tǒng)[J]. 科研信息化技術(shù)與應(yīng)用, 2016, 7(4): 70-75.
[2] 駱文亮. Node.js服務(wù)器技術(shù)初探[J]. 無線互聯(lián)科技, 2014(3): 227-227.
[3] 張艷, 吳曉翔. 基于Node.js的前端教程網(wǎng)站設(shè)計(jì)與開發(fā)[J]. 福建電腦, 2018(9): 37-38.
[4] 基于Node.js的智慧農(nóng)業(yè)數(shù)據(jù)采集平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 杭州: 浙江理工大學(xué), 2018.
[5] 基于nodejs的微博系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 長沙: 電子科技大學(xué), 2014.
[6] 王伶俐, 張傳國. 基于NodeJS+Express框架的輕應(yīng)用定制平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)科學(xué), 2017, 44(S2): 606-609.
[7] 潘從祥, 蔣樂天. 基于Node.js的TurtleBot機(jī)器人JavaScript API設(shè)計(jì)[J]. 信息技術(shù), 2018(3).
[8] Bonetta D, Brantner M. FAD.js: fast JSON data access using JIT-based speculative optimizations[J]. Proceedings of the Vldb Endowment, 2017, 10(12): 1778-1789.
【通聯(lián)編輯:謝媛媛】