mui如何引入jquery_优秀前端源码解读技巧:以jQuery和Vue源码为例

9db75ef0a367e8a7ebc5f579131acda4.png 作者丨芝士 来源丨芝士来了 相信很多人都试图去看过源码,绝大多数是看不下去,没有及时获得正向反馈是一个原因,或者说毫无章法的读源码使你并不清楚自己错过了什么? 最直接的一点,你能够看到很多优秀的写法,其次,从整体性上,你能够摸清架构,了解本质。 这篇文章将会通过对jQuery和Vue的源码解读,清晰的告诉你阅读源码能够带给你的益处。 01 细节上,学习优秀的写法 以jQuery中的extends方法为例,对于extends方法有如下需求:
  • 传入一个参数时,把该参数对象合并入jQuery实例,如$.extends({a:2}),会把该对象并入jQuery
  • 传入两个参数时,则会合并两个参数,并返回,如$.extends({a:2},{b:3})会返回一个对象{a:2,b:3}.
这里先不谈深浅拷贝,面对这两个需求很多人会直接判断参数数量,然后做对应处理,像下面这样: 6433fc91f4ca612798a6853f7b6c4484.png 这样确实能实现效果,但是我们要写两段相同的拷贝代码,写了两段极其相似的for in循环,有代码的赘余。而且如果要引入深拷贝,那么得修改if部分和else部分两个部分。 我们来看看jQuery里是怎么处理的。 我进行了一些代码简化,主要是把思想表达清楚: 21f99d5d7560848ac762d9d57423e808.png 这里其实是一个享元模式,即把私有的方法,数据做为一个可变的享元。 对于jq而言,target是复制目标时私有的,而复制操作的操作是公共的,把可变的target独立出来。而留下一个公共的拷贝操作,这样有效的减少了重复代码,而且如果要加入深拷贝,就不用去改两部分了。 这个技巧,还可以用到很多地方,工作中有一些if-else判断里面的内容,进行的操作有很多重复。通过这么一小段,我们就知道如何去优化这样的代码了。 看源码其实也是在和这背后的人对话,从对方的处理技巧中,能够得到很多启发。 02 整体上,看懂事情的本质 以Vue为例子,在npm run dev之后,Vue都做了哪些工作呢? 看下面的代码: dda9e9349d39c64975a150bdbdf8a097.png 其实很简单,Vue类里面其实就是调用了一个_init方法,这一段代码调用了五个方法,并传入了Vue类。
  • initMixin,它的作用是给vue的原型链里加入Vue类里调用的_init方法
35d074a4c4d844026b7cd13f639fb320.png  
  • stateMixin也和前面的initMixin类似,其实就是往Vue的原型里注入了$data,$props属性,以及$set、$delete 以及 $watch方法。
  • eventMixin就是往vue原型链里注入了事件的监听与触发,即我们常用的$emit,$on。
  • lifecycleMixin,就是注入了一些生命周期函数。
  • renderMixin就和后面的具体编译有关。
这里只对我们npm run dev之后Vue做的工作做一个简单描述,相信看懂的人,会有种瞬间觉得心里透亮的感觉,从懵懵懂懂会用,到了解大概工作内容,有种擦干净一层玻璃的感觉。 再去审视自己的npm run dev有没有觉得不一样了呢?这里只是讲解一些开头,如果你深入其中,你会更加的透彻。 03 让自己学会看源码 以上两个小例子,不管你是去细抠还是通读,阅读源码源码都有可以学到的东西。 对于工作两三年左右的人来说,也是提升自己很好的方式。 1. 一些优秀框架的源码,其中的写法,思路,运用到的设计模式都是对于我们有借鉴意义的。 2. 从使用到理解,会用一个框架容易,但只有当你深入到这个框架的源码,你才是真正的透彻了这个框架。更何况现在面试的时候都爱问源码。

12292f6ef70d13cb3d01031d6730e891.png

近期精彩内容推荐:  

038777750e38e7e2651271b0d05cf74b.png 知乎高赞:高考700分和700万怎么选?

038777750e38e7e2651271b0d05cf74b.png Python这五个坑,怎么避开?

038777750e38e7e2651271b0d05cf74b.png 贼好用的Java工具类库,GitHub星标10k+

038777750e38e7e2651271b0d05cf74b.png “新冠牌”啤酒真倒霉:60天赔了20个亿

34b0ac0bb96872b83a432f722be45f5c.png

dadb504fc4a606883a83a75b89e6253e.png

在看点这里558fc4b935f2d880ea48d764e79c890d.gif好文分享给更多人↓↓

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值