張猛 何姍姍
關(guān)鍵詞:智能小區(qū);Vue.js;Node.js;數(shù)據(jù)可視化;ECharts
中圖分類號:TP311 文獻標(biāo)識碼:A
文章編號:1009-3044(2023)14-0046-04
0 引言
隨著人們生活水平的提高,智能小區(qū)[1]作為一種新型的住宅社區(qū)得到了快速的發(fā)展。智能小區(qū)利用互聯(lián)網(wǎng)來實現(xiàn)社區(qū)管理和居民生活的智能化、高效化。對智能小區(qū)和數(shù)據(jù)可視化[2]管理進行了概述和分析,提出了設(shè)計智能小區(qū)數(shù)據(jù)可視化管理系統(tǒng)的必要性。本文提出了智能小區(qū)數(shù)據(jù)管理系統(tǒng)的方案,實現(xiàn)了在前后端交互創(chuàng)新模式,提出將信息管理系統(tǒng)和數(shù)據(jù)可視化相結(jié)合,利用Vue.js[3]和ECharts[4]數(shù)據(jù)庫生成可視化圖表庫,在系統(tǒng)中直觀、生動地顯示出小區(qū)中各類信息,再利用Vue+Node.js[5]對信息數(shù)據(jù)進行后臺管理。
1 Vue 相關(guān)概述
1.1 Vue.js 框架技術(shù)
Vue.js一個用于構(gòu)建數(shù)據(jù)驅(qū)動的Web界面的庫。Vue.js的目標(biāo)是憑借更簡單的API中實現(xiàn)相應(yīng)的數(shù)據(jù)綁定和組合的視圖組件。Vue.js本身不是一個全能框架——它更關(guān)注于視圖層。所以它與其他框架相較更容易學(xué)習(xí),也更容易和其他庫或已有的相關(guān)項目進行整合。
1)響應(yīng)數(shù)據(jù)綁定
Vue.js的核心是響應(yīng)型數(shù)據(jù)綁定系統(tǒng),能夠容易地維持數(shù)據(jù)和DOM的同步。使用jQuery[6]手動操作DOM時,代碼通常是命令式的、容易出錯的。Vue.js包含數(shù)據(jù)驅(qū)動視圖的概念。這意味著使用特殊語法將DOM“綁定”到普通HTML模板的底層數(shù)據(jù)。創(chuàng)建綁定后,DOM將保持與數(shù)據(jù)同步。因此,應(yīng)用程序中的大多數(shù)邏輯都直接修改數(shù)據(jù),而不會與DOM更新混淆。DOM時,代碼通常是命令式的、容易出錯的。Vue.js包含數(shù)據(jù)驅(qū)動視圖的概念。這意味著使用特殊語法將DOM“綁定”到普通HTML模板的底層數(shù)據(jù)。創(chuàng)建綁定后,DOM將保持與數(shù)據(jù)同步。因此,應(yīng)用程序中的大多數(shù)邏輯都直接修改數(shù)據(jù),而不會與DOM更新混淆。
2)組建系統(tǒng)
組件系統(tǒng)是Vue.js另外的一個重要的概念,因為它提供了一種抽象,所以可以使用單獨的可重用組件創(chuàng)建大型應(yīng)用程序。所以考慮到這一點,幾乎任何類型的應(yīng)用程序的界面都可以抽象成一個組件樹。
確切地說,使用Vue.js 創(chuàng)建的典型大型應(yīng)用都將會形成一個組件樹。
1.2 Node.js
Node.js[7]是一個跨平臺的JavaScript運行時環(huán)境,也是一個開源的工具。它被廣泛地用于各種不同類型的項目中,因為它提供了許多有用的功能。
Node.js在瀏覽器外使用V8 JavaScript引擎運行,因此具有出色的性能。Node.js應(yīng)用程序在單個進程中運行,無須為每個請求創(chuàng)建新線程。在其標(biāo)準(zhǔn)庫中,Node.js提供了一組異步的I/O原語,以避免JavaS?cript代碼被阻塞。通常,Node.js庫都是采用非阻塞編程范式編寫的,使阻塞行為成為異常而非常態(tài)。當(dāng)Node.js執(zhí)行I/O操作時,它會在響應(yīng)返回時恢復(fù)操作,使得Node.js能夠使用單個服務(wù)器處理成千上萬個并發(fā)連接,而無須引入管理線程并發(fā)的負擔(dān)。
使用框架可以提高開發(fā)效率,其中常用的框架包括Express.js[8]。Node.js程序可以在多個服務(wù)器操作系統(tǒng)上運行并支持使用CoffeeScript、TypeScript 語言等其他編譯成JavaScript 的語言進行編程。Coffee?Script旨在簡化JavaScript語法,將其代碼轉(zhuǎn)換為合法的JavaScript代碼。而TypeScript[9]則是微軟開發(fā)的一種強化了數(shù)據(jù)類型的JavaScript變體。
Node.js采用事件驅(qū)動的編程模型,開發(fā)者可以不使用線程就能夠開發(fā)出能夠承載高并發(fā)的服務(wù)器。相比其他服務(wù)器端語言,Node.js的性能更為出色。它將JavaScript的易學(xué)易用性和Unix網(wǎng)絡(luò)編程的強大功能結(jié)合在一起,成為一個事件驅(qū)動的平臺。
1.3 Echarts 數(shù)據(jù)可視化
ECharts是一款使用JavaScript編寫的數(shù)據(jù)可視化圖表庫,可制定數(shù)據(jù)可視化圖表。它能適配目前大多數(shù)的瀏覽器,ECharts 底層采用輕量級矢量圖形庫ZRender,能夠?qū)崿F(xiàn)快速高效的圖表渲染和交互。ECharts提供了很多種類的圖表來滿足不同的數(shù)據(jù)可視化需求。且其具有強大的渲染引擎,支持Canvas和SVG兩種渲染方式,用戶可以根據(jù)需要選擇最適合自己的渲染方式。ECharts3開始獨立提出坐標(biāo)系的概念,圖表可以跨坐標(biāo)系存在。ECharts同時也能支持移動端的開發(fā),并且支持了移動端進行放縮和平移操作,PC端也能支持鼠標(biāo)的放縮和平移。
數(shù)據(jù)可視化技術(shù)。數(shù)據(jù)可視化是借用圖形化手段,用圖表的手段向人們傳送信息,讓原本枯燥的數(shù)據(jù)變得直觀,并且有效地傳達思想觀念,將相對稀疏又復(fù)雜的數(shù)據(jù)集進行深入挖掘。
在科學(xué)可視化這個跨學(xué)科的研究領(lǐng)域中,目的是以二維圖像或者三維立體圖像的方式展示數(shù)據(jù),能直觀地從數(shù)據(jù)當(dāng)中了解和收集信息。信息可視化是基于抽象數(shù)據(jù)用圖表的方式直觀展示出來。抽象數(shù)據(jù)不僅包含常見的數(shù)值數(shù)據(jù),還包含非數(shù)值型數(shù)據(jù)比如地圖、文本數(shù)據(jù),信息可視化處理數(shù)據(jù)具有的是抽象數(shù)據(jù)結(jié)構(gòu),通過常見的信息可視化圖表類型將抽象的數(shù)據(jù)轉(zhuǎn)化為直觀的可視化信息??梢暬畔崿F(xiàn)都是旨在從數(shù)據(jù)到圖形空間的映射,如圖3。
通過可視化技術(shù)實現(xiàn)可視化信息系統(tǒng),一般來說需要前端相關(guān)網(wǎng)頁繪圖技術(shù):webgl、svg、canvas,其中還涉及數(shù)據(jù)分析方法:數(shù)據(jù)清洗、統(tǒng)計學(xué)、數(shù)據(jù)建模等等分析內(nèi)容,同時還需要具備可視化基礎(chǔ):可視化數(shù)據(jù)編碼、可視化數(shù)據(jù)分析、可視化技術(shù),以及一些工程類算法:統(tǒng)計算法、基礎(chǔ)算法、常用的布局算法。
2 系統(tǒng)設(shè)計與實現(xiàn)
本系統(tǒng)通過Vue+Nodejs+ECharts 技術(shù)實現(xiàn)前端的數(shù)據(jù)信息系統(tǒng),在確定系統(tǒng)需求和功能之后,開始設(shè)計數(shù)據(jù)庫,設(shè)計數(shù)據(jù)表,并確定數(shù)據(jù)表的字段和關(guān)系。然后開始開發(fā)后端應(yīng)用程序,需要使用Node.js編寫后端應(yīng)用程序。確定API的設(shè)計,例如API的URL和請求/響應(yīng)格式。連接數(shù)據(jù)庫,并編寫數(shù)據(jù)訪問層代碼。在開發(fā)完后端應(yīng)用程序之后,需要使用Vue.js編寫前端應(yīng)用程序。確定頁面的設(shè)計和布局。配置頁面路由,使用戶可以通過url訪問特定的頁面。使用axios等庫請求后端API獲取數(shù)據(jù)。將后端API返回的數(shù)據(jù)處理為echarts所需要的格式。根據(jù)需要的數(shù)據(jù)展示方式,選擇適合的echarts圖表類型,并根據(jù)需求進行樣式調(diào)整。項目技術(shù)概覽如下:
1)前端:Vue+Vue-cli+axios+Vue-router+boot?strap[10]。
2)后臺:Node.js+expressjs。
3)數(shù)據(jù)庫:MySQL[11]。
系統(tǒng)主界面如圖1所示。
使用Token[12]登錄驗證是一種常見的身份驗證方法,用于驗證用戶的身份并允許他們訪問受保護的資源。在這種方法中,當(dāng)用戶進行身份驗證成功后,服務(wù)器會生成一個令牌(Token),并將其返回給客戶端。這個令牌可以是一個加密字符串,用于標(biāo)識用戶的身份和訪問權(quán)限。當(dāng)用戶請求訪問需要身份驗證的資源時,客戶端會將令牌包含在請求頭部中發(fā)送給服務(wù)器。服務(wù)器會驗證令牌的有效性,如果令牌是有效的,則允許用戶訪問受保護的資源。在Token登錄驗證中,服務(wù)器不需要在每個請求中驗證用戶名和密碼,這可以減少服務(wù)器的負載。此外,令牌可以設(shè)置過期時間,以確保用戶必須重新進行身份驗證,從而提高安全性。常見的Token登錄驗證技術(shù)包括JWT(JSON Web Token)、OAuth2等。這些技術(shù)已經(jīng)得到廣泛應(yīng)用,成為現(xiàn)代Web應(yīng)用程序的標(biāo)準(zhǔn)身份驗證方法之一。
創(chuàng)建此系統(tǒng)則是需要用到Vue-cli[13]腳手架搭建框架,加快開發(fā)效率,系統(tǒng)主頁面中共有五個router[14]路由模塊,分別是控制臺頁面、住戶信息管理頁面、樓房結(jié)構(gòu)頁面、樓房實拍頁面以及小區(qū)鳥瞰頁面。通過路由redirect使主頁面默認渲染控制臺頁面。
在Vue項目中的router文件夾中配置各個頁面路由模塊,使url與特定頁面實現(xiàn)映射,代碼如下:
頁面內(nèi)容表格通過bootstrap 渲染,數(shù)據(jù)通過Node.js連接MySQL數(shù)據(jù)庫。
先在終端中導(dǎo)入echarts 包,然后將包配置完整后,通過調(diào)用echarts3D圖表渲染出3D結(jié)構(gòu)的畫面,最后在后臺設(shè)置完整的數(shù)據(jù),如圖12所示。
百度地圖可視化。在此頁面設(shè)置了3D 百度地圖,開發(fā)方式如圖14所示,首先注冊百度地圖開發(fā)者,然后調(diào)用百度地圖的API庫。
在百度地圖開放平臺,找到JavaScriptAPI,然后開始申請成為百度開發(fā)者,獲得使用地圖API接口,之后獲取自己的服務(wù)密鑰(AK碼),可以將ak設(shè)置為空,在使用中只需要將ak碼寫入代碼里即可,api也需要通過script鏈接引入html中,可以通過代碼引入百度地圖API[15],引入方法如圖15所示,key后面就是自己獲取的密鑰(ak);利用百度API接口直接繪制。
之后引入相關(guān)地圖的js文件,以及插入用到地圖的JSON地圖文件。下圖即為插入百度地圖的主要代碼:
3 結(jié)束語
在設(shè)計本智能小區(qū)管理系統(tǒng)時,充分利用了Vue和Nodejs的優(yōu)勢,實現(xiàn)了一套功能齊全、運行穩(wěn)定、易于維護的系統(tǒng)。
智能小區(qū)信息管理系統(tǒng)的設(shè)計是為了提高小區(qū)管理的效率和質(zhì)量,減少人力和物力資源的浪費,提升小區(qū)居民的生活質(zhì)量。通過本系統(tǒng),系統(tǒng)管理人員可以更加方便地管理小區(qū)信息,清晰地分析小區(qū)各方面的數(shù)據(jù)信息,并及時向居民反饋信息。居民也可以通過本系統(tǒng)小區(qū)信息、樓房信息、部分住戶數(shù)據(jù)等信息,享受更加便利和高效的服務(wù)。
在未來,希望能夠進一步完善和擴展本系統(tǒng),為更多小區(qū)的管理和居民的生活帶來幫助。同時,也期待著更多的技術(shù)和創(chuàng)新的應(yīng)用,為社區(qū)管理和社會發(fā)展帶來更多的可能性。