從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)}
)

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

小結

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

前置閱讀:

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537027.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537027.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537027.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

詳解垃圾回收算法

分享一波:程序員賺外快-必看的巔峰干貨 標記清除算法 概念 該算法有兩個階段。 標記階段&#xff1a;找到所有可訪問的對象&#xff0c;做個標記。 清除階段&#xff1a;遍歷堆&#xff0c;把未被標記的對象回收 缺點&#xff1a;會產生碎片&#xff0c;不夠連貫 應用場景…

智能情緒分析技術_石化緣推薦:煉化企業智能機器人巡檢技術應用前景分析!...

本期內容由湖南天一奧星泵業有限公司冠名煉化企業智能機器人巡檢技術應用前景分析王國彤1,孫秉才2,儲勝利2,宋亞敏1(1.中國石油天然氣股份有限公司大連石化分公司&#xff0c;遼寧省大連市&#xff1b;2.中國石油集團安全環保技術研究院有限公司&#xff0c;北京市)摘要&#x…

CentOS 7編譯程序后的環境變量設置

今晚在 CentOS 7 上配置 Gitea&#xff0c;配置完成后在本地 clone 倉庫會提示 Failed to execute git command: exec: "git-upload-pack": executable file not found in $PATH&#xff0c;果斷用軟連接打法解決。隨后在 push 時又出現 Failed to execute git comma…

詳解:JVM內存調優參數

分享一波:程序員賺外快-必看的巔峰干貨 -Xms JVM啟動時申請的初始Heap值&#xff0c;默認為操作系統物理內存的1/64但小于1G。默認當空余堆內存大于70%時&#xff0c;JVM會減小heap的大小到-Xms指定的大小&#xff0c;可通過-XX:MaxHeapFreeRation來指定這個比列。Server端JV…

數組指針 sizeof 實現_C++數組指針!

學習C數組的時候&#xff0c;對數組的了解不是很深。也不知道&#xff0c;為什么聲明一個數組&#xff0c;int a[10]&#xff0c;為什么a就是數組的地址。你可以這樣理解&#xff0c;將a理解為指向數組頭的一個指針&#xff0c;這樣就好理解了。理解了之后確實好像豁然開朗的樣…

利用人工智能提升團隊包容性

在2018年11月舉行的Gartner應用技術與解決方案峰會上&#xff0c;高級主管分析師John Kostoulas認為&#xff0c;積極培養包容性文化的團隊和團隊領導者將超越他們的目標。Kostoulas引用了CEB-Gartner在2016年進行的一項領導力驗證調查&#xff0c;他指出&#xff0c;性別多元化…

表單驗證開發 - 登錄注冊開發(3)

表單驗證開發 - 登錄注冊開發(3) 一、教程目標 學習如何在表單中添加驗證規則。掌握使用 JSON 配置表單驗證規則的方法。實現前端和后端的表單驗證。 二、教程內容 1. 前端表單驗證 步驟 1&#xff1a;找到表單編輯 在頁面上找到需要編輯的表單&#xff0c;如注冊表單或登錄…

count(1),count(*),count(主鍵) 性能對比及辟謠

分享一波:程序員賺外快-必看的巔峰干貨 前言 前段時間關于統計數量的sql問題和朋友進行了討論&#xff0c;網上關于這三種查詢方式說法不一&#xff0c;主要有以下兩種說法。 count(*) count(主鍵) > count(1) count(主鍵) > count(*) > count(1)今天對這三種方式…

python與會計的論文_甭管前浪后浪,寫完論文的先浪!

原標題&#xff1a;甭管前浪后浪&#xff0c;寫完論文的先浪&#xff01;自愿返校已是板上釘釘的事兒了而對于大家的期末考現在也基本上已經通知線上考試如果沒有線上考試的話&#xff0c;那就是交論文可是&#xff0c;論文動不動就2000字10%查重毛概、各種選修課等等每一門都是…

git 命令 clone分支的代碼

一個項目通常含有很多分支&#xff0c; master分支一般是經過測試&#xff0c;驗證沒有問題后&#xff0c;代碼才會提交到master分支 develop分支&#xff0c;是測試經常拉下來進行測試的分支 直接復制develop分支的git 命令如下&#xff1a; git clone -b develop gitxxx 轉載…

String s = new String(123) 究竟創建了幾個對象

分享一波:程序員賺外快-必看的巔峰干貨 前言 今天上班劃水的過程中有人詢問到這個問題&#xff0c;網上對于這個問題也有爭議&#xff0c;有說創建了一個對象&#xff0c;有說兩個&#xff0c;有說三個。 首先說三個的肯定是扯淡了&#xff0c;今天來討論一下這條語句到底創…

jquery級試題_JS-jQuery練習題面試題

ES5中不能實現繼承的關鍵字A prototypeB callC applyD extends正確答案: D extends //屬于ES6不屬于常見23種設計模式A 單例B MVCC 觀察者D 策略正確答案: B創建型模式&#xff0c;共五種&#xff1a;工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。結構型模式&…

Vue 計算屬性與偵聽器

這一節我們一起學習 vue 中的計算屬性(computed properties)和偵聽器(watch)。 在之前&#xff0c;我們學習過 vue 表達式插值&#xff1a; <div id"example">{{ message.split().reverse().join() }} </div> 如果在模板中放入太多的邏輯會讓模板過重且難…

程序員到底要不要重復造輪子?

分享一波:程序員賺外快-必看的巔峰干貨 關于這個話題&#xff0c;現在這里闡述立場&#xff1a;就公司工作而言&#xff0c;不建議重復造輪子。就個人技術而言&#xff0c;強烈建議造輪子&#xff01; 程序員圈子里流行這么一句話&#xff1a;“不要重復造輪子”。它的原文是…

1582年日歷怎么了_【知乎周邊】知乎2020年日歷開箱+測評

感謝 劉看山 劉看山福利社 知一聲 這邊知乎朋友贈送的禮物&#xff0c;這邊拿到了新的一年2020年知乎的日歷。隨日歷還贈送了一年的鹽選會員體驗卡&#xff0c;這個福利很特別哈。打開盒子&#xff0c;里面是厚厚的但是卻不是很大的一個正方體。側面寫有“有問題的日歷”日歷內…

Redis集群一致性Hash效果的代碼演示

在微服務領域&#xff0c;使用Redis做緩存可并不是一件容易的事情。 像新浪、推特這樣的應用&#xff0c;許許多多的熱點數據全都存放在Redis這一層&#xff0c;打到DB層的請求并不多&#xff0c;可以說非常依賴緩存了。如果緩存掛掉&#xff0c;流量全部穿透到DB層&#xff0c…

多線程-題

1、進程和線程之間有什么不同&#xff1f; 一個進程是一個獨立&#xff08;self contained&#xff09;的運行環境&#xff0c;它可以被看作一個程序或者一個應用。而線程是在進程中執行的一個任務。java運行環境是一個包含了不同的類和程序的單一進程。線程可以被稱為輕量級進…

JDK8那些驚為天人的新特性

分享一波:程序員賺外快-必看的巔峰干貨 介紹 隨著java的發展&#xff0c;越來越多的企業開始使用 java8 版本。Java8 是自 java5之后最重要的版本&#xff0c;這個版本包含語言、編譯器、庫、工具、JVM等方面的十多個新特性。本次課程將著重學習其中的一些重點特性。 Jdk8新…

mount 安卓system只讀_Android如何讓system分區可讀寫(MTK安卓6.0)-阿里云開發者社區...

Android 系統默認情況下&#xff0c;system 分區是只讀 mount 的&#xff0c;因為無法進行往里寫數據的&#xff0c;可以用 adb 命令 adb remount 重新 mount 一下。也可以通過在板子上&#xff0c;輸入以下命令重新mount一下system分區命令使其可讀可寫。# mount -o remount /…

【數據結構和算法05】 紅-黑樹(轉發)

2019獨角獸企業重金招聘Python工程師標準>>> 【數據結構和算法05】 紅-黑樹&#xff08;看完包懂~&#xff09; 置頂 2016年04月13日 15:50:25 eson_15 閱讀數&#xff1a;52681 標簽&#xff1a; java數據結構算法紅黑樹 更多 個人分類&#xff1a; ● 結構算法---…