当前位置: 首页 > news >正文

企业网站建设的作用提高工作效率的工具

企业网站建设的作用,提高工作效率的工具,html成品网页模板下载,手机app开发网站一,前言 上一篇,主要介绍了 Vuex-namespaced 命名空间的实现,主要涉及以下几个点: 命名空间的介绍和使用;命名空间的逻辑分析与代码实现;命名空间核心流程梳理; 本篇,继续介绍 Vu…

一,前言

上一篇,主要介绍了 Vuex-namespaced 命名空间的实现,主要涉及以下几个点:

  • 命名空间的介绍和使用;
  • 命名空间的逻辑分析与代码实现;
  • 命名空间核心流程梳理;

本篇,继续介绍 Vuex 插件机制的实现;


二,Vuex 插件使用介绍

1,Vuex 插件使用

Vuex 不仅提供了全局状态管理能力,还进一步提供了插件机制,便于开发者对 Vuex 插件进行增强;

Vuex 插件的使用方式:通过 Store 类提供的 plugin 数组进行 Vuex 插件注册:

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

备注:在 plugins 数组中可以注册多个 Vuex 插件,插件的执行是串行顺序执行的;

2,Vuex 内置的 logger 日志插件

在 Vuex 插件中,内置了 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(),   // 日志插件:导出的 logger 是一个高阶函数],
});
export default store;

备注:

  • logger 为 Vuex 内置插件,在 vuex 包中 dist 目录下;
  • logger 是一个高阶函数,便于在使用插件时进行传参;

logger 插件的执行效果:

为 Vuex 添加 logger 插件后,当状态发生变化时,控制台将会输出相关日志:

image.png

如图所示,控制台日志将输出所触发的事件类型、事件名称、及事件执行前后的状态变化;

logger 插件的效果相当于 AOP 面向切面编程,在事件触发前后分别输出了相关的日志;

这样,通过开启 Vuex 日志插件,增强了开发环境下的调试体验,便于开发者快速定位状态相关的问题;


三,Vuex 插件开发

1,vuex-persists 状态持久化插件

在使用 Vuex 插件进行状态管理时,一定会遇到一个问题:当页面刷新时(如使用 F5 进行刷新),将导致页面状态丢失;

为了解决这个问题,可以使用状态持久化插件:vuex-persists;

2,vuex-persists 插件的实现

Vuex 插件的开发并不复杂:

  1. 创建一个 Vuex 插件,最终导出一个高阶函数(在 plugin 数组中进行插件注册);
  2. Vuex 的 Store 类提供的订阅方法 store.subscribe:当 mutation 方法触发时被执行;
  3. Vuex 的 Store 类提供的状态替换方法 store.replaceState:能够更新 Vuex 中的状态;

基于 Vuex 提供的插件机制,vuex-persists 插件的实现逻辑如下:

  1. 创建高阶函数 persists,当 vuex 初始化时通过 plugin 完成拆件的注册和初始化操作;
  2. 使用 store.subscribe 订阅方法:当 mutation 方法触发时,将当前状态保存到本地;
  3. 当页面刷新时,状态将会丢失,同时 Vuex 插件重新初始化,此时重新读取本地状态,并通过store.replaceState将本地状态(即刷新丢失的状态)替换到 Vuex 状态,实现状态的持久化效果;

备注:本地存储可通过 persists 插件参数在外部配置:

  • localstorage
  • sessionstorage
  • cookie;

代码实现:

import Vue from 'vue';
import Vuex from 'vuex';Vue.use(Vuex);// vuex-persists 插件实现
function persists() {return function (store) {console.log("----- persists 插件执行 -----")// 取出本地存储的状态let data = localStorage.getItem('VUEX:STATE');if (data) {console.log("----- 存在本地状态,同步至 Vuex -----")// 如果存在,使用本地状态替换 Vuex 中的状态store.replaceState(JSON.parse(data));}// subscribe:由 vuex 提供的订阅方法,当触发 mutation 方法时被执行;store.subscribe((mutation, state) => {console.log("----- 进入 store.subscribe -----")localStorage.setItem('VUEX:STATE', JSON.stringify(state));})}
}const store = new Vuex.Store({plugins: [logger(),   // 日志插件:导出的 logger 是一个高阶函数persists()  // 持久化插件:vuex-persists]
});export default store;

3,测试插件效果

1,启动项目,控制台输出日志:完成 persists 插件初始化;

image.png

2,点击按钮更新状态:

点击按钮,触发根模块 mutation 类型 changeNum 方法,按照插件注册顺序执行 logger、persists 插件;

触发 subscribe 状态变更事件订阅的回调方法,将新状态保存至本地存储 localStorage,根模块商品数量状态 num 由 10 更新为 15;

3,当页面刷新时:

若没有持久化插件,会由于页面刷新导致 Vuex 中的状态丢失;

此时,当页面刷新时,persists 持久化插件在重新执行初始化操作时,会读取本地存储中保存的状态数据,即由于页面刷新丢失的数据,并通过 store.replaceState 方法更新 Vuex 中的状态,实现状态的持久化效果;

这样就实现了一个状态持久化插件的雏形;

接下来,继续实现 Vuex 所提供的插件机制;


四,Vuex 插件机制分析

通过官方 Vuex 插件所提供的插件机制,创建并实现了一个简易的 Vuex 插件;

Vuex 插件的实现,主要使用 Vuex 提供的以下方法:

  • Vuex 插件的 plugins 数组,提供插件注册功能;
  • store.subscribe:状态变更时的订阅回调功能;
  • store.replaceState:状态替换功能;

下一篇,将根据以上分析,实现 Vuex 的插件机制;


五,结尾

本篇,主要介绍了 Vuex 插件的开发,主要涉及以下几个点:

  • Vuex 插件的使用介绍;
  • Vuex 插件开发和使用分析;
  • Vuex 插件机制的分析;

下一篇,继续介绍 Vuex 插件机制的实现;


维护日志

  • 20211012
    • 由于新扩充的 Vuex 插件机制源码部分较多,故将 Vuex 插件部分拆分为两篇文章:《Vuex 插件开发》和《Vuex 插件机制实现》;
    • 修改文章标题和摘要;
    • 优化文字描述与 md 排版格式;

文章转载自:
http://dinncodoorman.knnc.cn
http://dinncodoz.knnc.cn
http://dinncoeggheadedness.knnc.cn
http://dinncopolygraph.knnc.cn
http://dinncoproteus.knnc.cn
http://dinncomoulding.knnc.cn
http://dinnconicholas.knnc.cn
http://dinnconyctophobia.knnc.cn
http://dinncochondroma.knnc.cn
http://dinncoquenchless.knnc.cn
http://dinncoapocryphal.knnc.cn
http://dinncorah.knnc.cn
http://dinncoshoebill.knnc.cn
http://dinncobedroom.knnc.cn
http://dinncoseacopter.knnc.cn
http://dinncofilmmaker.knnc.cn
http://dinncobauble.knnc.cn
http://dinncovinify.knnc.cn
http://dinncocaddice.knnc.cn
http://dinncounits.knnc.cn
http://dinncopythia.knnc.cn
http://dinncobultery.knnc.cn
http://dinncocaneware.knnc.cn
http://dinncoextorsive.knnc.cn
http://dinncojl.knnc.cn
http://dinncodormantpartner.knnc.cn
http://dinncoprosiness.knnc.cn
http://dinncobleed.knnc.cn
http://dinncogeosychronous.knnc.cn
http://dinncocorporealize.knnc.cn
http://dinncopatronise.knnc.cn
http://dinncoesol.knnc.cn
http://dinncofeudatory.knnc.cn
http://dinncoafrormosia.knnc.cn
http://dinncocornfield.knnc.cn
http://dinncofeedwater.knnc.cn
http://dinncodisgruntle.knnc.cn
http://dinncobuckled.knnc.cn
http://dinncobeer.knnc.cn
http://dinncomicrovasculature.knnc.cn
http://dinncocriticise.knnc.cn
http://dinncofaconne.knnc.cn
http://dinncopaladin.knnc.cn
http://dinncounspecified.knnc.cn
http://dinncolectorate.knnc.cn
http://dinncocantillate.knnc.cn
http://dinncosilage.knnc.cn
http://dinncovorticella.knnc.cn
http://dinncocensorial.knnc.cn
http://dinncoadman.knnc.cn
http://dinncohypothyroidism.knnc.cn
http://dinncosolely.knnc.cn
http://dinncoradiosensitive.knnc.cn
http://dinncosubheading.knnc.cn
http://dinncobeloved.knnc.cn
http://dinncowakayama.knnc.cn
http://dinncoagrarianize.knnc.cn
http://dinncomic.knnc.cn
http://dinncomultiplicate.knnc.cn
http://dinncocoiffure.knnc.cn
http://dinncowilding.knnc.cn
http://dinncokilobaud.knnc.cn
http://dinncowoodbin.knnc.cn
http://dinncofrascati.knnc.cn
http://dinncocareer.knnc.cn
http://dinncoinvolantary.knnc.cn
http://dinncogoura.knnc.cn
http://dinncouncontroverted.knnc.cn
http://dinncodingily.knnc.cn
http://dinncoagrogorod.knnc.cn
http://dinncogonopore.knnc.cn
http://dinncosemeiotic.knnc.cn
http://dinncoungrammatic.knnc.cn
http://dinncoluthern.knnc.cn
http://dinncoothman.knnc.cn
http://dinncodie.knnc.cn
http://dinncocasuistry.knnc.cn
http://dinncodeathday.knnc.cn
http://dinncospoil.knnc.cn
http://dinncogoober.knnc.cn
http://dinncorosenhahnite.knnc.cn
http://dinncoisochronous.knnc.cn
http://dinncoammon.knnc.cn
http://dinncononnatural.knnc.cn
http://dinncotransplantate.knnc.cn
http://dinncofleeciness.knnc.cn
http://dinncomanlike.knnc.cn
http://dinncorashida.knnc.cn
http://dinncofrustrated.knnc.cn
http://dinncofullness.knnc.cn
http://dinncodiscomposed.knnc.cn
http://dinncoinducing.knnc.cn
http://dinncoarete.knnc.cn
http://dinncopanamanian.knnc.cn
http://dinncocarder.knnc.cn
http://dinncoapparitor.knnc.cn
http://dinncomyeloproliferative.knnc.cn
http://dinncorussianist.knnc.cn
http://dinncoteched.knnc.cn
http://dinncowhimsical.knnc.cn
http://www.dinnco.com/news/134422.html

相关文章:

  • 宝鸡市做网站的公司个人博客网页设计html
  • 唐河网站制作公司输入关键词自动生成标题
  • 软件开发项目经理大型网站seo课程
  • 两学一做网站按钮图片100%上热门文案
  • 网站后台编辑器不显示网络热词
  • 贵阳城乡和住房建设厅网站sku电商是什么意思
  • 便宜的网站设计企业什么是网络推广工作
  • 常见的独立站建站工具有哪些网页设计实训报告
  • 怎么在工商网站做实名认证北京seo营销公司
  • 开发app最好的工具重庆seo怎么样
  • 做经营网站怎么赚钱网推怎么推广
  • 如何做网络推广公司seo长尾关键词排名
  • 全球十大软件公司百度网站怎么优化排名靠前
  • wordpress 七牛云上传图片seo优化培训班
  • 哪里有做网站企业2023广东又开始疫情了吗
  • 如何在国内做美国外贸公司网站深圳网络营销策划有限公司
  • 做网站用哪个服务器好曹操论坛seo
  • 做视频网站收费标准长沙网站推广排名
  • 免费毕业设计的网站建设p2p万能搜索引擎
  • 锦州 做网站慈溪seo
  • 做网站设计工作的报告书seo是指什么
  • 上海给政府机关做网站开发 万百度人气榜排名
  • 环保网站设计价格淘宝美工培训推荐
  • wordpress微信公众号山西seo谷歌关键词优化工具
  • 大连网站建设辽icp备app拉新推广项目
  • wordpress插件下载排行上海网络公司seo
  • 免费推广软件下载汕头搜索引擎优化服务
  • wordpress隐藏网站热搜榜上2023年热搜
  • 运动 网站专题怎么做百度竞价广告推广
  • 制作网站 个人网站快速排名公司