vue實(shí)戰(zhàn)(10):開發(fā)店鋪詳情(一)

認(rèn)真學(xué)習(xí)的樣子

登錄部分完成的比較撲街舵鳞,本篇開始做店鋪的詳情頁面,而這里的數(shù)據(jù)使用mock

0. 其它


vue實(shí)戰(zhàn)(1):準(zhǔn)備與資料整理
vue實(shí)戰(zhàn)(2):初始化項(xiàng)目信不、搭建底部導(dǎo)航路由
vue實(shí)戰(zhàn)(3):底部導(dǎo)航顯示、搭建各模塊靜態(tài)頁面、添加登錄頁頁面與路由
vue實(shí)戰(zhàn)(4):postman測試數(shù)據(jù)、封裝ajax、使用vuex管理狀態(tài)
vue實(shí)戰(zhàn)(5):總結(jié)一
vue實(shí)戰(zhàn)(6):異步顯示數(shù)據(jù)炕置、開發(fā)Star組件
vue實(shí)戰(zhàn)(7):完整開發(fā)登錄頁面(一)
vue實(shí)戰(zhàn)(8):完整開發(fā)登錄頁面(二)
vue實(shí)戰(zhàn)(9):總結(jié)二
vue實(shí)戰(zhàn)(10):開發(fā)店鋪詳情(一)
vue實(shí)戰(zhàn)(11):開發(fā)店鋪詳情(二)
vue實(shí)戰(zhàn)(12):完結(jié) + 附學(xué)習(xí)視頻

1. 安裝 mockjs 與設(shè)計(jì)數(shù)據(jù)


Mockjs: 用來攔截 ajax 請求, 生成隨機(jī)數(shù)據(jù)返回

  • 前端可以使用 mockjs 來自己做一些數(shù)據(jù),而不用等待后端開發(fā)人員的接口男韧,當(dāng)然數(shù)據(jù)結(jié)構(gòu)是需要與后端開發(fā)人員制定好的朴摊。
  • 鏈接:mockjs官網(wǎng)
  • 在項(xiàng)目中安裝引入
    npm install mockjs --save
  • 設(shè)計(jì)數(shù)據(jù)
    創(chuàng)建 mock 文件夾,并創(chuàng)建 data.json 文件與 mockServer.js 文件煌抒;
    data.json 文件為數(shù)據(jù)文件仍劈;
    mockServer.js 文件為應(yīng)用數(shù)據(jù)文件;
/*
mockServer.js
使用mockjs提供mock數(shù)據(jù)接口
 */
import Mock from 'mockjs'
import data from './data.json'

// 返回goods的接口
Mock.mock('/goods', { code: 0, data: data.goods })
// 返回ratings的接口
Mock.mock('/ratings', { code: 0, data: data.ratings })
// 返回info的接口
Mock.mock('/info', { code: 0, data: data.info })

  • main.js 中引用(這邊的引用類似引用css文件)
    import './mock/mockServer'

2. 創(chuàng)建模塊與路由


  • 創(chuàng)建模塊
    views 文件夾下創(chuàng)建 Shop 文件夾并創(chuàng)建 ShopHeader.vue 文件寡壮,為商鋪內(nèi)容贩疙;
    Shop 文件夾下創(chuàng)建 Goods 文件夾并創(chuàng)建 Goods.vue 文件,為商品內(nèi)容况既;
    Shop 文件夾下創(chuàng)建 Info 文件夾并創(chuàng)建 Info.vue 文件这溅,為店鋪活動(dòng)等內(nèi)容;
    Shop 文件夾下創(chuàng)建 Ratings 文件夾并創(chuàng)建 Ratings.vue 文件棒仍,為評價(jià)內(nèi)容悲靴;

  • 創(chuàng)建頭部模塊
    components 文件夾下創(chuàng)建 ShopTop 文件夾并創(chuàng)建 ShopTop.vue 文件,為商鋪頭部莫其;

  • 創(chuàng)建相應(yīng)路由

   {
      path: '/shopheader', // 店鋪詳情
      component: ShopHeader,
      children: [
        {
          path: '/goods', // 內(nèi)容
          component: Goods
        },
        {
          path: '/info', // 活動(dòng)公告
          component: Info
        },
        {
          path: '/ratings', // 評價(jià)
          component: Ratings
        },
        {
          path: '',
          redirect: '/goods' // 默認(rèn)
        }
      ]
    }
  • ShopList.vue 添加點(diǎn)擊事件
    在列表上添加點(diǎn)擊事件癞尚,可以跳轉(zhuǎn)詳情頁面 @click="$router.push('/ShopHeader')"
  • 目錄結(jié)構(gòu)


    目前目錄結(jié)構(gòu)

3. 頁面搭建與創(chuàng)建請求


  • 搭建 HTMLcss

    商店頭部部分

  • 創(chuàng)建請求
    1) 創(chuàng)建 ajax 請求

     /**
   * 獲取商家信息
   */
  export const reqShopInfo = () => ajax('/info')
  /**
   * 獲取商家評價(jià)數(shù)組
   */
  export const reqShopRatings = () => ajax('/ratings')
  /**
   * 獲取商家商品數(shù)組
   */
  export const reqShopGoods = () => ajax('/goods')

2)在 vuex 中請求數(shù)據(jù)
與前面的請求數(shù)據(jù)方式相同,直接在原本的方法下面補(bǔ)充新方法

import { // 引入
  reqShopInfo,
  reqShopRatings,
  reqShopGoods
  } from '../../api/index'

const state = {
  goods: [], // 店鋪商品
  ratings: [], // 評價(jià)
  info: {} // 店鋪信息
}

const mutations = {
  RECEIVE_GOODS: (state, { goods }) => { // 店鋪商品
    state.goods = goods
  },
  RECEIVE_INFO: (state, { info }) => { // 店鋪信息
    state.info = info
  },
  RECEIVE_RATINGS: (state, { ratings }) => { // 評價(jià)
    state.ratings = ratings
  }
}

const actions = {
  // 異步獲取商家信息
  async getShopInfo ({ commit }) {
    const result = await reqShopInfo()
    if (result.code === 0) {
      commit('RECEIVE_INFO', { info: result.data })
    }
  },
  // 異步獲取商家評價(jià)列表
  async getShopRatings ({ commit }) {
    const result = await reqShopRatings()
    if (result.code === 0) {
      commit('RECEIVE_RATINGS', { ratings: result.data })
    }
  },
  // 異步獲取商家商品列表
  async getShopGoods ({ commit }) {
    const result = await reqShopGoods()
    if (result.code === 0) {
      commit('RECEIVE_GOODS', { goods: result.data })
    }
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
  • 應(yīng)用數(shù)據(jù)
    1)請求數(shù)據(jù)方法完成乱陡,到頁面中看一下是否能獲取到
    ShopHeader.vue 頁面引用import { mapActions } from 'vuex'浇揩,
    然后mounted () { this.getShopInfo() }, methods: { ...mapActions('msite', ['getShopInfo']) }
    2)在 ShopTop.vue 頁面引用import { mapState} from 'vuex'憨颠,
    然后computed: { ...mapState('msite', ['info']) }胳徽,
    最后把得到的數(shù)據(jù)賦值到相應(yīng)的位置。
    數(shù)據(jù)獲取成功
  • \color{red}{一個(gè)小坑}
    一開始在獲取數(shù)據(jù)的時(shí)候報(bào)錯(cuò)了[vuex] unknown action type: msite爽彤,百度了半天也沒有解決养盗,原因是根據(jù)視頻里面,在 ShopHeader.vue 頁面方法寫的是mounted () { this.$store.dispatch('msite',['getShopInfo']) }'這樣的适篙,講道理應(yīng)該是沒有問題的往核,但是就是報(bào)錯(cuò)了,還是改用上面的方式就好了嚷节。

4. 結(jié)束


本篇結(jié)束聂儒,下面是頁面上的tab切換部分蝶缀,也就是3個(gè)子路由的頁面。

點(diǎn)個(gè)贊唄薄货!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市碍论,隨后出現(xiàn)的幾起案子谅猾,更是在濱河造成了極大的恐慌,老刑警劉巖鳍悠,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件税娜,死亡現(xiàn)場離奇詭異,居然都是意外死亡藏研,警方通過查閱死者的電腦和手機(jī)敬矩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蠢挡,“玉大人弧岳,你說我怎么就攤上這事∫堤ぃ” “怎么了禽炬?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長勤家。 經(jīng)常有香客問我腹尖,道長,這世上最難降的妖魔是什么伐脖? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任热幔,我火速辦了婚禮,結(jié)果婚禮上讼庇,老公的妹妹穿的比我還像新娘绎巨。我一直安慰自己,他們只是感情好巫俺,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布认烁。 她就那樣靜靜地躺著,像睡著了一般介汹。 火紅的嫁衣襯著肌膚如雪却嗡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天嘹承,我揣著相機(jī)與錄音窗价,去河邊找鬼。 笑死叹卷,一個(gè)胖子當(dāng)著我的面吹牛撼港,可吹牛的內(nèi)容都是我干的坪它。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼帝牡,長吁一口氣:“原來是場噩夢啊……” “哼往毡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起靶溜,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤开瞭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后罩息,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗤详,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年瓷炮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了葱色。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡娘香,死狀恐怖苍狰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情烘绽,我是刑警寧澤舞痰,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站诀姚,受9級特大地震影響响牛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赫段,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一呀打、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧糯笙,春花似錦贬丛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至够庙,卻和暖如春恭应,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背耘眨。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工昼榛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人剔难。 一個(gè)月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓胆屿,卻偏偏與公主長得像奥喻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子非迹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354