張猛 何姍姍



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