美文网首页
Vue造Toast轮子引发的思考💡

Vue造Toast轮子引发的思考💡

作者: 杭州_前端_求内推 | 来源:发表于2020-03-08 20:45 被阅读0次

译者:王二狗
博客:掘金思否知乎简书CSDN
点赞再看,养成习惯,你们的支持是我持续分享的最大动力😘
原文链接:https://www.sitepoint.com/shorthand-javascript-techniques/

最近一直在不停的造Vue轮子,目前已经完成了Button网格布局默认布局Input等轮子。

今天在编写Toast轮子的时候遇到了一个问题,说一说我的思考过程,拿出来和大家分享一下,希望对大家有所帮助。🙌

需求分析

在决定去造一个轮子之前,首先要做的就是需求分析,其中最重要的一步就是你的轮子造出来之后,其他人怎样使用你的轮子。

我希望用到我轮子的用户可以全局去调用我的轮子,就像下面这样:

this.$toast()

遇到问题

那么我如何才能做到让用户使用上述方式去调用我的轮子呢?

我首先想到的方法是直接将我的轮子挂载到Vueprototype

import Vue from 'vue'
Vue.prototype.$toast = function () {
    console.log('this is my toast');
}

这样做可以是可以,但是存在两个潜在的工程问题

工程问题:在我们的工程项目中会实际发生的问题,其特点就是具有不可预测性,这种不可预测性,往往不是你可以通过目前代码的分析而得出的。

问题一:$toast可能以前就已经有了

如果以前就存在了一个$toast,那么按照你上述的处理方式,你就会覆盖掉原有的$toast

针对这个问题,我最初想到的处理方式是提前对$toast进行一个检测

import Vue from 'vue'

if (Vue.prototype.$toast == undefined) {
    Vue.prototype.$toast = function () {
        console.log('i an toast');
    }
}

这种处理方式的问题就在于,如果在这之前$toast真的已经存在了,那你的$toast怎么办?这种处理方式的问题在于侵入性太强了

问题二:很有可能使用你轮子的用户和你的Vue版本不一致

如果使用你轮子的用户所用的Vue版本和你的不一致怎么办?

import Vue from 'vue1'
import Vue from 'vue2'
......

墨菲定律

所谓墨菲定律,说的就是小概率事件必将发生,如果你不相信,那么你就存在侥幸心理,你就在自己骗自己。

所以,我们必须要想出合理的方式解决上面遇到的两个工程问题。

解决方案(Vue插件)

最后通过翻阅 Vue 文档,我发现Vue里面的插件可能很好的解决我所遇到的问题。

创建插件:

export default {
    install(){
        Vue.prototype.$toast = function () {
            console.log('i am toast');
        }
    }
}

引入插件:

import Plugin from './toast/plugin'
Vue.use(Plugin)

使用轮子:

this.$toast()

告诫自己,即使再累也不要忘记学习,成功没有捷径可走,只有一步接着一步走下去。 共勉!

相关文章

  • Vue造Toast轮子引发的思考💡

    译者:王二狗博客:掘金、思否、知乎、简书、CSDN 点赞再看,养成习惯,你们的支持是我持续分享的最大动力?...

  • 写一个 Vue 插件 toast

    本人在造轮子过程中遇到写 toast 组件时为考虑方便用户调用,因此采用插件方式写 toast, 最终用户调用代码...

  • 造轮子-toast组件的实现(下)

    1.解决 toast 中传入 html 的问题,通过假的 slot 来实现 2.在 toast 中加 html 是...

  • 2019-05-31 程序员修仙进阶标准,你到哪个阶段了?

    闭门造轮子 > 使用别人的轮子 > 开门造轮子 > 分享轮子

  • toast vuejs

    components - toast - src - toast.vue components - toast -...

  • 封装toast插件

    toast.vue toast.js **全局调用$toast方法就是触发了绑定在Vue原型上的showToast...

  • 造轮子之仿射变换

    有人说,我们不应该再造轮子;也有人说,学习怎么造轮子可以带来更深的理解。我说,用轮子有用轮子的乐趣,造轮子有造轮子...

  • Vue-造轮子-0

    项目初始化 一.创建readme.md &设置license 二 安装vue 三.初识webstorm —————...

  • vue造轮子-网格系统

    1.什么是网格/栅格系统? 就是把一个div分成N个部分(n=12,16,24...),每个部分无空隙或者有空隙,...

  • 轮子

    不是想造轮子,而是想获得造轮子的能力,以便我需要造的时候造的出来

网友评论

      本文标题:Vue造Toast轮子引发的思考💡

      本文链接:https://www.haomeiwen.com/subject/sxgjdhtx.html