摘要:
之前给element ui提了一个问题,结果没有鸟我,没办法,只能修改源码来满足需求了 (备注:element ui2依然没有修改,为了迎合产品还是要改源码) 本文讨论的组件属性仅限于 现在的问题是这样的: element ui中有一个upload组件,可以上传图片或文件。该组件有很丰富的钩 阅读全文
摘要:
可以骂人吗???辛辛苦苦写了2个多小时搞到凌晨2点,点击保存草稿退回到了登录页面???登录成功草稿没了???喵喵喵???智障!!气! 很厉害,隔了30分钟,我的登录又失效了,草稿再次回滚,不客气了,***! 仔细想想,自动保存功能也挺可疑的,根据我半年的资深前端经验判断,内部实现大概是这样: 如此智 阅读全文
摘要:
面试题经常会问到LinkedList与ArrayList的区别,与其背网上的废话,不如直接撸源码! 文章源码来源于JRE1.8,java.util.ArrayList 既然是浅析,就主要针对该数据结构的内部实现原理和部分主要方法做解释,至于I/O以及高级特性就暂时略过。 变量/常量 首先来看定义的( 阅读全文
摘要:
写完这个就差不多了,准备干新项目了。 确实挺不擅长写东西,感觉都是罗列代码写点注释的感觉,这篇就简单阐述一下数据变动时DOM是如何更新的,主要讲解下其中的diff算法。 先来个正常的html模板: 页面上有一个通过v-for渲染的div,还有一个按钮,点击按钮时会让div数量+1。 首先需要提到的是 阅读全文
摘要:
写起来感觉都是老三套,AST => render => VNode => patch 之前是把AST弄完了,对事件和过滤器处理如图: render函数也只看这两部分的转换吧! 首先是el.events,该属性在genData中被处理,这个在之前讲过了!不过,前面没有modifiers,所以,这里可以 阅读全文
摘要:
我是这样计划的,写完这个还写一篇数据变动时,VNode是如何更新的,顺便初探一下diff算法。 至于vue-router、vuex等插件源码,容我缓一波好吧,vue看的有点伤。 其实在之前讲其余内置指令有涉及到on事件绑定,这里再详细从头看一下事件绑定的正统流程吧! 上html代码: 包含最常见的c 阅读全文
摘要:
其实吧,写这些后记我才真正了解到vue源码的精髓,之前的跑源码跟闹着玩一样。 go! 之前将AST转换成了render函数,跳出来后,由于仍是字符串,所以调用了makeFunction将其转换成了真正的函数: 这个没啥讲的 将render转换成VNode其实也没什么讲的,重点看一下之前没见过的函数, 阅读全文
摘要:
…… 指令这个讲起来还有点复杂,先把html弄上来: 上一节是解析完了input标签的2个属性,并将其打包进了directives属性中返回。 接着会继续跑genData函数,如下: 由于在处理v-model的时候给el添加了props与events属性,所以之后会跑进两个处理函数。 首先看看gen 阅读全文
摘要:
把其余的内置指令也搞完吧,来一个全家桶。 案例如下: 基本上内置指令都有,由于v-on涉及事件,也就是methods,这个后面再说,这里暂时只处理指令。另外添加了一个纯净的节点,可以跑一下ref和optimize。 跳过前面所有无聊的流程,直接进入parseHTML,切割方面也没什么看头,最外层di 阅读全文
摘要:
这一节肯定能完! 经过DOM字符串的AST转化,再通过render变成vnode,最后就剩下patch到页面上了。 render函数跑完应该是在这里: vm._render()会生成一个vnode看,接下来调用_update渲染页面,如下: 由于是初始化页面,所有在update的过程中,oldVNo 阅读全文