從零開始搭建物聯網平臺(7):使用Vue編寫前端頁面
摘要:
Vue我也是剛開始學的,看了兩天的文件就開始著手做這件事了,所以對vue瞭解不太深入,沒有能力說的的太詳細萬一是錯誤的不就誤導別人了,所以只對幾個相對來說比較主要的點說明一下。
搭建開發環境:
老生常談的話題!首先自然是要安裝nodejs,這個直接去官網下載安裝即可,再使用命令npm install vue、npm install -g vue-cli去安裝vue和腳手架工具,完成之後再使用命令vue init webpack myproject來初始化專案,初始化完成之後會在目錄下生成這些檔案,到這一步的話環境差不多搭建好了。
接下來是安裝依賴,在這個專案裡面我用了以下幾個庫, 通過命令npm install xxx --S 安裝,環境差不多搭建完成。
"axios": "^0.18.0", 傳送請求的類似ajax
"echarts": "^4.2.0-rc.2", 視覺化工具,用於繪製資料曲線圖
"element-ui": "^2.4.9", 網頁UI
"vue-router": "^3.0.1", 路由,這個一般在初始化專案的時候就安裝了,如果沒有自己手動安裝
開始我們的開發之旅:
首先確定一下頁面佈局,分為三大塊,其中頂欄和側欄顯示內容不變,只變主題部分,佈局樣式使用elementUI中的<el-header>
:頂欄容器, <el-aside>
:側邊欄容器,<el-main>
:主要區域容器實現。
頂欄基本沒啥內容就一個圖示不說了,說一下側邊導航欄,導航欄使用el-menu元件實現,將el-menu的 route屬性設定為true,或者使用router-link去做跳轉,不過那樣顯得要麻煩一些,所以還是推薦第一種
<el-menu class="el-menu-vertical-demo" background-color="#304156" text-color="#bfcbd9" active-text-color="#409eff" :default-active="$route.path" router > <el-menu-item index="/developer/dashboard"> <i class="el-icon-ump-18"></i> <span slot="title">主頁</span> </el-menu-item> <el-menu-item index="/developer/charts"> <i class="el-icon-ump-shuju2"></i> <span slot="title">歷史資料</span> </el-menu-item> <el-menu-item index="/developer/devices"> <i class="el-icon-ump-shebei2"></i> <span slot="title">裝置管理</span> </el-menu-item> <el-menu-item index="/developer/streams"> <i class="el-icon-ump-shuju1"></i> <span slot="title">資料流管理</span> </el-menu-item> <el-menu-item index="/developer/triggers"> <i class="el-icon-ump-chufaqi"></i> <span slot="title">觸發器管理</span> </el-menu-item> <el-menu-item index="/developer/console"> <i class="el-icon-ump-kongzhitai1"></i> <span slot="title">控制檯</span> </el-menu-item> </el-menu>
最後的效果:
下面開始內容主體,放個樣圖。
樣式部分就不說了看個人喜好,主要說一下如何獲取後臺的資料,資料的獲取需要用到之前安裝的axios外掛,通過axios的get、post等方法訪問後端的介面獲取json資料例如get方法,then和catch是es6的語法,具體的我也解釋明白。如果資料獲取正常,後端返回的資料放在res.data裡面,列印到控制檯看看返回結果,post同理,只是引數不同
axios.get(url, { params: { 'key': 'value' } }).then((res)=> { console.log(res.data); }).catch((error)=> { console.log(error); });
一般來說獲取資料可以放在created()或者mounted()裡面,看自己需求吧,created要先於mounted,created那時候還沒有生成dom,如果需要操作dom那麼還是放到mounted裡面吧。
算了就寫這麼多吧,自己都不專業還是不誤導別人了