1. 程式人生 > >vue專案搭建(由於是初學者,路由及檔案的放置有些不規範,一般子元件建議放於components下)

vue專案搭建(由於是初學者,路由及檔案的放置有些不規範,一般子元件建議放於components下)

1.目錄簡介:

2.設定路由:

1)修改router/index.js檔案

引入元件:

import Index from '@/index' import Login from '@/login'

設定路由:

routes: [{         path: '/',//預設路由         name: 'login',         component: Login,         meta: {             title: '登入頁面',             keepAlive: false         }     }, {         path: '/index/:admin/:Right/:IsAllDesk',//首頁         name: 'index',         component: Index,         meta: {             title: '首頁',             keepAlive: true         }     }]

下面附上router/index.js的所有內容:

import Vue from 'vue' import Router from 'vue-router' import VueResource from 'vue-resource' import Index from '@/index' import Login from '@/login' import DrugTable from '@/DrugTable' import Desk from '@/desk' import Monitoring from '@/Monitoring' import EmergencyResource from '@/EmergencyResource' import EmergencyMovement from '@/EmergencyMovement' import VaccinationSupervision from '@/VaccinationSupervision' import Suggest from '@/Suggest' import Appear from '@/Appear' import AddDrug from '@/AddDrug' import VolumeReport from '@/VolumeReport' import ImportSuggest from '@/ImportSuggest' import Header from '@/Header' import InfectiousManagement from '@/InfectiousManagement' import ExportDrug from '@/ExportDrug' import OutbreakReport from '@/OutbreakReport' Vue.use(Router) Vue.use(VueResource) export default new Router({     routes: [{         path: '/',         name: 'login',         component: Login,         meta: {             title: '登入頁面',             keepAlive: false//不保留頭部內容         }     }, {         path: '/index/:admin/:Right/:IsAllDesk',         name: 'index',         component: Index,         meta: {             title: '首頁',             keepAlive: true//保留頭部內容         }     }, {         path: '/DrugTable/:admin/:Right/:IsAllDesk',         name: 'DrugTable',         component: DrugTable,         meta: {             title: '疫苗接種數報表',             keepAlive: true         }     }, {         path: '/AddDrug/:admin/:Right/:IsAllDesk',         name: 'AddDrug',         component: AddDrug,         meta: {             title: '疫苗列表',             keepAlive: true         }     }, {         path: '/ExportDrug/:admin/:Right/:IsAllDesk',         name: 'ExportDrug',         component: ExportDrug,         meta: {             title: '匯出列表',             keepAlive: true         }     }, {         path: '/desk/:admin/:Right/:IsAllDesk',         name: 'desk',         component: Desk,         meta: {             title: '課桌椅示意圖',             keepAlive: true         }     }, {         path: '/Suggest/:admin/:Right/:IsAllDesk',         name: 'Suggest',         component: Suggest,         meta: {             title: '配置資訊建議',             keepAlive: true         }     }, {         path: '/ImportSuggest/:admin/:Right/:IsAllDesk',         name: 'ImportSuggest',         component: ImportSuggest,         meta: {             title: '匯入建議',             keepAlive: true         }     }, {         path: '/Appear/:admin/:Right/:IsAllDesk',         name: 'Appear',         component: Appear,         meta: {             title: '配置資訊上報',             keepAlive: true         }     }, {         path: '/VolumeReport/:admin/:Right/:IsAllDesk',         name: 'VolumeReport',         component: VolumeReport,         meta: {             title: '批量上報',             keepAlive: true         }     }, {         path: '/InfectiousManagement/:admin/:Right/:IsAllDesk',         name: 'InfectiousManagement',         component: InfectiousManagement,         meta: {             title: '傳染病管理',             keepAlive: true         }     }, {         path: '/OutbreakReport/:admin/:Right/:IsAllDesk',         name: 'OutbreakReport',         component: OutbreakReport,         meta: {             title: '學校疫情上報',             keepAlive: true         }     }, {         path: '/Monitoring/:admin/:Right/:IsAllDesk',         name: 'Monitoring',         component: Monitoring,         meta: {             title: '監測預警管理',             keepAlive: true         }     }, {         path: '/EmergencyResource/:admin/:Right/:IsAllDesk',         name: 'EmergencyResource',         component: EmergencyResource,         meta: {             title: '應急資源管理',             keepAlive: true         }     }, {         path: '/EmergencyMovement/:admin/:Right/:IsAllDesk',         name: 'EmergencyMovement',         component: EmergencyMovement,         meta: {             title: '應急排程管理',             keepAlive: true         }     }, {         path: '/VaccinationSupervision/:admin/:Right/:IsAllDesk',         name: 'VaccinationSupervision',         component: VaccinationSupervision,         meta: {             title: '預防接種督導',             keepAlive: true         }     }] })

3.搭腳手架:

1)新建Header.vue,我這裡放在了app.vue的同級。

我的Header.vue裡面放的是頭部導航選單的內容,程式碼如下:

<template>     <div>         <section class="header">             <div class="header-bg">                 <div class="header-left">                     <div class="t-name">                         <a href="#"><img src="../static/public/static/img/big-logo.png"></a>                     </div>                     <ul class="header-ul" @mouseleave="header_ul_mouseleave">                         <li class="dropdown header-menu" @mouseenter="header_menu_mouseenter" id="4001">                             <router-link to="/index">                                 <a href="#" class="dropdown-toggle" data-toggle="dropdown">                                     首頁                                 </a>                             </router-link>                         </li>                         <li class="dropdown header-menu" @mouseenter="header_menu_mouseenter" id="4002">                             <a href="#" class="dropdown-toggle" data-toggle="dropdown">系統基礎資料</a>                             <ul class="dropdown-menu">                                 <li class="" id="40021">                                     <a href="#">                                         <router-link :to="{name:'AddDrug',params:{admin:admin,IsAllDesk:IsAllDesk,Right:Right}}">                                             <div class="bg1"><i class="fa fa-list-alt"></i></div>                                             <dd>疫苗接種數報表</dd>                                         </router-link>                                     </a>                                 </li>                                 <li class="" id="40022">                                     <a href="#">                                         <router-link :to="{name:'desk',params:{admin:admin,IsAllDesk:IsAllDesk,Right:Right}}">                                             <div class="bg2"><i class="fa fa-table"></i></div>                                             <dd>課桌椅配置管理</dd>                                         </router-link>                                     </a>                                 </li>                             </ul>                         </li>                         <li class="dropdown header-menu" @mouseenter="header_menu_mouseenter" id="4003">                             <a href="#" class="dropdown-toggle" data-toggle="dropdown">疾病風險管理</a>                             <ul class="dropdown-menu">                                 <li class="">                                     <a href="#">                                         <router-link :to="{name:'InfectiousManagement',params:{admin:admin,IsAllDesk:IsAllDesk,Right:Right}}">                                             <div class="bg1"><i class="fa fa-send-o"></i></div>                                             <dd>傳染病管理</dd>                                         </router-link>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <div class="bg2"><i class="fa fa-share-square-o"></i></div>                                         <dd>病媒監測</dd>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <div class="bg3"><i class="fa fa-transgender-alt"></i></div>                                         <dd>疫情管理</dd>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <div class="bg4"><i class="fa fa-share-alt"></i></div>                                         <dd>流行病管理</dd>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <div class="bg5"><i class="fa fa-share"></i></div>                                         <dd>消毒監測</dd>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <div class="bg6"><i class="fa fa-ambulance"></i></div>                                         <dd>學校幼兒園疫情風險評估系統</dd>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <div class="bg7"><i class="fa fa-balance-scale"></i></div>                                         <dd>企業健康管理系統</dd>                                     </a>                                 </li>                             </ul>                         </li>                         <li class="dropdown header-menu" @mouseenter="header_menu_mouseenter" id="4004">                             <a href="#" class="dropdown-toggle" data-toggle="dropdown">督導管理</a>                             <ul class="dropdown-menu">                                 <li>                                     <a href="#">                                         <router-link :to="{name:'VaccinationSupervision',params:{admin:admin,IsAllDesk:IsAllDesk,Right:Right}}">                                             <div class="bg1"><i class="fa fa-chain"></i></div>                                             <dd>預防接種督導</dd>                                         </router-link>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <div class="bg2"><i class="fa fa-chain-broken"></i></div>                                         <dd>傳染病督導</dd>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <div class="bg3"><i class="fa fa-indent"></i></div>                                         <dd>學校衛生督導</dd>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <div class="bg4"><i class="fa fa-columns"></i></div>                                         <dd>電子健康檔案督導</dd>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <div class="bg5"><i class="fa fa-adjust"></i></div>                                         <dd>職業衛生督導</dd>                                     </a>                                 </li>                             </ul>                         </li>                         <li class="dropdown header-menu" @mouseenter="header_menu_mouseenter" id="4005">                             <a href="#" class="dropdown-toggle" data-toggle="dropdown">突發公共衛生事件管理</a>                             <ul class="dropdown-menu">                                 <li>                                     <a href="#">                                         <router-link :to="{name:'Monitoring',params:{admin:admin,IsAllDesk:IsAllDesk,Right:Right}}">                                             <div class="bg1"><i class="fa fa-krw"></i></div>                                             <dd>監測預警管理</dd>                                         </router-link>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <router-link :to="{name:'EmergencyResource',params:{admin:admin,IsAllDesk:IsAllDesk,Right:Right}}">                                             <div class="bg2"><i class="fa fa fa-bell"></i></div>                                             <dd>應急資源管理</dd>                                         </router-link>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <router-link :to="{name:'EmergencyMovement',params:{admin:admin,IsAllDesk:IsAllDesk,Right:Right}}">                                             <div class="bg3"><i class="fa fa-bell-slash-o"></i></div>                                             <dd>應急排程管理</dd>                                         </router-link>                                     </a>                                 </li>                             </ul>                         </li>                         <li class="dropdown header-menu" @mouseenter="header_menu_mouseenter" id="4006">                             <a href="#" class="dropdown-toggle" data-toggle="dropdown">決策分析</a>                         </li>                         <li class="dropdown header-menu" @mouseenter="header_menu_mouseenter" id="4007">                             <a href="#" class="dropdown-toggle" data-toggle="dropdown">設定中心</a>                             <ul class="dropdown-menu">                                 <li class="">                                     <a href="#">                                         <div class="bg1"><i class="fa fa-gears"></i></div>                                         <dd>GIS設定</dd>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <div class="bg2"><i class="fa fa-file-word-o"></i></div>                                         <dd>報表模板設定</dd>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <div class="bg3"><i class="fa fa-exchange"></i></div>                                         <dd>資料交換介面設定</dd>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <div class="bg4"><i class="fa fa-table"></i></div>                                         <dd>網格設定</dd>                                     </a>                                 </li>                                 <li class="">                                     <a href="#">                                         <div class="bg5"><i class="fa fa-cog"></i></div>                                         <dd>許可權設定</dd>                                     </a>                                 </li>                             </ul>                         </li>                         <li class="dropdown header-menu" @mouseenter="header_menu_mouseenter" id="4008">                             <a href="#" class="dropdown-toggle" data-toggle="dropdown">地圖服務</a>                         </li>                     </ul>                 </div>                 <div class="header-right">                     <li class="dropdown user-menu" @click="user_menu_click()" v-bind:class="{'open':open,'unopen':!open}">                         <a href="#" class="dropdown-toggle" data-toggle="dropdown">                             <img class="img-circle" src="../static/public/static/img/user.png" alt="User Image">                             <span class="hidden-xs">{{admin}}</span>                         </a>                         <ul class="dropdown-menu">                             <!-- User image -->                             <li class="user-header">                                 <img class="img-circle" src="../static/public/static/img/user.png" alt="User Image">                                 <dl>                                     <dt>{{TopMessage}}</dt>                                     <dd id="timeShow"></dd>                                 </dl>                             </li>                             <!-- Menu Footer-->                             <li class="user-footer">                                 <a href="#">資訊</a>                                 <a href="#" @click="logout">退出</a>                             </li>                         </ul>                     </li>                 </div>             </div>         </section>     </div> </template> <script type="text/javascript" src="../static/public/plugins/jquery/jquery1.12.1.min.js"></script> <script type="text/javascript" src="../static/public/plugins/jquery/jquery.dotdotdot.min.js"></script> <script type="text/javascript" src="../static/public/plugins/layer/layer.js"></script> <script>     export default {         data() {             return {                 open: false, //預設不展開                 admin:this.$route.params.admin,                 Right:this.$route.params.Right,                 IsAllDesk:this.$route.params.IsAllDesk,                 TopMessage: ""             }         },         mounted() {             /*if($(".hidden-xs").text()=="") {                 this.$router.push('/');             }*/             //console.info(this.Right);             //console.info($("ul.header-ul")[0].children);             if(this.Right=="40022"){                 for(var i=1;i<$("ul.header-ul")[0].children.length;i++){                     $("ul.header-ul")[0].children[i].style.display="none";                 }                 var parent=$("#40022")[0].parentNode.parentNode;                 parent.style.display="inline-block";                 $("#40022")[0].parentNode.children[0].style.display="none";                 //console.info(parent.children[0]);             }             /*介面請求*/             this.$http.post('http://140.200.0.117:8088/api/MainPage/Info', {                 "LoginAccount": this.admin             }, {                 header: {},                 emulateJSON: true             }).then((res) => {                 //console.info(res);                 if(res.body.code == "0") {                     this.TopMessage = res.body.result;                 }             }).catch(err => {                 console.info("訪問介面失敗");             })             //日期時間             var t = null;             t = setTimeout(time, 1000); //開始執行             function time() {                 clearTimeout(t); //清除定時器                 var dt = new Date();                 var y = dt.getYear() + 1900;                 var mm = dt.getMonth() + 1;                 var d = dt.getDate();                 var weekday = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];                 var day = dt.getDay();                 var h = dt.getHours();                 var m = dt.getMinutes();                 var s = dt.getSeconds();                 if(h < 10) {                     h = "0" + h;                 }                 if(m < 10) {                     m = "0" + m;                 }                 if(s < 10) {                     s = "0" + s;                 }                 document.getElementById("timeShow").innerHTML = y + "年" + mm + "月" + d + "日" + "" + h + ":" + m + ":" + s + "" + "(" + weekday[day] + ")";                 t = setTimeout(time, 1000); //設定定時器,迴圈執行             }         },         methods: {             user_menu_click() {                 this.open = !this.open //右側選單點選切換             },             header_menu_mouseenter: function(e) { //左側選單滑鼠移入移出切換子選單                 $(e.target).addClass("open").siblings().removeClass("open");             },             header_ul_mouseleave() {                 $(".header-menu").removeClass("open");             },             logout() {                 this.$router.push({                     path: '/'                 })             }         }     } </script> <style scoped>     @import url("../static/public/plugins/bootstrap/css/bootstrap.min.css");     @import url("../static/public/plugins/bootstrap/css/font-awesome.min.css");     @import url("../static/public/plugins/bootstrap/css/font-awesome-animation.min.css");     @import url("../static/public/static/css/main.css"); </style> 2)修改App.vue:

<template>     <div id="app">         <el-container v-if="$route.meta.keepAlive">             <el-header>                 <!-- 導航欄 -->                 <header-nav></header-nav>             </el-header>             <el-container>                 <el-main>                     <!-- Body -->                     <router-view></router-view>                 </el-main>             </el-container>         </el-container>         <!-- 登入頁 -->         <router-view v-if="!$route.meta.keepAlive"></router-view>     </div> </template> <script>     import header from '@/Header';     export default {         components: {             headerNav: header         }     } </script>

注:keep-alive 是 Vue 內建的一個元件,可以使被包含的元件保留狀態,或避免重新渲染。

在index.js中我對login.vue設定了keep-alive:false//避免渲染頭部導航欄資訊。