李春紅 陳又銨 李靖怡
摘 要:隨著移動互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,移動設(shè)備已經(jīng)成為了現(xiàn)代生活必不可少的一部分,如今在國內(nèi)外很多校園都可以看到智慧校園導(dǎo)游的身影,智慧校園導(dǎo)游可以幫助新生和游玩的訪客快速找到他們想要到達的位置,還可以方便地在線上了解校園的信息。一個基于現(xiàn)代GPS和交互式的應(yīng)用出現(xiàn)彌補了傳統(tǒng)導(dǎo)游系統(tǒng)的不足。本文將使用React Native架構(gòu)結(jié)合Express、Leancloud、Socket.IO等技術(shù)快速開發(fā)一個跨平臺的智慧校園導(dǎo)游系統(tǒng)。
關(guān)鍵詞:校園導(dǎo)游;React Native;跨平臺;Node.js
中圖分類號:TP311.52 文獻標識碼:A 文章編號:1671-2064(2019)22-0057-02
1 緒論
1.1 項目背景
大學(xué)校園是一個復(fù)雜的基礎(chǔ)設(shè)施,特別是新生和第一次接觸的人很難找到自己方向和位置。廣東海洋大學(xué)寸金學(xué)院占地超過2100畝,里面有許多不同的建筑,最高有11層。大多數(shù)建筑物互相連接。即使校園中的某些地方有地圖提示,用戶還是無法獲得繼續(xù)的幫助來到達目的地。目前有許多應(yīng)用程序提供導(dǎo)航系統(tǒng),如高德地圖、Apple Map等,當然它們的功能在大學(xué)校園內(nèi)并不是很有效地提供大學(xué)校園內(nèi)的所有位置。
1.2 項目目的
(1)使用移動解決方案開發(fā)校園導(dǎo)航模塊,方便廣東海洋大學(xué)寸金學(xué)院的新生和訪客。(2)管理員可以通過后臺管理系統(tǒng)推送、更新和管理信息。(3)用戶可以在社交模塊進行交流。
2 可行性分析
(1)本軟件導(dǎo)航模塊主要分為內(nèi)部用戶和外界用戶。內(nèi)部用戶包括學(xué)校師生、職工。本系統(tǒng)幫助他們獲取校園內(nèi)部各個基礎(chǔ)設(shè)施(包括教學(xué)樓、學(xué)院樓、學(xué)生公寓、食堂、運動場、超市、等等)的空間位置、詳細信息,為其生活、工作、學(xué)習(xí)提供方便。外界用戶為訪問學(xué)者和新生家長,他們能方便的向系統(tǒng)尋求幫助,比如快速獲取學(xué)校某地的地理位置及最短路線,查詢某地點詳細信息等,通過以上分析具有一定的實用價值,有很強的用戶需求,該系統(tǒng)值得開發(fā)。(2)本團隊有很好的編程技術(shù)基礎(chǔ)。(3)有專業(yè)指導(dǎo)老師的支持和指導(dǎo)。
3 需求分析
3.1 軟件設(shè)計
軟件設(shè)計架構(gòu)如圖1所示。
3.2 軟件描述、開發(fā)環(huán)境及生產(chǎn)環(huán)境
3.2.1 軟件描述
本軟件主要由校園資訊、校園導(dǎo)航、社交三大模塊組成。用戶可以在校園資訊模塊獲取到校園的最新資訊。如:校園、學(xué)生會、各社團等校園機構(gòu)的新聞和通知;導(dǎo)航模塊:為不熟悉校園的用戶提供最快捷的導(dǎo)航;社交模塊:類似于微博、Twitter、Facebook、微信朋友圈微博客系統(tǒng),用戶可以發(fā)表最新動態(tài)、想法和問題。
3.2.2 開發(fā)環(huán)境及生產(chǎn)環(huán)境
(1)開發(fā)系統(tǒng):macOS Catalina 10.15。(2)基礎(chǔ)工具:Node.js、yarn。(3)開發(fā)工具:Visual Studio Code、Webstorm、Xcde、Android Studio。(4)核心架構(gòu):React Native、Express。(5)數(shù)據(jù)庫:MongoDB。(6)用戶管理系統(tǒng):LeanCloud。
4 系統(tǒng)總體設(shè)計
4.1 系統(tǒng)架構(gòu)設(shè)計
系統(tǒng)架構(gòu)圖如圖2所示。
4.2 數(shù)據(jù)庫設(shè)計
本系統(tǒng)采用MongoDB作為數(shù)據(jù)庫。其主要特點是高性能、易存儲,易部署。MongoDB支持類似于json的bson格式,可以很方便地存儲比較復(fù)雜的數(shù)據(jù)類型。
本系統(tǒng)數(shù)據(jù)集合總有6個,分別是_User(用戶信息集合)、Map(地圖信息集合)、New(校園資訊集合)、Comments(微博客推文集合)、CommentReply(微博客推文回復(fù)集合)。
5 系統(tǒng)詳細設(shè)計與實現(xiàn)
5.1 校園資訊模塊
校園資訊模塊是系統(tǒng)的首個頁面,用戶第一時間看到校園的最新資訊。頁面布局十分簡潔,背景主頁有白色和黑色,應(yīng)用會根據(jù)系統(tǒng)的設(shè)定改變而改變,完成適配IOS13的Dark Model。頁內(nèi)元素只有右上角的當天時間、和卡片式按鈕組成。
5.2 導(dǎo)游模塊
導(dǎo)游模塊是系統(tǒng)的第二個頁面。設(shè)計和布局上采用簡約化、扁平化風(fēng)格。頁內(nèi)元素主要由一個List組成,每個List元素左上角都有一個建筑物類別名稱,方便用戶方便快速尋找目的地點,為用戶打開目的地的詳細頁。在詳細頁里面用戶可以看到目的地所在位置、圖片、介紹和一個路線按鈕。當用戶點擊路線按鈕后系統(tǒng)會在底部彈出一個ActionSheet,用戶可以根據(jù)自己的愛好選擇要使用的導(dǎo)航軟件進行導(dǎo)航,用戶點擊后系統(tǒng)會跳轉(zhuǎn)到用戶所選擇的導(dǎo)航軟件并開始導(dǎo)航。
5.3 社交模塊
5.3.1 用戶登錄注冊頁面
用戶注冊登錄社交模塊的入口,這是用戶進行的第一步操作,用戶輸入賬號密碼后,LeanCloud會查詢該用戶是否存在;若是存在,LeanCloud會自動判斷用戶所輸入的密碼是否匹配,若匹配,LeanCloud回發(fā)送一個SessionToken到軟件上,并跳轉(zhuǎn)到發(fā)現(xiàn)頁(社交模塊的首頁)。
5.3.2 發(fā)現(xiàn)頁
(1)發(fā)布推文功能。用戶可以發(fā)布動態(tài)、想法和問題,以實現(xiàn)用戶之間的交流。發(fā)布推文是以純文字形式發(fā)布。
當用戶按下發(fā)送鍵時,系統(tǒng)會檢測用戶是否輸入內(nèi)容,若輸入內(nèi)容為空,則返回當前操作并提示用戶當前輸入的內(nèi)容為空;若不為空,系統(tǒng)會把用戶的信息和用戶所輸入的內(nèi)容發(fā)送到LeanCloud上存儲。
(2)發(fā)現(xiàn)頁頁面。用戶打開發(fā)現(xiàn)頁后,系統(tǒng)會先判斷用戶是否在別的設(shè)備登錄,如果是則退出登錄,彈出登錄頁面讓用戶重新登錄;若否,系統(tǒng)會判斷當前SessionToken是否過期,如果是則退出登錄,彈出登錄頁面;若否,系統(tǒng)會自動向LeanCloud發(fā)送請求,獲取推文信息數(shù)據(jù),并保存到本地內(nèi)存中,渲染至頁面。發(fā)現(xiàn)頁內(nèi)用戶發(fā)布的每個推文。用戶都可以點擊評論按鈕后,把自己的想法發(fā)布到該推文的評論區(qū)。
6 系統(tǒng)測試
6.1 系統(tǒng)測試目的
系統(tǒng)測試是軟件開發(fā)中必不可少的環(huán)節(jié),測試結(jié)果直接反映出系統(tǒng)在不同的測試環(huán)境中是否會出現(xiàn)致命性錯誤,也可以測試系統(tǒng)是否達到預(yù)想的效果。通過不同的測試可以提高代碼的質(zhì)量,為后期系統(tǒng)維護帶來便捷。本文主要對校園導(dǎo)航功能、用戶登錄注冊功能等進行了測試。
6.2 校園導(dǎo)航功能測試
該功能比較簡單,當用戶在建筑具體界面點擊路線按鈕時,只需要判斷用戶選擇的導(dǎo)航應(yīng)用是否存在。本系統(tǒng)在沒有安裝高德地圖和有安裝高德地圖的環(huán)境下進行測試,都成功的實現(xiàn)了測試目的。
6.3 社交模塊功能測試
用戶登錄注冊功能測試流程;用戶登錄注冊功能是社交模塊的唯一入口,它的邏輯功能和市面上大多數(shù)的登錄注冊一樣:(1)判斷用戶是否登錄,若用戶已經(jīng)登錄,則跳轉(zhuǎn)到社交模塊主界面;若否,則彈出登錄注冊界面。(2)如果用戶已經(jīng)擁有賬戶,并在輸入框中輸入賬戶和密碼,若密碼錯誤彈出提示框,提示用戶“密碼錯誤”;若密碼正確,則跳轉(zhuǎn)到主界面。(3)當用戶沒有賬戶,用戶需注冊賬戶,注冊成功并跳轉(zhuǎn)到主頁面。
7 結(jié)語
本項目目標已經(jīng)基本完成,測試效果也到達預(yù)期。本系統(tǒng)實現(xiàn)了iOS和Android兩個平臺的客戶端,在性能上完全超過使用傳統(tǒng)的跨平臺Web架構(gòu),媲美原生架構(gòu)。在React Native的基礎(chǔ)上引入Expo庫讓開發(fā)進程又加快了一個檔次。LeanCloud,可以一行后端代碼都不用寫就可以在全平臺上快速搭建自己的后端服務(wù)。
當然,軟件也有很多的不足,例如:社交模塊的推文系統(tǒng),不能發(fā)布圖文推文,不能像微信朋友圈那樣發(fā)布一條新的推文或者回復(fù)后及時顯示在頁面上,而是要刷新一下才能顯示在頁面上等等,后期會對軟件進行不斷的修改和完善。
參考文獻
[1] 向治洪.React Native移動開發(fā)實戰(zhàn)[M].北京:人民郵電出版社,2018:1.
[2] Expo[EB/OL].https://expo.io.
[3] React Native中文網(wǎng)[EB/OL].https://reactnative.cn.
[4] Ethan Brown.Web development with Node and Express leveraging the JavaScript stack[M].北京:人民郵電出版社,2015.
[5] Mike Cantelon.Node.js in action[M].北京:人民郵電出版社,2014.