专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

单例模式vuex的数据管理哲学

  保证一个类仅有一个实例,并提供一个访问它的全局访问点,这样的模式就叫做单例模式。
  单例模式是设计模式中相对较为容易理解、容易上手的一种模式,同时因为其具有广泛的应用场景,也是面试题里的常客。因此单例模式这块我们除了讲解单例模式的原理及其在Vuex中的应用实践(本节),还会附上两道面试真题供大家练手(下节)。单例模式的实现思路
  现在我们先不考虑单例模式的应用场景,单看它的实现,思考这样一个问题:如何才能保证一个类仅有一个实例?
  一般情况下,当我们创建了一个类(本质是构造函数)后,可以通过new关键字调用构造函数进而生成任意多的实例对象。像这样:classSingleDog{show(){console。log(我是一个单例对象)}}consts1newSingleDog()consts2newSingleDog()falses1s2
  楼上我们先new了一个s1,又new了一个s2,很明显s1和s2之间没有任何瓜葛,两者是相互独立的对象,各占一块内存空间。而单例模式想要做到的是,不管我们尝试去创建多少次,它都只给你返回第一次所创建的那唯一的一个实例。
  要做到这一点,就需要构造函数具备判断自己是否已经创建过一个实例的能力。我们现在把这段判断逻辑写成一个静态方法(其实也可以直接写入构造函数的函数体里):classSingleDog{show(){console。log(我是一个单例对象)}staticgetInstance(){判断是否已经new过1个实例if(!SingleDog。instance){若这个唯一的实例不存在,那么先创建它SingleDog。instancenewSingleDog()}如果这个唯一的实例已经存在,则直接返回returnSingleDog。instance}}consts1SingleDog。getInstance()consts2SingleDog。getInstance()trues1s2
  除了楼上这种实现方式之外,getInstance的逻辑还可以用闭包来实现:SingleDog。getInstance(function(){定义自由变量instance,模拟私有变量letinstancenullreturnfunction(){判断自由变量是否为nullif(!instance){如果为null则new出唯一实例instancenewSingleDog()}returninstance}})()
  可以看出,在getInstance方法的判断和拦截下,我们不管调用多少次,SingleDog都只会给我们返回一个实例,s1和s2现在都指向这个唯一的实例。生产实践:Vuex中的单例模式
  近年来,基于Flux架构的状态管理工具层出不穷,其中应用最广泛的要数Redux和Vuex。无论是Redux和Vuex,它们都实现了一个全局的Store用于存储应用的所有状态。这个Store的实现,正是单例模式的典型应用。这里我们以Vuex为例,研究一下单例模式是怎么发光发热的:理解Vuex中的Store
  Vuex使用单一状态树,用一个对象就包含了全部的应用层级状态。至此它便作为一个唯一数据源(SSOT)而存在。这也意味着,每个应用将仅仅包含一个store实例。单一状态树让我们能够直接地定位任一特定的状态片段,在调试的过程中也能轻易地取得整个当前应用状态的快照。Vuex官方文档
  在Vue中,组件之间是独立的,组件间通信最常用的办法是props(限于父组件和子组件之间的通信),稍微复杂一点的(比如兄弟组件间的通信)我们通过自己实现简单的事件监听函数也能解决掉。
  但当组件非常多、组件间关系复杂、且嵌套层级很深的时候,这种原始的通信方式会使我们的逻辑变得复杂难以维护。这时最好的做法是将共享的数据抽出来、放在全局,供组件们按照一定的的规则去存取数据,保证状态以一种可预测的方式发生变化。于是便有了Vuex,这个用来存放共享数据的唯一数据源,就是Store。
  关于Vuex的细节,大家可以参考Vuex的官方文档,此处提及Vuex,除了为了拓宽大家的知识面,更重要的是为了说明单例模式在生产实践中广泛的应用和不可或缺的地位。如果对Vuex没有兴趣,那么大家只需关注一个Vue实例只能对应一个Store这一点即可。Vuex如何确保Store的唯一性
  我们先来看看如何在项目中引入Vuex:安装vuex插件Vue。use(Vuex)将store注入到Vue实例中newVue({el:app,store})
  通过调用Vue。use()方法,我们安装了Vuex插件。Vuex插件是一个对象,它在内部实现了一个install方法,这个方法会在插件安装时被调用,从而把Store注入到Vue实例里去。也就是说每install一次,都会尝试给Vue实例注入一个Store。
  在install方法里,有一段逻辑和我们楼上的getInstance非常相似的逻辑:letVue这个Vue的作用和楼上的instance作用一样。。。exportfunctioninstall(Vue){判断传入的Vue实例对象是否已经被install过Vuex插件(是否有了唯一的state)if(VueVueVue){if(process。env。NODEENV!production){console。error(〔vuex〕alreadyinstalled。Vue。use(Vuex)shouldbecalledonlyonce。)}return}若没有,则为这个Vue实例对象install一个唯一的VuexVueVue将Vuex的初始化逻辑写进Vue的钩子函数里applyMixin(Vue)}
  楼上便是Vuex源码中单例模式的实现办法了,套路可以说和我们的getInstance如出一辙。通过这种方式,可以保证一个Vue实例(即一个Vue应用)只会被install一次Vuex插件,所以每个Vue实例只会拥有一个全局的Store。小结
  这里大家不妨开个脑洞,思考一下:如果我在install里没有实现单例模式,会带来什么样的麻烦?
  我们通过上面的源码解析可以看出,每次install都会为Vue实例初始化一个Store。假如install里没有单例模式的逻辑,那我们如果在一个应用里不小心多次安装了插件:在主文件里安装VuexVue。use(Vuex)。。。(中间添加修改了一些store的数据)在后续的逻辑里不小心又安装了一次Vue。use(Vuex)
  失去了单例判断能力的install方法,会为当前的Vue实例重新注入一个新的Store,也就是说你中间的那些数据操作全都没了,一切归0。因此,单例模式在此处是非常必要的。

有线电视要变了,你会买吗?自从2022年广电总局发文要求加快推进高清超高清电视发展并有序关停标清电视频道之后,全国各地的有线电视就开始慌了。由于目前在接入网仍然使用同轴电缆的有线电视,在传输高清频道存在瓶颈楼市调研一个假期卖近百套!返乡置业火热春节期间,中国证券报记者实地走访了山东江苏北京等地的房地产市场。走访发现,春节返乡置业优惠较多,房款打折特价房一口价房源等活动比比皆是。买房砸金蛋抽奖赢取家电地下室总价立减等活动也春节聚会喝两杯?阳康后悠着点,康复期要注意来源央视财经有人说,每逢过年胖三斤,这段时间餐桌上的菜肴尤为丰盛。如果不注意,很可能不利于健康。春节期间怎么吃更好呢?来看看医生的建议。1。年货食品该如何选择?多新鲜食品,多蔬果。创造历史焦科维奇成就澳网十冠王新华社墨尔本1月29日电(记者郝亚琳韦骅)在29日的2023年澳网男单决赛中,塞尔维亚天王焦科维奇30击败3号种子希腊人齐齐帕斯,创造澳网十冠王的历史性纪录。1月29日,焦科维奇在为什么0102赛季最佳一阵被称为历史最强?都有谁?最佳阵容一阵是NBA中最具含金量的阵容,而0102赛季的最佳阵容一阵被人誉为NBA史上最强一阵!本期来说这届最佳一阵都有谁?他们凭什么是最强一阵。0102赛季最佳阵容一阵都有谁?0同比增长22!春节期间三亚免税文旅受追捧商报全媒体讯(椰网海拔新闻记者杨雪梅通讯员胡敏摄影报道)2023年春节是中国优化调整防疫政策后的首个节日,海南全岛接待旅客人数不断攀升,在充足客流加之丰富活动加持下,海南离岛免税市春节宰客宰了谁?不要给消费者头上,浇一盆冷水!春节假期结束了,今年春节旅游恢复了往日的热闹。可是啊,一些让人不悦的新闻还是出现了,那就是屡禁不止的宰客现象!20块一碗面,里面只有6根面,如果您吃到了,会作何感想呢?一碗烩菜58进出双热,人气爆棚!2023年春节黄金周看桂林春节假期,铁路客流量激增,熟悉的春运又回来了。记者蒋璇摄春节期间,由于大量游客涌入桂林市区,造成车辆出行不便,因此不少人选择电单车或共享单车出行。记者苏展摄春节假期,桂林旅游业复苏春节返程新手高速的保命三条春节返程的高峰期正在进行中,在高速行车需要注意哪些事项,新手如何保证行车安全?作为一个常年出差,高速旅行的博主,下面给大家分享几点高速心得。第一出发前需要检查汽车的各项性能,长途旅借一碗面岂能毁掉西安旅游,是无知和天真,是蚍蜉撼树的不自量力要评选春节期间最有年味,最有吸引力,最有知名度,最有人气的城市,非十三朝古都的西安莫属,它若排名第二就没有城市敢排第一。无论是充满秦汉盛唐沧桑的古城墙钟鼓楼,大小雁塔,秦始皇兵马俑蚁人3理论当量子狂潮开始时,蚁人可能已经死了!漫威宇宙现在有一个重要理论认为,斯科特朗在蚁人与黄蜂女量子狂潮中将要面临严重的考验。甚至许多人猜测,保罗路德饰演的蚁人将在第五阶段的首部电影中不幸死亡。量子狂潮的主要对手是征服者康
夫妻景区游玩,丈夫不慎坠落百米悬崖!近日,云南昆明一男子与妻子到东川区红土地落霞沟景区游玩不慎坠入百米悬崖接警后消防救援人员立即出动抵达景区的消防员发现因坠崖人员位置特殊车辆无法通行救援人员携带绳索挂钩担架等山岳救援ChatGPT来了,律师职业首当其冲,必将迎来的新的机遇和挑战!昨日,OpenAL的ChatGPT4。0发布,这标志着ChatGPT进入了多模态智能阶段,同时ChatGPT产品也由测试版进入到正式版阶段,这同时也标志着ChatGPT正在走向成熟知名火锅店要求必须点锅底!网友这样说3月14日海底捞要求必须点锅底一话题登上热搜有消费者曝出海底捞已经不能点4个清水锅了,必须点一个锅底。对此,海底捞全国客服称必须付费点一个锅底,否则不能下单,且不能自带锅底。禁止单踏青野餐约起来!威海市公园绿地开放共享仪式正式启动记者苗润鹏为践行新发展理念的公园城市理念,拓展公园绿地开放共享新空间,3月13日上午,在悦海公园灯塔广场东侧,威海市公园绿地开放共享仪式正式启动。今年,威海市将试点开放20余处公园万万没想到,早起可能比熬夜更危险!这个时间起床才更健康大家都知道熬夜的危害,但是你知道吗,早起可能比熬夜更可怕!过早起床会给身体带来哪些危害?我们又应该如何好好睡觉呢?这就带你去了解一下01hr早起可能比熬夜更可怕?更伤身?良好的睡眠长时间戴耳机对耳朵会有什么危害?对耳机伤害比较小的耳机分享有一个成语叫作物极必反,指的是事物发展到极端,就会往反方向转化。无论是做什么事情,长时间一直进行对于身体肯定是会有危害的,而且市面上的耳机采用的多是入耳式和半入耳式的耳机,都是直接投入1。45亿元!苏州变成了一座公园城市!三月风拂面,兰叶春葳蕤春暖花开正适合出门到公园走走停停围绕打造处处皆景城在园中的公园城市目标苏州扎实推进民生实事项目口袋公园建设目前全市已建成570个在苏州,市民朋友可以轻松实现推你对湖北体育博物馆有什么期许?来说说近日,湖北省体育局官网发文您对湖北体育博物馆有何期许?在线征集大家的意见建议即日起,长江日报大武汉客户端发起你对湖北体育博物馆有什么期许话题互动欢迎你来说两句为更好地记录湖北体育历主编金利该出来走几步谈谈出版8年靖国神社封面旅游书毒害多少人近日,网上反映大连理工大学出版社2014年出版的日本旅行,一本就够一书用靖国神社作书籍封面。出版社3月14日通报回收并销毁,追责相关责任人。日本旅行,一本就够出版8年,毒害了多少人重磅!中国恢复10年多次签证,旅游签等恢复办理!3月13日!中国驻美大使馆发布通知,从3月15日起,将恢复外国人赴华的10年多次往返签证!自北京时间2023年3月15日零时起,就外国人来华签证及入境政策作如下调整一恢复2020年岭南商旅锚定高质量发展首要任务,助力广州打造世界级旅游目的地来源人民网广东省人大代表,岭南商旅集团党委书记董事长梁凌峰。受访者供图锚定高质量发展首要任务,助力广州打造世界级旅游目的地。广东省人大代表,岭南商旅集团党委书记董事长梁凌峰表示,2
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网