前端技术
人人都能懂的Vue源码系列—06—mergeOptions-下
上篇文章,我们讲到了mergeOptions的部分实现,今天接着前面的部分讲解,来看代码,如果大家觉得看讲解枯燥可以直接翻到本文的最后看mergeOptions的整个流程图。
const extendsFrom = child.extends
if (extendsFrom) {
parent = me
...
人人都能懂的Vue源码系列—05—mergeOptions-上
前几篇文章中我们讲到了resolveConstructorOptions,它的主要功能是解析当前实例构造函数上的options,不太明白的同学们可以看本系列的前几篇文章。在解析完其构造函数上的options之后,需要把构造函数上的options和实例化时传入的options进行合并操作并生成一个新的options。
这
...
人人都能懂的Vue源码系列—04—resolveConstructorOptions函数-下
上一篇文章中说道,resolveConstructorOptions函数要分两种情况进行说明,第一种是Ctor为基础构造器的情况,这个已经向大家介绍过了,今天这篇文章主要介绍第二种情况,Ctor是Vue.extend创建的"子类"。
Ctor是Vue.extend创建的"子类"
...
人人都能懂的Vue源码系列—03—resolveConstructorOptions函数-上
上篇文章介绍了Vue构造函数的部分实现,当前Vue实例不是组件时,会执行mergeOptions方法。
vm.$options = mergeOptions(
resolveConstructorOptions(vm.constructor),
options || {},
vm
)
merge
...
人人都能懂的Vue源码系列—02—Vue构造函数
上篇博文中说到了Vue源码的目录结构是什么样的,每个目录的作用我们应该也有所了解。我们知道core/instance目录主要是用来实例化Vue对象,所以我们在这个目录下面去寻找Vue构造函数。果然我们找到了Vue的构造函数定义。
function Vue (options) {
if (process.env.N
...
初探Performance API
前段时间在读Vue源码的时候,发现了这样一个API——Window.Performance。当时完全不知道这是什么?在查阅了一些资料后,大致明白了这个API的作用。下面一起来看看什么是Performance。
其实光看这个API的名字,我们就能大致猜到这一定是和性能相关的。来看看MDN上关于它的介绍。
The Per
...
人人都能懂的Vue源码系列(一)—Vue源码目录结构
阅读Vue的源码,或者阅读一个框架的源码,了解它的目录结构都是很有帮助的。下面我们来看看Vue源码的目录结构。
Vue各目录简介
Vue源码各个目录的详细介绍
熟悉每个模块具体的功能,对之后深入研究源码还是很有帮助的。
下次我们谈论的主题是Vue的构造函数,当new Vue实例的时候,会发生什么呢?生成的Vue实例
...
浅析javascript调用栈
大家在进行javascript开发的时候,有没有想过,我们写的代码是怎么样运行的呢?下面我们就来剖析一下代码的执行过程。
一 什么是调用栈
代码在运行过程中,会有一个叫做调用栈(call stack)的概念。调用栈是一种栈结构,它用来存储计算机程序执行时候其活跃子程序的信息。(比如什么函数正在执行,什么函数正在被这个函
...
初探模块系统02—如何让模块支持AMD/CMD和commonjs标准
前段时间在看一些前端模块化方面的知识,现在自己就来写一个符合amd/cmd 和commonjs标准的模块。在文中会穿插一些AMD/CMD,commonjs的基础知识,主要是为了让自己复习一下。了解的同学们可以直接略过。
一 原模块
该模块是一个实现类数组转为数组功能的模块
(function(arrayLike){
...
浅淡 javascript 作用域的有序性
一 为什么要有作用域
我们知道,变量对于程序来说是至关重要的,如果没有变量存储和访问值,整个程序会受到限制。那么问题来了,既然程序这么需要变量,那么它到底是怎么样去存储变量和使用变量的呢?存储变量这里暂且不提,到时候会有专门一篇博客来说明这个问题。我们这次说的主要就是如何去使用变量。这就要牵扯到我们今天的主题作用域上面
...