自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 手写Promise

从使用的角度往前推Promise的原理 Promise 是一个类,在执行类的时候,需要传入一个执行器,执行器会立即执行 Promise 中有三种状态 分别为 成功 fulfilled、失败 rejected,等待 pending pending为初始化,可以变成fulfilled 或者 rejected, 状态一旦被改变就不能更改 resolve函数和reject函数用来改变Promise状态 resolve -> fulfilled reject -> rejected then

2021-02-20 15:00:22 125

原创 关于函数式编程应该知道的基础

内容概要 为什么学习函数式编程,以及什么是函数编程 函数式编程的特性(纯函数,柯里化,函数组合) 函数式编程的应用场景 函数式编程库 Lodash 为什么学些函数式编程 随着React 的流行备受关注,Vue3.0也开始拥抱函数式,函数式可以抛弃this,打包过程中更好的利用tree shaking 过滤无用代码,方便测试,方便并行处理,有很多库可以帮助我们进行函数开发 Lodash,underscorce,ramda 什么是函数编程 函数式编程是编程范式之一,常说的还有面向对象和面向过程 面向对象:把

2021-02-18 14:20:27 1308

原创 Vue.js源码分析——模板编译过程

什么是抽象语法树,为什么使用抽象语法树 什么是抽象语法树 抽象语法树简称AST 使用对象的形式描述树形的代码结构 此处的抽象语法树是用来形容树形结构的HTML字符串 为什么使用抽象语法树 模板字符串转换成AST后,可以通过AST对模板进行优化 标记模板中的静态内容,在patch的时候直接跳过静态内容 在patch的过程中静态内容不需要对比和重新渲染 ...

2021-02-08 17:10:00 682 2

原创 解析snabbdom源码,理解virtual dom 实现

谈论Virtual DOM 之前,首先说下什么是DOM, 为什么需要虚拟DOM, 他们之间存在着什么样的关系 什么是DOM 文档对象模型 (DOM) 是HTML和XML文档的编程接口,将文档解析为一个由节点和对象(包含属性和方法的对象)组成的结构集合, 简单的说,DOM就是解析文档,将web页面和脚本或程序语言连接起来。更多内容可以参考MDN中对DOM的定义 为什么需要虚拟DOM DOM主要问题是没有为创建动态UI而优化 以前直接使用 DOM API 比较繁琐,然后有了 jQuery 等库来简化 DOM.

2021-02-04 15:53:40 348 2

原创 Vue.js源码分析——单步调试响应式

同样是Vue.js专栏系列,本文算是自己的查缺补漏,如果有不正确的地方欢迎大家指正,如果觉得在文中有所收获也欢迎大家点上宝贵的???? 写文不易,请多鼓励 参考文章:图解Vue响应式原理 准备代码 这个文章很简单,主要是看下面的代码运行的过程 <script src="../../dist/vue.js"></script> <body> <div id="app"> {{ msg }} </div> <script&

2021-01-29 10:26:56 401

原创 Vue.js源码分析——页面首次渲染

最近在看Vue的响应式原理,记录下自己的总结,方便后续查看。 如果这篇文章能给你一些思考,不要吝啬的帮我点上???? 哦 要是写的有啥错误 ❌ ,也拜托大佬们不吝赐教 Vue初始化 下面是vue的初始化模板 , 这段代码很简单,最后会在页面输出 hello world,下面我们从new Vue 开始来分析下他是如何实现的 <template> <div> {{ message }} </div> </template> <script

2021-01-27 14:38:55 3437 11

原创 git操作命令

git删除远程分支 git push origin --delete [branch_name] git删除本地分支 git branch -d name 在版本历史间切换 git reset --hard [commmit_id] 查看执行过的命令历史 git reflog 撤销工作区文件修改 git checkout --file_name 查看git提交记录 git log --graph 查看过去5次提交记录 git log -5 --pretty --oneline 切换远程仓库 g

2021-12-10 15:57:31 236

原创 Vue前端开发规范

规范的目的是为了提高团队协作,便于功能开发及后期维护,输出高质量的代码 命名规范 普通变量命名规范 命名方法:驼峰命名法 命名规范: 命名必须是跟需求内容相关联的词,比如声明一个变量表示我的学校,那么可以定义为const mySchool = "我的学校" 变量的命名是复数的时候需要加s,比如我想声明一个数组,表示很多人的名字,const names = [] 常量命名规范 命名方法:全部大写 命名规范:使用大写字母和下划线来组合命名,下划线用以分割单词。 const MAX_COUNT .

2021-07-26 16:07:03 417 2

原创 页面渲染基础知识

我们这里所讨论的渲染: 把[数据] + [模板] 拼接到一起 内容概要 传统的服务端渲染 客户端渲染 现代化的服务端渲染(同构渲染SSR) 传统的服务端渲染 早期的wb页面渲染都是在服务端进行的 工作流程 代码 服务端代码 const express = require('express') const fs = require('fs') const template = require('art-template') const app = express() app.get('/', (.

2021-03-08 18:31:53 277

原创 组件之间的通信

前言 本文从大概会包括以下几个内容 常用的组件通讯方式 Vuex的核心概念和基本使用 一个demo理解Vuex 模拟实现Vuex 组件通讯方式 父子传子 子传父亲 不相关组件传值 Vuex核心概念

2021-03-02 20:09:48 233

原创 那些Vue面试常问的原理问题(看一眼不亏)

请简述 Vue 首次渲染的过程。 Vue首次渲染的时候先去调用vm._init()方法,然后去执行两个实例方法vm.$mount,这两个$mount在不同的地方定义,一个作用是将模板编译成render函数,一个是渲染模板 vm.$mount /platforms/web/entry-runtime-with-compiler.js中定义 核心作用是调用了compileToFunctions将模板编译成render函数 vm.$mount 在/platform/web/runtiem/index.j

2021-02-09 16:47:40 322

原创 v-for时为什么要写 key ?

开发vue的朋友也都知道,一定要去写上key 不然通过vue-cli创建的项目会报出警告。也知道key是用来标记当前元素。这篇文章的目的是看一下源码,了解下我们为啥要去写这个key ?

2021-02-01 16:20:08 1185 1

原创 Vue.js源码分析04—— patchVnode和createElm

下面我们来分析下这两个函数,这两个函数我们就不贴源码了,主要讲下大概流程,感兴趣的可以根据地址去看对应源码 patchVnode 他的作用是对比新旧vnode, 也就是执行diff算法找到差异,更新到真实dom。函数定义在core/vdom/patch.js里面 Created with Raphaël 2.2.0开始新节点没有文本新老节点是否都有子节点并且不相等对子节点,把子节点的差异更新到真实dom新节点有子节点,老节点没有子节点先清空老节点dom的文本内容清空,为当前dom节点加入子节点老节点有子节点

2021-02-01 13:39:27 402

原创 Vue.js源码分析03——虚拟DOM

前言 之前写过博文Vue的首次渲染过程,在文章中提到,渲染dom的时候会调用vm.render()函数生成VNode,之后会调用vm._update(vnode, ...)来渲染页面。 这篇文章我们从两个方面入手 vm.render()是如何生成虚拟DOM的 生成了虚拟dom后又进行了什么操作 准备调试虚拟DOM的代码 之前我们准备了首次渲染的调试代码,下面我们new Vue中补充一些参数,去观察Vue是如何进行关于虚拟DOM的操作 <body> <div id="app">&

2021-02-01 11:43:07 153

原创 el-upload自定义参数后上传

el-upload默认自动上传,当我想对参数进行操作的时候就需要通过:http-request覆盖默认的上传行为,可以自定义上传的实现。 明确目标 因为业务的需求,在上传文件的时候我还要传递文件名,和对应调度的子项目id,所以默认的上传方式就不适合我了。 改进方法 话不多说,直接贴代码,再逐一解释 action=""一定要设置,action是必填参数,但是我们设置了:http-request,会覆盖action <el-upload action="" :http-reque.

2021-01-28 15:22:00 631

原创 简单理解Object.defineProperty()方法

理解对象 创建一个对象时,会为对象添加一些属性和方法,这些属性在创建的时候都带有一些特征值,JavaScript通过这些特征值来定义他们的行为 属性类型 ECMA-261定义这些特性是为了实现JavaScrip引擎用的,因此在Js中不能直接访问他们,为了表示特性的内部值,该规范把他们放在两对儿方括号中例如 [[ Enumerable ]] ECMAScript中有两种属性:数据属性和访问属性 数据属性 数据属性包含一个 数据值的位置,在这个位置可以读取和写入值,数据属性有4个描述其行为的特性 [[Conf

2021-01-26 16:47:43 524

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除