赞了文章2023-02-15
树的相关名词科普根节点叶子节点父节点子节点兄弟节点高度深度层A 是 根节点。C、D、F、G 是 叶子节点。A 是 B 和 E 的 父节点。B 和 E 是 A 的 子节点。B、E 之间是 兄弟节点。高度、深度、层 如上图所示。为了方便理解记忆,高度就是抬头看,深度就是低头看。与 高...
赞了文章2019-07-02
Up所在的开发团队,由于测试人员(以下简称QA)的资源匮乏,较难保出品质量,穷则思变,近年来Up尝试和实践了前端的各类测试方法,今天写出来与大家分享,讨论
赞了文章2018-10-19
问题描述:Vue检测数据的变动是通过Object.defineProperty实现的,所以无法监听数组的添加操作是可以理解的,因为是在构造函数中就已经为所有属性做了这个检测绑定操作。
发布了文章2018-05-21
上篇文章中,我们主要讲了initLiftcycle方法,它的作用是初始化vm实例中和生命周期相关的属性。今天为大家介绍另一个方法——initEvents。从这个方法的名称来看,我们知道它是和事件相关的方法,具体怎么相关,我们先来看源码。
发布了文章2018-05-05
上篇文章,我们讲到了mergeOptions的部分实现,今天接着前面的部分讲解,来看代码,如果大家觉得看讲解枯燥可以直接翻到本文的最后看mergeOptions的整个流程图。
发布了文章2018-04-26
上一篇文章中说道,resolveConstructorOptions函数要分两种情况进行说明,第一种是Ctor为基础构造器的情况,这个已经向大家介绍过了,今天这篇文章主要介绍第二种情况,Ctor是Vue.extend创建的"子类"。
发布了文章2018-04-25
mergeOptions方法,我们之后的博文再来做详细介绍。今天主要研究resolveConstructorOptions方法,从字面意思来看,这个方法是来解析constructor上的options属性的。我们来看源码。
发布了文章2018-04-19
上篇博文中说到了Vue源码的目录结构是什么样的,每个目录的作用我们应该也有所了解。我们知道core/instance目录主要是用来实例化Vue对象,所以我们在这个目录下面去寻找Vue构造函数。果然我们找到了Vue的构造函数定义。
发布了文章2018-04-19
前段时间在读Vue源码的时候,发现了这样一个API——Window.Performance。当时完全不知道这是什么?在查阅了一些资料后,大致明白了这个API的作用。下面一起来看看什么是Performance。其实光看这个API的名字,我们就能大致猜到这一定是和性能相关的。来看看MDN上关于它...
发布了文章2018-04-11
上图就是关于Vue源码整体目录结构的介绍了,我们熟悉每个模块具体的功能之后,对我们之后继续研究源码是很有帮助的。下次谈论的主题是Vue的构造函数,当new Vue实例的时候,会发生什么呢?生成的Vue实例又有哪些属性和方法呢?我们下篇文章会进行详细的说明。人人都...
赞了文章2018-03-19
Vue 里的 Computed 属性非常频繁的被使用到,但并不是很清楚它的实现原理。比如:计算属性如何与属性建立依赖关系?属性发生变化又如何通知到计算属性重新计算?
发布了文章2017-12-19
fdsfdsfds
赞了文章2017-09-13
上面两张图主要将koa-router的整体代码结构和大概的执行流程画了出来,画的不够具体。那下面主要讲koa-router中的几处的关键代码解读一下。
发布了文章2017-08-24
对于大型web app来说,如果把所有的文件都打包到一个文件中是非常低效的,特别是当一些代码块只在某些特定的条件下被调用。webpack可以让你的代码库分割成不同的块(chucks),仅仅在需要的时候再加载。其他的一些打包工具叫它们图层(layers), 卷(rollups) 或者 片段(...
发布了文章2017-08-22
大家觉得这段代码的输出结果是多少呢?很多小伙伴会觉得结果一定是这样的[{name: 'Chris xiong'}, {name: 'Chris xiong'}, {name: 'Chris xiong'}]这么想的同学请把上面那段代码放进控制台里输出一下。你会发现,结果不是你想象的那样。上述这段代码的执行结果是(3) ...
发布了文章2017-07-30
在写任何一门语言的时候,它们都有好的代码实践和不好的代码实践。这两种代码可能都能编译运行。但是不好的代码可能会在开发,调试和修改中引起一些问题。在工作团队中,无论你的程序运行状况如何,某些人总要阅读并且修改你代码的某些地方。他们可能会添加一些新属...
发布了文章2017-07-29
我们知道,变量对于程序来说是至关重要的,如果没有变量存储和访问值,整个程序会受到限制。那么问题来了,既然程序这么需要变量,那么它到底是怎么样去存储变量和使用变量的呢?存储变量这里暂且不提,到时候会有专门一篇博客来说明这个问题。我们这次说的主要就是...
发布了文章2017-07-26
代码在运行过程中,会有一个叫做调用栈(call stack)的概念。调用栈是一种栈结构,它用来存储计算机程序执行时候其活跃子程序的信息。(比如什么函数正在执行,什么函数正在被这个函数调用等等信息)。调用栈是解析器的一种机制。call stack
发布了文章2017-07-23
最近在开发的一个项目中,有使用番茄钟的需求,另外本人一直是一个番茄工作法的簇拥,所以就决定写一个基于vue 2.x开发的番茄钟组件。灵感来自于另一个组件vue-radial-progress。
发布了文章2017-07-10
前段时间在看一些前端模块化方面的知识,现在自己就来写一个符合amd/cmd 和commonjs标准的模块。在文中会穿插一些AMD/CMD,commonjs的基础知识,主要是为了让自己复习一下。了解的同学们可以直接略过。