楊帆
【摘 要】隨著移動(dòng)互聯(lián)網(wǎng)時(shí)代的到來,企業(yè)培訓(xùn)新員工的傳統(tǒng)方式已經(jīng)越來越不符合企業(yè)發(fā)展的需要,文章通過采用基于微信平臺(tái)的微信小程序以及當(dāng)前大并發(fā)數(shù)據(jù)處理最主流的Node.js+MongoDB技術(shù)設(shè)計(jì)實(shí)現(xiàn)了一套C/S架構(gòu)的員工培訓(xùn)平臺(tái),在滿足企業(yè)培訓(xùn)新員工業(yè)務(wù)需求的同時(shí)提高了新員工培訓(xùn)的效果,并且減輕了企業(yè)負(fù)擔(dān)。
【關(guān)鍵詞】微信小程序;Node.js;MongoDB;員工培訓(xùn)平臺(tái)
中圖分類號(hào): TP311.56 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 2095-2457(2018)15-0001-003
DOI:10.19694/j.cnki.issn2095-2457.2018.15.001
Design and implementation of staff training platform based on WeChat small program
YANG Fan
(institute 20, China electronic technology corporation,Xi 'an Shaanxi 710068)
【Abstract】with the advent of the era of mobile Internet, the traditional way of enterprise training new staff already more and more do not accord with the needs of the development of enterprises, the paper USES the platform based on WeChat WeChat small programs as well as the current big concurrent data processing is the most mainstream Node. Js + mongo implements a set of C/S architecture technology design platform for the staff training, to meet the needs of the business enterprise training new staff at the same time improve the effectiveness of the new staff training, and reduce the burden of enterprises.
【Key words】WeChat small program; Node. Js; Mongo. Staff training platform
0 引言
近年來,我國移動(dòng)互聯(lián)網(wǎng)發(fā)展規(guī)模正在不斷擴(kuò)大,截止2017年12月,我國手機(jī)網(wǎng)民規(guī)模達(dá)7.53億,網(wǎng)民中使用手機(jī)上網(wǎng)人群的占比達(dá)97.5%[1],移動(dòng)互聯(lián)網(wǎng)以其便捷化、智能化和精準(zhǔn)化的優(yōu)勢(shì)正快速成為個(gè)人、企業(yè)和機(jī)構(gòu)業(yè)務(wù)處理的新平臺(tái)。目前在國內(nèi)眾多的移動(dòng)互聯(lián)網(wǎng)應(yīng)用中,微信是移動(dòng)端下載安裝最多,使用最頻繁的應(yīng)用之一,截止2018年第一季度,微信與WeChat的合并月活躍帳戶數(shù)已達(dá)到10.4億[2],微信已經(jīng)成為了中國移動(dòng)互聯(lián)網(wǎng)的國民級(jí)應(yīng)用,而2017年騰訊正式推出的基于微信平臺(tái)的輕型應(yīng)用微信小程序,正越來越成為移動(dòng)互聯(lián)網(wǎng)熱門的平臺(tái)解決方案。
微信小程序是一種不需要下載安裝即可使用的應(yīng)用,用戶掃一掃或者搜一下即可打開應(yīng)用,也實(shí)現(xiàn)了用完即走的理念,用戶不用關(guān)心是否安裝太多應(yīng)用的問題,應(yīng)用隨時(shí)可用,但又無須安裝卸載[3]。與傳統(tǒng)的手機(jī)APP相比,微信小程序的優(yōu)勢(shì)在于開發(fā)難度和軟件維護(hù)成本較低,同時(shí)具有出色的用戶體驗(yàn),再加上很容易憑借微信巨大的用戶量進(jìn)行推廣,這些優(yōu)勢(shì)都非常適合針對(duì)功能簡單、使用頻次較低的非剛需場景提供服務(wù)。
對(duì)于企業(yè)培訓(xùn)新員工而言,傳統(tǒng)的方式是向新員工提供學(xué)習(xí)資料、開辦學(xué)習(xí)講座以及對(duì)新員工進(jìn)行考試測驗(yàn)等,這個(gè)過程不但培訓(xùn)周期較長,而且占用了企業(yè)大量的人力和物力資源,增加了企業(yè)負(fù)擔(dān)。因?yàn)槠髽I(yè)培訓(xùn)新員工屬于低頻次和非剛需的場景,符合微信小程序“用之即來,用完即走”的應(yīng)用服務(wù)特點(diǎn),所以可以設(shè)計(jì)一個(gè)基于微信小程序的員工培訓(xùn)平臺(tái),將學(xué)習(xí)資料、講座視頻以及模擬測驗(yàn)考題等放到員工培訓(xùn)平臺(tái)上,這樣新員工通過微信APP就能很方便地找到員工培訓(xùn)平臺(tái)并進(jìn)行自主學(xué)習(xí)和測驗(yàn)。
1 系統(tǒng)架構(gòu)及關(guān)鍵技術(shù)
1.1 系統(tǒng)組成
員工培訓(xùn)平臺(tái)采用的是C/S架構(gòu),員工培訓(xùn)平臺(tái)在開發(fā)完畢后會(huì)上傳至微信服務(wù)器中,客戶端運(yùn)行在以智能手機(jī)和平板電腦為主要載體的移動(dòng)終端上,而服務(wù)器端則搭建在基于云平臺(tái)的云服務(wù)器上,系統(tǒng)組成如圖1所示。
用戶通過客戶端的微信APP掃一掃或者搜索微信小程序,就可以從微信服務(wù)器下載員工培訓(xùn)平臺(tái)到微信APP上,接著用戶使用員工培訓(xùn)平臺(tái)發(fā)起消息請(qǐng)求,消息請(qǐng)求經(jīng)過微信APP驗(yàn)證通過后進(jìn)行轉(zhuǎn)發(fā),通過移動(dòng)網(wǎng)絡(luò)到達(dá)微信服務(wù)器,微信服務(wù)器接收到消息請(qǐng)求后會(huì)轉(zhuǎn)發(fā)給云服務(wù)器,云服務(wù)器對(duì)消息請(qǐng)求進(jìn)行解析提取和業(yè)務(wù)邏輯處理,再將處理結(jié)果返回給微信服務(wù)器,最后微信服務(wù)器接收到處理結(jié)果后轉(zhuǎn)發(fā)給客戶端的微信APP,微信APP再轉(zhuǎn)發(fā)給員工培訓(xùn)平臺(tái),實(shí)現(xiàn)客戶端和服務(wù)器端的雙向數(shù)據(jù)交互。
1.2 關(guān)鍵技術(shù)
1.2.1 Node.js
Node.js是一個(gè)基于Google Chrome V8引擎的服務(wù)器端JavaScript運(yùn)行環(huán)境,用來方便地搭建響應(yīng)速度快、易于擴(kuò)展的網(wǎng)絡(luò)應(yīng)用。Node.js采用了單線程、事件驅(qū)動(dòng)和異步非阻塞I/O的設(shè)計(jì)特性,通過單線程的事件輪詢機(jī)制實(shí)現(xiàn)高并發(fā)請(qǐng)求處理,這點(diǎn)非常適合于構(gòu)建大型面向用戶端的高并發(fā)Web應(yīng)用[4]。而相比較Apache、IIS這類Web服務(wù)器,Node.js能輕量和高效地處理服務(wù)器端的業(yè)務(wù)邏輯、渲染頁面和進(jìn)行路由控制等,并且Node.js還提供模塊系統(tǒng),用戶可以使用模塊系統(tǒng)載入內(nèi)置模塊或通過NPM安裝的第三方模塊來便捷高效地與客戶端、數(shù)據(jù)庫等系統(tǒng)組件進(jìn)行交互,所以使用Node.js來部署Web服務(wù),具有很好的靈活性、伸縮性和可擴(kuò)展性。
1.2.2 Express
Express是一個(gè)簡潔而靈活的Node.js Web應(yīng)用框架,提供了一系列強(qiáng)大的特性來幫助開發(fā)者創(chuàng)建各種Web應(yīng)用[5],其強(qiáng)大的特性表現(xiàn)為:快速進(jìn)行開發(fā),擁有靈活的擴(kuò)展機(jī)制,使用簡單方便,路由、多模塊支持等[6]。Express框架建立在Node.js內(nèi)置的http模塊上,其核心并不是對(duì)Node.js已有的特性進(jìn)行二次抽象,只是在其之上擴(kuò)展了Web應(yīng)用所需的基本功能。因?yàn)镋xpress框架對(duì)Node.js的Web應(yīng)用進(jìn)行了適度的封裝和擴(kuò)展,所以Express框架具有高性能和擴(kuò)展性強(qiáng)的優(yōu)點(diǎn)。
1.2.3 MongoDB
MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫[7],可以為Web應(yīng)用提供可擴(kuò)展的高性能的數(shù)據(jù)存儲(chǔ)解決方案,具有高性能、易部署、易使用、易于進(jìn)行數(shù)據(jù)存儲(chǔ)及管理等優(yōu)點(diǎn)。MongoDB是面向文件存儲(chǔ)的NoSQL數(shù)據(jù)庫,它支持的數(shù)據(jù)結(jié)構(gòu)類似json的bson格式,可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型,另外,MongoDB的GridFS機(jī)制可以用于存儲(chǔ)和檢索大文件,如圖片、視頻和音頻文件等,非常適合現(xiàn)今移動(dòng)互聯(lián)網(wǎng)的Web應(yīng)用。
1.3 體系架構(gòu)
員工培訓(xùn)平臺(tái)的體系架構(gòu)分為三層:前端展示層、業(yè)務(wù)邏輯層和數(shù)據(jù)持久層。前端展示層用于在客戶端提供面向用戶的交互界面,并對(duì)員工培訓(xùn)平臺(tái)功能應(yīng)用進(jìn)行業(yè)務(wù)處理。業(yè)務(wù)邏輯層用于在服務(wù)器端提供Web通信和業(yè)務(wù)邏輯處理功能。數(shù)據(jù)持久層用于存儲(chǔ)業(yè)務(wù)數(shù)據(jù)。體系架構(gòu)如圖2所示。
客戶端由前端展示層構(gòu)成。前端展示層基于微信小程序的MINA框架,包含視圖層和邏輯層兩部分:視圖層由WXML和WXSS構(gòu)成,WXML文件用于描述頁面的結(jié)構(gòu),WXSS文件用于描述頁面的樣式,視圖層將用戶使用UI控件觸發(fā)的事件發(fā)送給邏輯層進(jìn)行處理,同時(shí)將邏輯層發(fā)來的JSON格式數(shù)據(jù)反應(yīng)成視圖;邏輯層由JavaScript編寫,用于將JSON格式的數(shù)據(jù)進(jìn)行處理后發(fā)送給視圖層,同時(shí)接受視圖層的事件反饋[8],并且由于微信小程序支持WebSocket接口,所以邏輯層可以采用HTTPS和WebSocket協(xié)議實(shí)現(xiàn)與服務(wù)器端的Web通信功能。
服務(wù)器端由業(yè)務(wù)邏輯層和數(shù)據(jù)持久層構(gòu)成。業(yè)務(wù)邏輯層使用Node.js構(gòu)建服務(wù)器端的運(yùn)行環(huán)境,通過載入Express模塊搭建Web應(yīng)用框架,在Express框架搭建完畢后,服務(wù)器端主要實(shí)現(xiàn)三部分功能:首先是服務(wù)器端與客戶端的Web通信功能。Socket.io是一個(gè)開源、跨平臺(tái)且支持客戶端和服務(wù)器端進(jìn)行實(shí)時(shí)雙向通信的WebSocket庫[9-10],通過在Express框架基礎(chǔ)上載入Socket.io模塊,就能夠在Express框架中構(gòu)建Web服務(wù)器,實(shí)現(xiàn)基于HTTPS和WebSocket協(xié)議的雙向Web通信;其次是業(yè)務(wù)邏輯層與數(shù)據(jù)持久層中MongoDB數(shù)據(jù)庫的交互功能。Mongoose是在Node.js異步環(huán)境下對(duì)MongoDB數(shù)據(jù)庫進(jìn)行便捷操作的對(duì)象模型工具,通過在Express框架基礎(chǔ)上載入Mongoose模塊,就能夠在Express框架中調(diào)用Mongoose API實(shí)現(xiàn)對(duì)MongoDB數(shù)據(jù)庫的交互操作;最后是在Express框架基礎(chǔ)上的業(yè)務(wù)邏輯處理功能。主要的實(shí)現(xiàn)邏輯為通過基于Express框架設(shè)置中間件響應(yīng)HTTP請(qǐng)求,并根據(jù)不同的HTTP請(qǐng)求設(shè)計(jì)路由,再將不同的HTTP請(qǐng)求轉(zhuǎn)發(fā)給對(duì)應(yīng)的消息處理程序去處理,最后將不同的處理結(jié)果返回給客戶端。整個(gè)系統(tǒng)的業(yè)務(wù)數(shù)據(jù)交互流程如圖3所示。
2 功能實(shí)現(xiàn)
員工培訓(xùn)平臺(tái)的功能模塊包括三個(gè)部分:試題管理、知識(shí)學(xué)習(xí)和附屬功能。功能模塊如圖4所示。
知識(shí)學(xué)習(xí)模塊包括兩個(gè)子功能:資料瀏覽和在線提問。資料瀏覽功能是將全部員工培訓(xùn)資料按照類別存放在員工培訓(xùn)平臺(tái)上,新員工可以隨時(shí)瀏覽和學(xué)習(xí)全部培訓(xùn)資料。在線提問功能是在員工培訓(xùn)平臺(tái)上建立一個(gè)留言板,新員工可以將學(xué)習(xí)中遇到的問題發(fā)到留言板上,培訓(xùn)老師可以在留言板上解答新員工提出的問題。
試題管理模塊包括兩個(gè)子功能:知識(shí)測試和考試管理。知識(shí)測試功能是通過模擬測試題生成測試卷并讓新員工進(jìn)行自主測試,模擬測試題分為單選題、多選題、判斷題、填空題和簡答題等。知識(shí)測試分成三種測試方式:順序測試、隨機(jī)測試和專項(xiàng)測試。順序測試是按照所有類別模擬測試題的默認(rèn)順序生成測試卷;隨機(jī)測試是打亂所有類別模擬測試題的默認(rèn)順序,然后隨機(jī)組合成測試卷;專項(xiàng)測試是將每一種模擬測試題單獨(dú)拿出來組合成測試卷??荚嚬芾砉δ芊譃閮刹糠止δ埽嚎荚囋u(píng)測和考試統(tǒng)計(jì)??荚囋u(píng)測是在模擬測試題庫中按照固定數(shù)量生成一份包含所有類別模擬測試題的考試卷,新員工考試完畢后提交試卷并進(jìn)行打分??荚嚱y(tǒng)計(jì)是對(duì)新員工每次考試后,將總分、平均分、錯(cuò)題數(shù)及錯(cuò)題率等進(jìn)行統(tǒng)計(jì)。
附屬功能模塊包括三個(gè)子功能:錯(cuò)題集、題目搜索和題目收藏。錯(cuò)題集功能是統(tǒng)計(jì)新員工累次考試中做錯(cuò)的題目,方便新員工在復(fù)習(xí)過程中能夠更有針對(duì)性地查找知識(shí)漏洞。題目搜索功能是幫助新員工按照關(guān)鍵字快速查找指定的模擬考試題。題目收藏功能是將需要重點(diǎn)關(guān)注的模擬考試題標(biāo)記出來,幫助新員工進(jìn)行重點(diǎn)學(xué)習(xí)。
3 結(jié)語
本文通過分析微信小程序的服務(wù)特性,采用基于微信小程序以及服務(wù)器端主流的Node.js+MongoDB技術(shù)設(shè)計(jì)實(shí)現(xiàn)了一套C/S架構(gòu)的員工培訓(xùn)平臺(tái)解決方案,相比起傳統(tǒng)APP而言開發(fā)難度和維護(hù)成本更低,且易于推廣,是符合下一代移動(dòng)互聯(lián)網(wǎng)“微、小、輕”的產(chǎn)業(yè)發(fā)展趨勢(shì)。企業(yè)采用員工培訓(xùn)平臺(tái)培訓(xùn)新員工,不但滿足了業(yè)務(wù)需求,提高了新員工培訓(xùn)的效果,而且減輕了企業(yè)負(fù)擔(dān),提高了企業(yè)信息化程度,符合當(dāng)前移動(dòng)互聯(lián)網(wǎng)時(shí)代的發(fā)展潮流。
【參考文獻(xiàn)】
[1]CNNIC.第41次中國互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告[EB/OL].[2018-01-31].http://cnnic.cn/gywm/xwzx/rdxw/201801/t20180131_70188.htm.
[2]中關(guān)村在線.騰訊發(fā)布2018年第一季度財(cái)報(bào) 總營收735.28億元[EB/OL].[2018-05-16].http://m.zol.com.cn/article/6889813.html tuiguangid=ifeng.
[3]張小龍.微信小程序入口在哪?有什么用?[J].計(jì)算機(jī)與網(wǎng)絡(luò),2017,548(4):50.
[4]黃揚(yáng)子.基于NodeJS平臺(tái)搭建REST風(fēng)格Web服務(wù)[J].無線互聯(lián)科技,2015(16):57-59.
[5]程桂花,沈煒,何松林等.Node.JS中Express框架路由機(jī)制的研究[J].工業(yè)控制計(jì)算機(jī),2016,29(8):101-102.
[6]朱建兵.基于Node.JS高并發(fā)網(wǎng)絡(luò)應(yīng)用架構(gòu)的研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2013.
[7]霍多羅夫,迪洛爾夫.MongoDB權(quán)威指南[M].程顯鋒譯.北京:人民郵電出版社,2011.
[8]微信小程序開發(fā)文檔[EB/OL].[2017-01-09].http://developers.weixin.qq.com/miniprogram/dev/framework/app-service/.
[9]李廣文.基于Socket.io的互動(dòng)教學(xué)即時(shí)反饋系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].中國現(xiàn)代教育裝備,2012(18):10-12.
[10]黃經(jīng)贏.基于Socket.io+Node.js+Redis構(gòu)建高效即時(shí)通訊系統(tǒng)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2014(19):62-64,69.