搭建項目
項目結構
本項目才用Vue-cli腳手架自動生成,這是一個Vue生態系統中一個偉大創舉。這意味着我們不需要手動構建我們的項目,而它就可以很快地為我們生成。下圖是一個完整的項目結構,如圖所示:
-
components:包含所有的頁面組件
-
vuex:包含vuex相關文件
-
modules:存放每個頁面單獨的state和mutation
-
static:靜態文件存放(圖片和圖標庫等)
-
index.html:渲染的頁面
-
main.js:應用入口點,包含根實例
-
App.vue:主頁面組件
項目流程:
-
安裝Vue-cli(要有node與npm)
npm i -g vue-cli
-
創建一個webpack項目,並且下載依賴
vue init webpack vue-demo-orderApp cd vue-demo-orderApp npm i
-
安裝Vue-router,Vuex和Mint-ui
npm install vue-router vuex --save npm install mint-ui --save
-
熱加載打開頁面(生產的時候運行
npm run build
)
npm run dev
項目的框架已經搭建好了,接下來就是為項目添磚加瓦。
頁面結構分析
本項目為一個demo項目,主要為了練習vue2的使用,結構上借鑒了官方的寫法,界面為通用的app樣式,才用餓了么團隊的Mint-Ui的制作。
這個demo的每一個頁面都是一個.vue文件,利用Vue的單文件組件,非常便於管理每個頁面的狀態,樣式和數據,首頁主要是展示頁,和操作面板頁。下面是主頁的代碼:
<template> <div class="index-container"> <!-- 輪播圖部分 --> <mt-swipe :auto="4000"> <mt-swipe-item><div class="banner1 banner" style="background:url('./static/banner1.jpg');background-size: cover;"></div></mt-swipe-item> <mt-swipe-item><div class="banner2 banner" style="background:url('./static/banner2.jpg');background-size: cover;"></div></mt-swipe-item> </mt-swipe> <!-- 訂單同步狀態部分 --> <mt-popup class="status" v-model="popupVisible" popup-transition="popup-fade" position="top"> 同步{{ orders_status }} </mt-popup> <!-- 首頁功能欄部分 --> <ul class="icon-list"> <li class="icon"> <router-link to="order" class="iconlink"></router-link> <img src="../assets/scan.png" class="clear"> <h4>訂單管理</h4> <p>掃描盤點,手工盤點</p> <i></i> </li> <li class="icon"> <router-link to="goods" class="iconlink"></router-link> <img src="../assets/ana.png" class="clear"> <h4>渠道管理</h4> <p>掃描盤點,手工盤點</p> <i></i> </li> <li class="icon"> <router-link to="order" class="iconlink"></router-link> <img src="../assets/store.png" class="clear"> <h4>訂單發布</h4> <p>掃描盤點,手工盤點</p> <i></i> </li> <li class="icon" @click="getOrders()"> <router-link to="test" class="iconlink"></router-link> <img src="../assets/goods.png" class="clear"> <h4>訂單同步</h4> <p>快速同步渠道訂單,方便快捷</p> <i></i> </li> <li class="icon"> <router-link to="personinfo" class="iconlink"></router-link> <img src="../assets/download.png" class="clear"> <h4>個人中心</h4> <p>信息管理,logo更換</p> <i></i> </li> </ul> </div> </template> <script type="text/javascript"> import { MessageBox } from 'mint-ui' import { mapState } from 'vuex' export default{ created:function(){ if(window.localStorage.user == null){ this.$router.push({path: '/login'}) } }, data(){ let popupVisible =