vue vue-router vuex element-ui axios的學(xué)習(xí)筆記(十七)改寫learn目錄

改寫目錄的原因

既然使用的是前后端分離的寫法,就該徹底分離,我應(yīng)該將后臺管理頁面也寫在learn項目里面,現(xiàn)在這個結(jié)構(gòu)就顯得不合理了,進(jìn)入后臺管理頁面應(yīng)該是全新頁面,現(xiàn)在的結(jié)構(gòu)并不合理!

改寫步驟

選區(qū)_018.png

1、新建一個admin目錄

添加頁面
admin.vue 用于管理后臺路由
adminlogin.vue 用于后臺管理員登錄
home.vue 用于后臺主頁顯示信息
mangeradmin.vue 用于管理管理員賬戶
mangeruser.vue 用于管理用戶賬戶
mangerprods.vue 用于管理商品操作
mangersends.vue 用于管理用戶發(fā)貨

2、重新編寫路由

打開route/index.js

import Vue from 'vue'
import Router from 'vue-router'
// 引入前端組件
import Home from '@/components/home'
import ConHome from '@/components/con-home'
import Login from '@/components/login'
import Regin from '@/components/regin'
import Page404 from '@/components/404'
import Products from '@/components/page/products'
import FAQ from '@/components/page/FAQ'
import Manger from '@/components/page/manger'
import My from '@/components/page/manger/my'
import Send from '@/components/page/manger/send'
import MyHistory from '@/components/page/manger/history'
import ProductList from '@/components/page/product/productlist'
import ProductContent from '@/components/page/product/productcontent'
// 引入后端管理組件
import Admin from '@/admin/admin'
import AdminLogin from '@/admin/views/adminlogin'
import AdminHome from '@/admin/views/adminhome'
import MangerAdmin from '@/admin/views/mangeradmin'
import MangerProds from '@/admin/views/mangerprods'
import MangerSends from '@/admin/views/mangersends'
import MangerUser from '@/admin/views/mangeruser'

Vue.use(Router)

export default new Router({
  // 配置路由
  routes: [
    // 前段頁面路由
    {
      path: '/',
      hidden: true,
      type: 'client',
      component: Home,
      children: [
        {
          path: '/',
          hidden: true,
          component: ConHome
        },
        {
          path: '/products',
          name: '商品',
          class: 'el-icon-goods',
          component: Products,
          redirect: '/product/all',
          children: [
            {
              // 這里用的動態(tài)路由,需要一個冒號:
              path: '/product/:class',
              component: ProductList
            }
          ]
        },
        {
          path: '/product/:class/:productname',
          hidden: true,
          component: ProductContent
        },
        {
          path: '/FAQ',
          name: '文檔',
          component: FAQ
        },
        {
          path: '/manger',
          name: '工作臺',
          redirect: '/manger/my',
          component: Manger,
          hasChild: true,
          children: [
            {path: '/manger/my', name: '我的信息', component: My},
            {path: '/manger/send', name: '發(fā)貨管理', component: Send},
            {path: '/manger/history', name: '發(fā)貨記錄', component: MyHistory}
          ]
        }
      ]
    },
    // 后端頁面路由
    {
      path: '/admin',
      component: Admin,
      type: 'admin',
      hidden: true,
      children: [
        {
          path: '/admin',
          component: AdminHome,
          name: '管理首頁'
        },
        {
          path: '/admin/mangeprods',
          name: '商品管理',
          component: MangerProds
        },
        {
          path: '/admin/mangesends',
          name: '訂單管理',
          component: MangerSends
        },
        {
          path: '/admin/mangeuser',
          name: '用戶管理',
          component: MangerUser
        },
        {
          path: '/admin/mangeadmin',
          name: '管理員賬戶',
          component: MangerAdmin
        }
      ]
    },
    // 登錄注冊以及404頁面路由
    {
      path: '/admin/login',
      hidden: true,
      component: AdminLogin
    },
    {
      path: '/login',
      name: '',
      hidden: true,
      component: Login
    },
    {
      path: '/regin',
      name: '',
      hidden: true,
      component: Regin
    },
    {
      path: '*',
      hidden: true,
      component: Page404
    }
  ]
})

3、改寫前端頁面代碼

這樣重寫路由之后會造成原來的導(dǎo)航菜單路由出錯,所以需要改寫前端導(dǎo)航的代碼,主要是2個地方,更重要的是要改寫前端結(jié)構(gòu)

我的目的是要前端和后端頁面是完全分離的,按原先的代碼我直接將header.vue和footer.vue直接寫在了APP.vue里面,這樣的話會讓我進(jìn)入后端頁面時也會渲染出頭部和底部,這和我的想法是不一樣的,所以首先改寫APP.vue

1、打開APP.vue
將頭部和底部抽離出來,放在home.vue里面

<template>
  <div id="app">
    <router-view></router-view>
  </div>
</template>

<script>

export default {
  name: 'app'
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
}
.container {
  width: 100%;
  max-width: 1366px;
  margin: 80px auto;
}
</style>

2、打開home.vue
添加頭部和底部

<template>
  <div class="section">
    <!-- 頭部組件渲染 -->
    <header-ly></header-ly>
    <!-- 中間主要區(qū)域容器 -->
    <!-- 添加一個element-ui內(nèi)置的過渡動畫 -->
    <transition name="el-zoom-in-center">
      <!-- 通過路由渲染不同內(nèi)容的頁面 -->
      <router-view/>
    </transition>
    <!-- 底部 -->
    <!-- 底部組件渲染 -->
    <footer-ly></footer-ly>
  </div>
</template>
<script>
  // 導(dǎo)入組件
import HeaderLy from '@/components/header'
import FooterLy from '@/components/footer'
export default {
    name: 'home',
    components: {
      HeaderLy,
      FooterLy
    }
}
</script>

3、新建一個con-home.vue來存放主頁也就是home頁面的內(nèi)容
con-home.vue

<template>
  <div class="container">
    <h1>home</h1>
  </div>
</template>

4、改寫header.vue的菜單設(shè)置

因為我現(xiàn)在只要前端的路由,這里我想了2種方法

  • 1、需要哪里的路由就找哪里的路由
選區(qū)_017.png

只需要將原來的

v-for="route in $router.options.routes"
// 改為
v-for="route in $router.options.routes[0].children"

這樣的方法很簡單,但是有一個弊端,我相當(dāng)于把路由的順序?qū)懰懒耍苯泳驼襯outes的第一個object,如果后期在routes里面又加入新的路由,這樣很可能又需要改寫一次,這樣就很不靈活了,但很簡單??!

  • 2、這個只是思路,我沒做

首先再header.vue被創(chuàng)建的時候?qū)outes用filter或者foreach的辦法找出需要的那部分路由,比如加個字段 type: 'client'來表明這是前端路由,然后就這些路由數(shù)據(jù)寫在data里面,再用來循環(huán),這樣就很靈活了,但稍微麻煩一點!

4、測試

前端頁面

選區(qū)_019.png

頭部的路由是正常的

選區(qū)_020.png

后端頁面

選區(qū)_021.png

后端路由

選區(qū)_022.png

總結(jié)

還是經(jīng)驗太過欠缺了,要是一開始就有工程化思想的話,就不會有這些麻煩事了,接下來先把相關(guān)的后端頁面和邏輯寫好

github地址

learn:https://github.com/lyttonlee/learn
server: https://github.com/lyttonlee/express-server-for-learn

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 石榴妹喜歡上了陳慕楓,而且一喜歡就是好幾年。當(dāng)年的陳慕楓是班里的風(fēng)云人物,打架斗毆,喝酒抽煙,在網(wǎng)吧里打通...
    江隅閱讀 449評論 2 3
  • 寫在前面的話(吐槽┐(‘~`)┌):身為一名帝都大三醫(yī)學(xué)狗,宿舍條件非常貧瘠,上下鋪,5人間,全校只有一個大澡堂,...
    張妮妮閱讀 1,291評論 5 10
  • 侗族最具代表性的建筑就是鼓樓和風(fēng)雨橋。據(jù)說鼓樓是用來開會和外敵入侵鳴鼓警示,而風(fēng)雨橋是為給過往行人躲避風(fēng)雨...
    瀟湘靜女閱讀 756評論 0 2
  • /溫妮深山老林 從群芳爭艷 到雪花飄飄 每個薄暮 不曾間斷 簽到你的房前 滿懷期待 輕叩三下 常常失望惆悵而歸...
    深山老林千年桃妖閱讀 272評論 1 1
  • 我是河邊一棵普通的垂柳。 我從小苗長成大樹,年復(fù)一年,站在這河邊。小鳥曾落在我的肩上,狂風(fēng)曾吹散我的長發(fā)。云給我做...
    韋心草閱讀 2,616評論 0 1

友情鏈接更多精彩內(nèi)容