日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

从0到1使用VUE-CLI3开发实战(五):模块化VUEX及使用vuetify

發布時間:2025/3/8 vue 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从0到1使用VUE-CLI3开发实战(五):模块化VUEX及使用vuetify 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
小肆前幾天發了一篇2019年Vue精品開源項目庫的匯總,今天小肆要使用的是在UI組件中排行第三的Vuetify。

vuetify介紹

Vuetify是一個漸進式的框架,完全根據Material Design規范開發,一共擁有80多個組件,對移動端支持非常好。

支持SSR(服務端渲染),SPA(單頁應用程序),PWA(漸進式Web應用程序)和標準HTML頁面。

vuetify官方文檔給出了它具備的幾點優勢:

安裝

安裝算是比較簡單了,在項目目錄輸入以下命令就OK:

vue add vuetify

但這時有一個問題,如果我們使用默認的icon,index.html里面引入的是google的鏈接

<link href='https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons' rel="stylesheet">

我們需要替換成國內的

https://fonts.cat.net/

底部導航組件

今天我們先用vuetify的語法寫一個底部導航的組件,先放代碼:

<template><v-card flat><v-bottom-nav :value="true" fixed color="transparent"><v-btn color="teal" :to="{path:'/'}" flat><span>首頁</span><v-icon>home</v-icon></v-btn><v-btn color="teal" :to="{path:'/lottery'}" flat><span>足彩</span><v-icon>favorite</v-icon></v-btn><v-btn color="teal" :to="{path:'/competition'}" flat><span>賽事</span><v-icon>place</v-icon></v-btn><v-btn color="teal" :to="{path:'/course'}" flat><span>課程</span><v-icon>music_video</v-icon></v-btn></v-bottom-nav></v-card> </template>

這里主要用到的是v-bottom-nav這個API,下面這張圖顯示了它可用的全部屬性:

上述代碼的實際顯示效果:

模塊化vuex

為了使用方便,我們改造一下vuex,新建store目錄,目錄結構如下:

更改store.js

import Vue from 'vue' import Vuex from 'vuex' import app from './store/modules/app' import user from './store/modules/user' import getters from './store/getters'Vue.use(Vuex)const store = new Vuex.Store({modules: {app,user},getters })export default store

全局loading

昨天我們配置了axios,今天我們來配置一下全局loading。

先寫一個組件RequestLoading.vue
<template><transition name="fade-transform" mode="out-in"><div class="request-loading-component" v-if="requestLoading"><v-progress-circular :size="50" color="primary" indeterminate></v-progress-circular></div></transition> </template><script> import { mapGetters } from 'vuex'export default {name: 'RequestLoading',computed: {...mapGetters(['requestLoading'])} } </script><style lang="stylus" scoped> .request-loading-component {position: fixed;left: 0;right: 0;top: 0;bottom: 0;background-color: rgba(48, 65, 86, 0.5);font-size: 150px;display: flex;flex-direction: row;justify-content: center;align-items: center;z-index: 999999; } </style>

這里我們用到了,vuetify中的v-progress-circular

接下來我們配置一下vuex

app.js
const app = {state: {requestLoading: 0},mutations: {SET_LOADING: (state, status) => {// error 的時候直接重置if (status === 0) {state.requestLoading = 0return}if (status) {++state.requestLoading} else {--state.requestLoading}}},actions: {SetLoading({ commit }, status) {commit('SET_LOADING', status)}} }export default app
getter.js
const getters = {requestLoading: (state) => state.app.requestLoading,token: (state) => state.user.token,avatar: (state) => state.user.avatar,name: (state) => state.user.name }export default getters
最后我們修改一下axios.js
// 添加請求攔截器 service.interceptors.request.use((config) => {if (config.method === 'post' || config.method === 'put') {// post、put 提交時,將對象轉換為string, 為處理Java后臺解析問題config.data = JSON.stringify(config.data)}// loading + 1store.dispatch('SetLoading', true)// 請求發送前進行處理return config},(error) => {// 請求錯誤處理// loading 清 0setTimeout(function() {store.dispatch('SetLoading', 0)}, 300)return Promise.reject(error)} )// 添加響應攔截器 service.interceptors.response.use((response) => {let { data, headers } = responseif (headers['x-auth-token']) {data.token = headers['x-auth-token']}// loading - 1store.dispatch('SetLoading', false)return data},(error) => {let info = {},{ status, statusText, data } = error.responseif (!error.response) {info = {code: 5000,msg: 'Network Error'}} else {// 此處整理錯誤信息格式info = {code: status,data: data,msg: statusText}}// loading - 1store.dispatch('SetLoading', false)return Promise.reject(info)} )

這樣我們在等待接口返回數據是就會看到下面這樣子:

小結

好啦 ,今天就到這里吧,如果有什么疑問,可以下面留言,小肆會及時回復的。記得點好看呦!

前置閱讀:

  • 用vue-cli3從0到1做一個完整功能手機站(一)
  • 從0到1開發實戰手機站(二):Git提交規范配置
  • 從0到1使用VUE-CLI3開發實戰(三): ES6知識儲備
  • 從0到1使用VUE-CLI3開發實戰(四):Axios封裝
  • 總結

    以上是生活随笔為你收集整理的从0到1使用VUE-CLI3开发实战(五):模块化VUEX及使用vuetify的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 小宝贝真紧h军人h | 亚洲精品高清在线观看 | 一级做a爱片性色毛片 | 国产精品v欧美精品v日韩精品 | 99久在线精品99re8热 | 欧美 日韩 国产 一区二区三区 | 日韩精品视频一区二区 | 精产国品一二三产品蜜桃 | 亚洲 欧美 精品 | 国产精品一区二区三区线羞羞网站 | 中文字幕人妻一区二区三区 | 一区二区三区不卡在线 | 欧美在线视频免费观看 | 欧美久久久久久又粗又大 | 国产午夜精品理论片在线 | 日本人做受免费视频 | 91人人爱 | 国产视频一区二区三区在线 | 黄色不卡av| 光溜溜视频素材大全美女 | 男人的天堂一区 | 911国产在线| 超碰一区二区 | 成人亚洲一区 | 国产又粗又猛又黄又爽无遮挡 | 青青青国产 | 久久91亚洲人成电影网站 | 一级伦理片 | 亚洲社区在线 | 永久免费av | 精品一级少妇久久久久久久 | 日韩av一区二区三区四区 | 男人把女人捅爽 | 日韩午夜激情电影 | 97视频资源 | 亚洲精品乱码久久久久久蜜桃91 | 日韩1级片| 久久久久久久久久一区二区 | www.亚洲色图 | 国产在线高清 | 看黄色一级大片 | 亚洲男女一区二区三区 | 夜夜爱爱| 日韩经典中文字幕 | 丁香六月色婷婷 | 牛牛电影国产一区二区 | 91自啪 | 国产我不卡 | 黄频网站在线观看 | 欧美激情第1页 | 久久成人人人人精品欧 | 国产精品久久精品 | 欧美另类69xxxx | 国产精品成人国产乱一区 | 久操网在线 | 亚洲欧洲自拍偷拍 | av动漫在线免费观看 | 欧美成人aaaaⅴ片在线看 | 天天爽夜夜爽一区二区三区 | 一区二区视频免费看 | 少妇激情一区二区三区 | 日日舔夜夜摸 | 欧美黄在线观看 | 538国产精品视频一区二区 | 欧美日韩中文视频 | 免费看黄色片子 | 专干中国老太婆hd | 黄片毛片视频 | 成年人黄色av | 五级毛片| 今天最新中文字幕mv高清 | 69看片 | 一区二区免费在线观看视频 | 超碰2023 | 亚洲风情亚aⅴ在线发布 | 欧美另类视频在线观看 | 久久久综合色 | 国产精选在线观看 | 在线观看欧美日韩视频 | 日韩av中字| 一个人在线观看免费视频www | 青娱乐国产 | 亚洲av无码久久精品狠狠爱浪潮 | 一区二区三区四区高清视频 | 久射网| 黄色av高清 | 成人影片网址 | 涩涩一区 | 天天爱天天干天天操 | 国产精品视频麻豆 | 国产福利观看 | 99re热视频| 综合五月婷婷 | 国产日韩成人内射视频 | 久久国产精品免费视频 | 亚洲精品久久久蜜桃网尤妮丝 | 亚洲二区在线观看 | 色妇网| 亚洲毛片精品 |