- 博客(16)
- 收藏
- 关注
原创 手写Promise
从使用的角度往前推Promise的原理Promise 是一个类,在执行类的时候,需要传入一个执行器,执行器会立即执行Promise 中有三种状态 分别为 成功 fulfilled、失败 rejected,等待 pendingpending为初始化,可以变成fulfilled 或者 rejected,状态一旦被改变就不能更改resolve函数和reject函数用来改变Promise状态resolve -> fulfilledreject -> rejectedthen
2021-02-20 15:00:22 110
原创 关于函数式编程应该知道的基础
内容概要为什么学习函数式编程,以及什么是函数编程函数式编程的特性(纯函数,柯里化,函数组合)函数式编程的应用场景函数式编程库 Lodash为什么学些函数式编程随着React 的流行备受关注,Vue3.0也开始拥抱函数式,函数式可以抛弃this,打包过程中更好的利用tree shaking 过滤无用代码,方便测试,方便并行处理,有很多库可以帮助我们进行函数开发 Lodash,underscorce,ramda什么是函数编程函数式编程是编程范式之一,常说的还有面向对象和面向过程面向对象:把
2021-02-18 14:20:27 1280
原创 Vue.js源码分析——模板编译过程
什么是抽象语法树,为什么使用抽象语法树什么是抽象语法树抽象语法树简称AST使用对象的形式描述树形的代码结构此处的抽象语法树是用来形容树形结构的HTML字符串为什么使用抽象语法树模板字符串转换成AST后,可以通过AST对模板进行优化标记模板中的静态内容,在patch的时候直接跳过静态内容在patch的过程中静态内容不需要对比和重新渲染...
2021-02-08 17:10:00 644 2
原创 解析snabbdom源码,理解virtual dom 实现
谈论Virtual DOM 之前,首先说下什么是DOM, 为什么需要虚拟DOM, 他们之间存在着什么样的关系什么是DOM文档对象模型 (DOM) 是HTML和XML文档的编程接口,将文档解析为一个由节点和对象(包含属性和方法的对象)组成的结构集合, 简单的说,DOM就是解析文档,将web页面和脚本或程序语言连接起来。更多内容可以参考MDN中对DOM的定义为什么需要虚拟DOMDOM主要问题是没有为创建动态UI而优化以前直接使用 DOM API 比较繁琐,然后有了 jQuery 等库来简化 DOM.
2021-02-04 15:53:40 311 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 368
原创 Vue.js源码分析——页面首次渲染
最近在看Vue的响应式原理,记录下自己的总结,方便后续查看。如果这篇文章能给你一些思考,不要吝啬的帮我点上???? 哦要是写的有啥错误 ❌ ,也拜托大佬们不吝赐教Vue初始化下面是vue的初始化模板 , 这段代码很简单,最后会在页面输出 hello world,下面我们从new Vue 开始来分析下他是如何实现的<template> <div> {{ message }} </div></template><script
2021-01-27 14:38:55 3396 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 219
原创 Vue前端开发规范
规范的目的是为了提高团队协作,便于功能开发及后期维护,输出高质量的代码命名规范普通变量命名规范命名方法:驼峰命名法命名规范:命名必须是跟需求内容相关联的词,比如声明一个变量表示我的学校,那么可以定义为const mySchool = "我的学校"变量的命名是复数的时候需要加s,比如我想声明一个数组,表示很多人的名字,const names = []常量命名规范命名方法:全部大写命名规范:使用大写字母和下划线来组合命名,下划线用以分割单词。const MAX_COUNT .
2021-07-26 16:07:03 387 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 246
原创 组件之间的通信
前言本文从大概会包括以下几个内容常用的组件通讯方式Vuex的核心概念和基本使用一个demo理解Vuex模拟实现Vuex组件通讯方式父子传子子传父亲不相关组件传值Vuex核心概念
2021-03-02 20:09:48 210
原创 那些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 292
原创 v-for时为什么要写 key ?
开发vue的朋友也都知道,一定要去写上key 不然通过vue-cli创建的项目会报出警告。也知道key是用来标记当前元素。这篇文章的目的是看一下源码,了解下我们为啥要去写这个key ?
2021-02-01 16:20:08 1165 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 379
原创 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 132
原创 el-upload自定义参数后上传
el-upload默认自动上传,当我想对参数进行操作的时候就需要通过:http-request覆盖默认的上传行为,可以自定义上传的实现。明确目标因为业务的需求,在上传文件的时候我还要传递文件名,和对应调度的子项目id,所以默认的上传方式就不适合我了。改进方法话不多说,直接贴代码,再逐一解释action=""一定要设置,action是必填参数,但是我们设置了:http-request,会覆盖action <el-upload action="" :http-reque.
2021-01-28 15:22:00 594
原创 简单理解Object.defineProperty()方法
理解对象创建一个对象时,会为对象添加一些属性和方法,这些属性在创建的时候都带有一些特征值,JavaScript通过这些特征值来定义他们的行为属性类型ECMA-261定义这些特性是为了实现JavaScrip引擎用的,因此在Js中不能直接访问他们,为了表示特性的内部值,该规范把他们放在两对儿方括号中例如 [[ Enumerable ]]ECMAScript中有两种属性:数据属性和访问属性数据属性数据属性包含一个 数据值的位置,在这个位置可以读取和写入值,数据属性有4个描述其行为的特性[[Conf
2021-01-26 16:47:43 514
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人