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

改寫目錄的原因

既然使用的是前后端分離的寫法虎眨,就該徹底分離,我應該將后臺管理頁面也寫在learn項目里面踢代,現(xiàn)在這個結構就顯得不合理了疼阔,進入后臺管理頁面應該是全新頁面戒劫,現(xiàn)在的結構并不合理半夷!

改寫步驟

選區(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、改寫前端頁面代碼

這樣重寫路由之后會造成原來的導航菜單路由出錯茵典,所以需要改寫前端導航的代碼湘换,主要是2個地方,更重要的是要改寫前端結構

我的目的是要前端和后端頁面是完全分離的统阿,按原先的代碼我直接將header.vue和footer.vue直接寫在了APP.vue里面彩倚,這樣的話會讓我進入后端頁面時也會渲染出頭部和底部,這和我的想法是不一樣的砂吞,所以首先改寫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內置的過渡動畫 -->
    <transition name="el-zoom-in-center">
      <!-- 通過路由渲染不同內容的頁面 -->
      <router-view/>
    </transition>
    <!-- 底部 -->
    <!-- 底部組件渲染 -->
    <footer-ly></footer-ly>
  </div>
</template>
<script>
  // 導入組件
import HeaderLy from '@/components/header'
import FooterLy from '@/components/footer'
export default {
    name: 'home',
    components: {
      HeaderLy,
      FooterLy
    }
}
</script>

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

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

4袁串、改寫header.vue的菜單設置

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

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

只需要將原來的

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

這樣的方法很簡單囱修,但是有一個弊端赎瑰,我相當于把路由的順序寫死了,直接就找routes的第一個object破镰,如果后期在routes里面又加入新的路由餐曼,這樣很可能又需要改寫一次,這樣就很不靈活了鲜漩,但很簡單T雌!

  • 2孕似、這個只是思路踩娘,我沒做

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

4理卑、測試

前端頁面

選區(qū)_019.png

頭部的路由是正常的

選區(qū)_020.png

后端頁面

選區(qū)_021.png

后端路由

選區(qū)_022.png

總結

還是經驗太過欠缺了,要是一開始就有工程化思想的話蔽氨,就不會有這些麻煩事了藐唠,接下來先把相關的后端頁面和邏輯寫好

github地址

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

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末霞溪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子中捆,更是在濱河造成了極大的恐慌鸯匹,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泄伪,死亡現(xiàn)場離奇詭異殴蓬,居然都是意外死亡,警方通過查閱死者的電腦和手機蟋滴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門染厅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人津函,你說我怎么就攤上這事肖粮。” “怎么了尔苦?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵涩馆,是天一觀的道長。 經常有香客問我允坚,道長魂那,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任稠项,我火速辦了婚禮涯雅,結果婚禮上,老公的妹妹穿的比我還像新娘展运。我一直安慰自己活逆,他們只是感情好,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布拗胜。 她就那樣靜靜地躺著蔗候,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挤土。 梳的紋絲不亂的頭發(fā)上琴庵,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音仰美,去河邊找鬼迷殿。 笑死,一個胖子當著我的面吹牛咖杂,可吹牛的內容都是我干的庆寺。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼诉字,長吁一口氣:“原來是場噩夢啊……” “哼懦尝!你這毒婦竟也來了知纷?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤陵霉,失蹤者是張志新(化名)和其女友劉穎琅轧,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體踊挠,經...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡乍桂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了效床。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睹酌。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖剩檀,靈堂內的尸體忽然破棺而出憋沿,到底是詐尸還是另有隱情,我是刑警寧澤沪猴,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布辐啄,位于F島的核電站,受9級特大地震影響字币,放射性物質發(fā)生泄漏则披。R本人自食惡果不足惜共缕,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一洗出、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧图谷,春花似錦翩活、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至承璃,卻和暖如春利耍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盔粹。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工隘梨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人舷嗡。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓轴猎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親进萄。 傳聞我的和親對象是個殘疾皇子捻脖,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內容

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