初識vue,之前都是一直用asp.net mvc的,前台用的razor引擎,在學習vue的時候突然發現布局頁面的嵌套使用......好難搞......經過一系列的研究終於搞出來的,在這里remark一下。
因為之前用的mvc框架,所有這里的布局頁使用的思想和之前razor使用的思想是一致的。
不知道vue中是否叫布局頁,我沿用了mvc中的叫法。該項目中使用了Element框架,所以dom元素和html有些區別。
1、創建子頁面和布局頁面
Login.vue是子頁面,Layout.vue是布局頁
Layout.vue代碼如下

1 <template> 2 <v-app id="LoginLayout"> 3 這是登錄母版頁 4 <v-content> 5 <router-view ></router-view> 6 </v-content> 7 </v-app> 8 </template> 9 10 <script> 11 export default { 12 name: 'LoginLayout', 13 data() { 14 }, 15 methods: { 16 } 17 } 18 </script> 19 20 <style scoped> 21 </style>
Login.vue代碼如下

1 <template> 2 <div style="margin-left:40%; margin-top:5%;width:300px;"> 3 <el-form ref="form" :model="form" label-width="80px"> 4 <el-form-item label="帳號"> 5 <el-input v-model="form.name" maxlength="20"></el-input> 6 </el-form-item> 7 <el-form-item label="密碼"> 8 <el-input v-model="form.password" type="password" maxlength="10"></el-input> 9 </el-form-item> 10 <el-form-item label="角色"> 11 <el-select v-model="form.region" placeholder="請選擇"> 12 <el-option label="客服" value="shanghai"></el-option> 13 <el-option label="銷售" value="beijing"></el-option> 14 </el-select> 15 </el-form-item> 16 <el-form-item> 17 <el-button type="primary" @click="onSubmit">登錄</el-button> 18 </el-form-item> 19 </el-form> 20 </div> 21 </template> 22 23 <script> 24 export default { 25 data() { 26 return { 27 msg: 'Welcome to Your Vue.js App2222', 28 form: { 29 name: '', 30 region: '', 31 date1: '', 32 date2: '', 33 delivery: false, 34 type: [], 35 resource: '', 36 desc: '' 37 }, 38 IsLogin: false 39 } 40 }, 41 methods: { 42 onSubmit() { 43 console.log('submit!') 44 45 // eslint-disable-next-line no-array-constructor 46 var list = new Array() 47 list.push('lucy') 48 // location.href = '/User/UserList' 49 this.$post('/api/User/GetUserInfoList', { 50 PageSize: 2, 51 PageIndex: 1, 52 list: list 53 }).then((response) => { 54 console.log(response) 55 }) 56 } 57 } 58 } 59 </script>
以上代碼比較簡單,應該都能看到懂,Layout中需要添加router-view節點,子頁面中正常寫就可以了。
2、路由器
路由器是關鍵,,需要配置路由器,設定布局頁的子頁面,路由器代碼如下:
1 import LoginLayout from '@/components/Login/Layout' 2 3 { 4 path: '/Login', 5 component: LoginLayout, 6 children: [ 7 { 8 name: 'Login', 9 path: 'Login', 10 component: () => import('../components/login/Login.vue') 11 } 12 ] 13 },
3、運行項目
cnpm run dev 運行,訪問:http://localhost:8080/Login/Login,這里是需要訪問子頁面,子頁面名字叫Login,運行界面如下圖所示: