中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

臨沂手機(jī)網(wǎng)站建設(shè)google學(xué)術(shù)搜索

臨沂手機(jī)網(wǎng)站建設(shè),google學(xué)術(shù)搜索,網(wǎng)站建設(shè)贈送seo,做ppt哪個網(wǎng)站好一,前言 上一篇,主要介紹了 Vuex-namespaced 命名空間的實現(xiàn),主要涉及以下幾個點: 命名空間的介紹和使用;命名空間的邏輯分析與代碼實現(xiàn);命名空間核心流程梳理; 本篇,繼續(xù)介紹 Vu…

一,前言

上一篇,主要介紹了 Vuex-namespaced 命名空間的實現(xiàn),主要涉及以下幾個點:

  • 命名空間的介紹和使用;
  • 命名空間的邏輯分析與代碼實現(xiàn);
  • 命名空間核心流程梳理;

本篇,繼續(xù)介紹 Vuex 插件機(jī)制的實現(xiàn);


二,Vuex 插件使用介紹

1,Vuex 插件使用

Vuex 不僅提供了全局狀態(tài)管理能力,還進(jìn)一步提供了插件機(jī)制,便于開發(fā)者對 Vuex 插件進(jìn)行增強(qiáng);

Vuex 插件的使用方式:通過 Store 類提供的 plugin 數(shù)組進(jìn)行 Vuex 插件注冊:

const store = new Vuex.Store({// plugins:注冊 vuex 插件plugins: [plugin1(),plugin2()]
});

備注:在 plugins 數(shù)組中可以注冊多個 Vuex 插件,插件的執(zhí)行是串行順序執(zhí)行的;

2,Vuex 內(nèi)置的 logger 日志插件

在 Vuex 插件中,內(nèi)置了 logger 日志插件:

// src/store/index.jsimport Vue from 'vue';
import Vuex from 'vuex';// 引入 Vuex 日志插件 logger
import logger from 'vuex/dist/logger'Vue.use(Vuex);const store = new Vuex.Store({plugins: [logger(),   // 日志插件:導(dǎo)出的 logger 是一個高階函數(shù)],
});
export default store;

備注:

  • logger 為 Vuex 內(nèi)置插件,在 vuex 包中 dist 目錄下;
  • logger 是一個高階函數(shù),便于在使用插件時進(jìn)行傳參;

logger 插件的執(zhí)行效果:

為 Vuex 添加 logger 插件后,當(dāng)狀態(tài)發(fā)生變化時,控制臺將會輸出相關(guān)日志:

image.png

如圖所示,控制臺日志將輸出所觸發(fā)的事件類型、事件名稱、及事件執(zhí)行前后的狀態(tài)變化;

logger 插件的效果相當(dāng)于 AOP 面向切面編程,在事件觸發(fā)前后分別輸出了相關(guān)的日志;

這樣,通過開啟 Vuex 日志插件,增強(qiáng)了開發(fā)環(huán)境下的調(diào)試體驗,便于開發(fā)者快速定位狀態(tài)相關(guān)的問題;


三,Vuex 插件開發(fā)

1,vuex-persists 狀態(tài)持久化插件

在使用 Vuex 插件進(jìn)行狀態(tài)管理時,一定會遇到一個問題:當(dāng)頁面刷新時(如使用 F5 進(jìn)行刷新),將導(dǎo)致頁面狀態(tài)丟失;

為了解決這個問題,可以使用狀態(tài)持久化插件:vuex-persists;

2,vuex-persists 插件的實現(xiàn)

Vuex 插件的開發(fā)并不復(fù)雜:

  1. 創(chuàng)建一個 Vuex 插件,最終導(dǎo)出一個高階函數(shù)(在 plugin 數(shù)組中進(jìn)行插件注冊);
  2. Vuex 的 Store 類提供的訂閱方法 store.subscribe:當(dāng) mutation 方法觸發(fā)時被執(zhí)行;
  3. Vuex 的 Store 類提供的狀態(tài)替換方法 store.replaceState:能夠更新 Vuex 中的狀態(tài);

基于 Vuex 提供的插件機(jī)制,vuex-persists 插件的實現(xiàn)邏輯如下:

  1. 創(chuàng)建高階函數(shù) persists,當(dāng) vuex 初始化時通過 plugin 完成拆件的注冊和初始化操作;
  2. 使用 store.subscribe 訂閱方法:當(dāng) mutation 方法觸發(fā)時,將當(dāng)前狀態(tài)保存到本地;
  3. 當(dāng)頁面刷新時,狀態(tài)將會丟失,同時 Vuex 插件重新初始化,此時重新讀取本地狀態(tài),并通過store.replaceState將本地狀態(tài)(即刷新丟失的狀態(tài))替換到 Vuex 狀態(tài),實現(xiàn)狀態(tài)的持久化效果;

備注:本地存儲可通過 persists 插件參數(shù)在外部配置:

  • localstorage
  • sessionstorage
  • cookie;

代碼實現(xiàn):

import Vue from 'vue';
import Vuex from 'vuex';Vue.use(Vuex);// vuex-persists 插件實現(xiàn)
function persists() {return function (store) {console.log("----- persists 插件執(zhí)行 -----")// 取出本地存儲的狀態(tài)let data = localStorage.getItem('VUEX:STATE');if (data) {console.log("----- 存在本地狀態(tài),同步至 Vuex -----")// 如果存在,使用本地狀態(tài)替換 Vuex 中的狀態(tài)store.replaceState(JSON.parse(data));}// subscribe:由 vuex 提供的訂閱方法,當(dāng)觸發(fā) mutation 方法時被執(zhí)行;store.subscribe((mutation, state) => {console.log("----- 進(jìn)入 store.subscribe -----")localStorage.setItem('VUEX:STATE', JSON.stringify(state));})}
}const store = new Vuex.Store({plugins: [logger(),   // 日志插件:導(dǎo)出的 logger 是一個高階函數(shù)persists()  // 持久化插件:vuex-persists]
});export default store;

3,測試插件效果

1,啟動項目,控制臺輸出日志:完成 persists 插件初始化;

image.png

2,點擊按鈕更新狀態(tài):

點擊按鈕,觸發(fā)根模塊 mutation 類型 changeNum 方法,按照插件注冊順序執(zhí)行 logger、persists 插件;

觸發(fā) subscribe 狀態(tài)變更事件訂閱的回調(diào)方法,將新狀態(tài)保存至本地存儲 localStorage,根模塊商品數(shù)量狀態(tài) num 由 10 更新為 15;

3,當(dāng)頁面刷新時:

若沒有持久化插件,會由于頁面刷新導(dǎo)致 Vuex 中的狀態(tài)丟失;

此時,當(dāng)頁面刷新時,persists 持久化插件在重新執(zhí)行初始化操作時,會讀取本地存儲中保存的狀態(tài)數(shù)據(jù),即由于頁面刷新丟失的數(shù)據(jù),并通過 store.replaceState 方法更新 Vuex 中的狀態(tài),實現(xiàn)狀態(tài)的持久化效果;

這樣就實現(xiàn)了一個狀態(tài)持久化插件的雛形;

接下來,繼續(xù)實現(xiàn) Vuex 所提供的插件機(jī)制;


四,Vuex 插件機(jī)制分析

通過官方 Vuex 插件所提供的插件機(jī)制,創(chuàng)建并實現(xiàn)了一個簡易的 Vuex 插件;

Vuex 插件的實現(xiàn),主要使用 Vuex 提供的以下方法:

  • Vuex 插件的 plugins 數(shù)組,提供插件注冊功能;
  • store.subscribe:狀態(tài)變更時的訂閱回調(diào)功能;
  • store.replaceState:狀態(tài)替換功能;

下一篇,將根據(jù)以上分析,實現(xiàn) Vuex 的插件機(jī)制;


五,結(jié)尾

本篇,主要介紹了 Vuex 插件的開發(fā),主要涉及以下幾個點:

  • Vuex 插件的使用介紹;
  • Vuex 插件開發(fā)和使用分析;
  • Vuex 插件機(jī)制的分析;

下一篇,繼續(xù)介紹 Vuex 插件機(jī)制的實現(xiàn);


維護(hù)日志

  • 20211012
    • 由于新擴(kuò)充的 Vuex 插件機(jī)制源碼部分較多,故將 Vuex 插件部分拆分為兩篇文章:《Vuex 插件開發(fā)》和《Vuex 插件機(jī)制實現(xiàn)》;
    • 修改文章標(biāo)題和摘要;
    • 優(yōu)化文字描述與 md 排版格式;
http://www.risenshineclean.com/news/35344.html

相關(guān)文章:

  • 公眾號網(wǎng)站怎么做永久免費(fèi)linux服務(wù)器
  • 網(wǎng)站制作說明書谷歌瀏覽器app
  • 南陽網(wǎng)站優(yōu)化渠道市場調(diào)研報告的基本框架
  • server2012 wordpress想找搜索引擎優(yōu)化
  • 網(wǎng)站建設(shè)裝修專業(yè)網(wǎng)站推廣優(yōu)化
  • 網(wǎng)站制作工具 簡易中國國家培訓(xùn)網(wǎng)官網(wǎng)查詢
  • 南寧建站程序搜索引擎營銷的四種方式
  • 蘭州做網(wǎng)站哪家好網(wǎng)址域名ip解析
  • 免認(rèn)證域名注冊手機(jī)卡頓優(yōu)化軟件
  • 龍之向?qū)赓Q(mào)網(wǎng)站 網(wǎng)絡(luò)服務(wù)關(guān)鍵詞優(yōu)化設(shè)計
  • 網(wǎng)站建設(shè)對網(wǎng)絡(luò)營銷的影響seo課程簡介
  • 導(dǎo)購網(wǎng)站建設(shè)網(wǎng)絡(luò)營銷有什么方式
  • 企業(yè)網(wǎng)站虛擬空間自助建站免費(fèi)建站平臺
  • 購物網(wǎng)站開發(fā)實例鄭州網(wǎng)站公司哪家好
  • 做網(wǎng)站要用多少錢如何在其他平臺做推廣
  • 橋頭仿做網(wǎng)站個人博客
  • 專門做淘寶優(yōu)惠券的網(wǎng)站互聯(lián)網(wǎng)營銷的特點
  • 基層建設(shè)論文收錄在哪個網(wǎng)站公司做網(wǎng)站一般多少錢
  • dz論壇可以做商業(yè)網(wǎng)站seo搜索引擎優(yōu)化課程
  • 做ppt的軟件模板下載網(wǎng)站滿十八歲可以申請abc認(rèn)證嗎
  • 南陽專業(yè)網(wǎng)站制作費(fèi)用seo公司官網(wǎng)
  • 保世基官方網(wǎng)站建設(shè)北京云無限優(yōu)化
  • 網(wǎng)站域名密碼找回b2b電子商務(wù)網(wǎng)站都有哪些
  • 兗州住房與城鄉(xiāng)建設(shè)局網(wǎng)站企業(yè)網(wǎng)絡(luò)營銷方法
  • 一個二手書網(wǎng)站的建設(shè)目標(biāo)google推廣公司
  • 給別人做網(wǎng)站的公司長治seo
  • 網(wǎng)頁瀏覽器tv版51趣優(yōu)化網(wǎng)絡(luò)seo工程師教程
  • 如何做網(wǎng)站規(guī)劃谷歌推廣運(yùn)營
  • 直接拖拉做網(wǎng)站的軟件seo網(wǎng)站培訓(xùn)優(yōu)化怎么做
  • 用HBuilder做網(wǎng)站的模板關(guān)鍵詞優(yōu)化顧問