E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
vue源码
Vue源码
探秘之 虚拟DOM和diff算法
Vue源码
探秘之虚拟DOM和diff算法请扪心自问:你到底懂不懂虚拟DOM和diff算法??
BenSimons_25
·
2022-02-08 10:25
Vue源码探秘
vue.js
javascript
typescript
vue源码
学习 深入patch diff双端对比算法
什么时候调用patch在beforeMount和mounted之间,会执行options.render函数生成新的VNode树。然后调用vm._update(新VNode)更新,然后进入到patch阶段。//src/core/instance/lifecycle.jsexportfunctionmountComponent(vm:Component,el:?Element,hydrating?:b
一袋米要扛几楼_
·
2022-02-08 10:11
vue2.0
vue
web前端
vue源码
vue
前端
Vue源码
解析系列——diff算法篇:diff算法(一)
回顾如果有感兴趣的同学可以看看我之前的源码分析文章,这里呈上链接:《
Vue源码
分析系列:目录》写在前面有了前面数据驱动、组件化、响应式原理篇的知识储备,(没看过的同学可以戳这:《
Vue源码
分析系列》)这时我们就有足够的的理论去支持我们研究
爱学习的前端小黄
·
2022-02-08 10:39
vue
源码
《
Vue源码
解读》深入浅出Vue的Diff算法(一)
各位小伙伴新年好啊~新的一年又要开始了,继续努力加油…~求关注,求收藏,求点赞,如果发现博主有写的不合理的地方请及时告知,谢谢~前言最近在看Vue2.6.14版本的源码,本系列博文主要以记录个人源码学习相关心得,希望我个人的学习心得能对正在学习的你有一点点帮助;本文主要记录了关于Diff算法相关的学习,明白了Diff算法大致的运行逻辑以及Virtual-DOM的来龙去脉;注意的是本文不涉及Diff
Oliver尹
·
2022-02-08 09:31
深入浅出Vue源码
vue.js
算法
前端
Diff
Diff算法
Vue源码
解析篇 (二)keep-alive源码解析
keep-alive是Vue.js的一个内置组件。它能够不活动的组件实例保存在内存中,我们来探究一下它的源码实现。首先回顾下使用方法举个栗子请点击exportdefault{data(){return{isShow:true}},methods:{handleClick(){this.isShow=!this.isShow;}}}在点击按钮时,两个组件会发生切换,但是这时候这两个组件的状态会被缓存
zhongmeizhi
·
2022-02-06 17:36
Vue之虚拟DOM和diff算法
首先介绍一下snabbdom,snabbdom是著名的虚拟DOM库,是diff算法的鼻祖,
Vue源码
借鉴了snabbdom。
团子哒哒
·
2022-02-03 03:16
vue源码
分析(3)
记录之...数据绑定:一旦data中的某个属性数据更新,所有界面上直接使用或者间接使用此属性的节点就都会更新。数据劫持:是vue中用来实现是数据绑定的一种技术基本思想:通过defineProperty()来监视data中所有属性(任意层次)数据的变化,一旦变化就去更新界面。observer:劫持监听所有属性。dep:实例:在初始化给data的属性进行数据劫持时创建的。个数:与data中的属性一一对
June_Done
·
2022-02-02 23:07
九、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信IM,支持各类消息收发,音视频通话,附
vue源码
-聊天会话管理的实现
聊天会话管理的实现1.加载会话列表在插件底层已经做好了会话缓存的处理,我们只需要根据腾讯提供的api加载即可,具体的定义如下:具体调用的代码如下,这里我们需要注意nextSeq这个参数,是由插件提供反馈的,因此我们每次执行getConversationList之后需要在callback中记录最新的nextSeqexportdefault{data(){return{nextSeq:0,conver
·
2022-01-16 14:39
八、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信IM,各类消息收发,音视频通话,附
vue源码
-聊天输入框扩展面板的实现
文章概述本次的文章主要是对于前面的聊天输入框的一个补充,对于有多种要求的开发者而言,可以借鉴本文实现高度定制化的扩展面板聊天输入框扩展面板的实现1.为何要扩展面板对于聊天输入而言,我们不可能把所有的业务都搬到一个输入框内,也不可能把所有的操作都搬到输入框内,因此我们很有必要去实现一个扩展面板,并且提供一个简单易用的操作逻辑,比如下图。2.内置的表情面板在demo中,由于聊天输入框的需要,我们内置了
·
2022-01-15 23:42
vue源码
学习中的阻碍知识
vue思维导图.pngObject.keys()延申:Object.keys().map()一道面试题应用考察27题传送门:https://www.jianshu.com/p/d35a406acdc6一、语法:参数:对象返回值:对象可枚举属性的字符串数组二、应用处理对象,返回可枚举的属性数组image.png处理数组,返回索引值数组letarr=[1,2,3,4,5]image.png处理字符串,
拾钱运
·
2022-01-15 15:00
七、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信IM,支持各类消息收发,音视频通话,附
vue源码
-聊天消息项的实现
文章概述整个IM项目的关键点来了,本文将讨论一下聊天消息的实现,如何收发消息并且实现聊天消息的UI显示。聊天消息项的实现1.收发聊天消息1.1接收聊天消息接收聊天消息显得很简单,在之前的会话列表实现中已经做过一次,这次我们代码其实差不多,唯一不一样的是接受后我们需要做筛选确定需要回显到聊天消息界面的项目。绑定消息事件部分的代码如下://这里选择在onLoad绑定,确定不会漏接数据asynconLo
·
2022-01-12 23:53
[Vue] 关于v-for批量渲染绑定事件事件代理
首先
vue源码
没有做事件代理vue论坛开发者回复:https://forum.vuejs.org/t/is-...实例证明:https://blog.csdn.net/supming...那事件代理主要有什么作用
·
2022-01-12 15:46
前端vue.js事件代理
六、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信IM,支持各类消息收发,音视频通话,附
vue源码
-聊天界面容器的实现
文章概述上一次我们讨论过聊天输入框的实现,实现文本,语音,标签的编辑发送,而本次我们的关注点将回归到整个聊天界面容器的实现。聊天界面容器的实现1.为什么要实现一个聊天界面容器一般情况下,开发者会采用直接在对应的界面中实现聊天界面UI的方式做开发。这种开发思路无可厚非,但是如果我们要实现跨平台的聊天IM,那么我们不免要遇到组件之间的事件冲突,多平台表现差距的问题,特别是在聊天中我们还需要实现滚动加载
·
2022-01-10 23:26
四、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信IM:支持各类消息收发,音视频通话,附开源
vue源码
-会话好友列表的实现
文章概述这已经是第四篇了,昨天我们代码总算开了个头,今天我们来开始慢慢实现IM中需要的各个模块,今天我们来实现会话好友列表的显示,话不多说,直接开撸。会话好友列表的实现1.监听回调事件在开发中,我们可以通过监听回调事件的方式被动获取会话变更,以及通过api主动获取会话缓存数据,主动获取的是sdk底层缓存的会话列表数据,而回调的则是最新的,一般而言回调的时效性高于api。主动获取会话列表:getCo
·
2022-01-08 16:52
「
Vue源码
学习」你想知道Vuex的实现原理吗?
大家好我是林三心,Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。什么情况下我应该使用Vuex?Vuex可以帮助我们管理共享状态,并附带了更多的概念和框架。这需要对短期和长期效益进行权衡。如果您不打算开发大型单页应用,使用Vuex可能是繁琐冗余的。确实是如此——如果您的应用够简单,您最好不要使用V
·
2021-12-24 09:53
「
Vue源码
学习」你真的知道插槽Slot是怎么“插”的吗
大家好我是林三心,Vue实现了一套内容分发的API,将元素作为承载分发内容的出口,这是Vue文档上的说明。具体来说,slot就是可以让你在组件内添加内容的‘空间’,你真的知道插槽Slot是怎么“插”的吗?我希望你们能像我一样单纯,老老实实地看这篇文章。Vue插槽slot的基本使用单个插槽|匿名插槽//子组件:(假设名为:child)//父组件:(引用子组件child)林三心我们知道,如果直接在父组
·
2021-12-22 10:42
前端vue.js源码面试es6
「
Vue源码
学习」简单讲一讲keep-alive的原理吧
回想起来,我一开始写作的时候就是写
Vue源码
系列的,都收录在我的掘金专栏
Vue源码
解析之中:「
Vue源码
学习(一)」你不知道的-数据响应式原理
Vue源码
学习(二)」你不知道的-模板编译原理「
Vue源码
学习
·
2021-12-21 10:13
vue.js源码面试
vue源码
-vuex源码解析-造轮子
vuex使用方法:根据vuex使用方法分析:1、vuex使用是一个插件。2、需要实现vuex构造函数Store类。实现方式如下:(1)state状态管理器的实现:把用户的传递过来的state放在data里,实现响应式数据。由于state不能让用户随意访问,所以需要对state加上一层封装,变成$$state:oprions.state。然后实现state的get和set方法:(2)mutation
仰寒天
·
2021-12-09 20:04
Vue源码
理解(一)
Vue源码
主要关注了数据驱动,组件化,响应式几个部分。对于源码个人感觉不用太纠结或着急着去看,打好基础使用熟练熟悉之后,再去进一了解会有很大的帮助。
·
2021-12-02 09:32
vue.js前端
Vue都使用那么久了,还不了解它的生命周期吗
前言我记得尤大曾经说过,你看
Vue源码
干嘛?你使用Vue又不需要它的源码,你只需要会用就行了!
CRMEB
·
2021-11-25 09:40
CRMEB
学习笔记
前端
node.js
javascript
Vue都使用那么久了,还不了解它的生命周期吗
前言我记得尤大曾经说过,你看
Vue源码
干嘛?你使用Vue又不需要它的源码,你只需要会用就行了!
·
2021-11-24 12:37
vue.js
如何查看Vue最初版本 - v1.0.0
拷贝
Vue源码
:gitclonehttps://github.com/vuejs/vue.git查看版本历史记录(倒序):gitlog--reverse回退版本:gitreset--harda879ec06ef9504db8df2a19aac0d07609fe36131
·
2021-11-07 17:54
vue.js
Vue很容易问到的面试题~
故事续集大佬:有看过
Vue源码
么?我:嗯嗯,看过。大佬:那大概讲一讲nextTick的底层实
前端践行者-Mr鹏帅
·
2021-11-06 19:43
vue板块
vue.js
前端
javascript
vue源码
之批量异步更新策略的深入解析
vue异步更新源码中会有涉及事件循环、宏任务、微任务的概念,所以先了解一下这几个概念。一、事件循环、宏任务、微任务1.事件循环EventLoop:浏览器为了协调事件处理、脚本执行、网络请求和渲染等任务而定制的工作机制。2.宏任务Task:代表一个个离散的、独立的工作单位。浏览器完成一个宏任务,在下一个宏任务开始执行之前,会对页面重新渲染。主要包括创建文档对象、解析HTML、执行主线JS代码以及各种
·
2021-10-25 18:17
vue源码
(1.初始化过程_init)
1.在init阶段inject是比provide更早,比initState(initProps、initMethods、initComputed、initWatch)都要早,因为vue的组件层级创建父组件created后再去创建子组件,一层一层向下创建的模式,那么inject如果有在上级组件定义provide,那么都会拿得到,而methods、computed、watch也有可能会用到inject
奇怪的双子座
·
2021-10-23 00:35
Vue源码
解读(四):更新策略
之前介绍过初始化时Vue对数据的响应式处理是利用了Object.defifineProperty(),通过定义对象属性getter方法拦截对象属性的访问,进行依赖的收集,依赖收集的作用就是在数据变更的时候能通知到相关依赖进行更新。通知更新setter当响应式数据发生变更时,会触发拦截的setter函数,先来看看setter://src/core/observer/index.jsexportfun
明么
·
2021-09-28 09:21
Vue源码
解读(五):render和VNode
Vue2.0相比Vue1.0最大的升级就是利用了虚拟DOM。在Vue1.0中视图的更新是纯响应式的。在进行响应式初始化的时候,一个响应式数据key会创建一个对应的dep,这个key在模板中被引用几次就会创建几个watcher。也就是一个key对应一个dep,dep内管理一个或者多个watcher。由于watcher和DOM是一对一的关系,更新时,可以明确的对某个DOM进行更新,更新效率还是很高的。
明么
·
2021-09-28 09:14
Vue源码
解读(六):update和patch
Vue的_update是实例上的一个私有方法,主要的作用就是把VNode渲染成真实的DOM,它在首次渲染和数据更新的时候被调用。在数据更新的时候会发生新VNode和旧VNode对比,获取差异更新视图,我们常说的diff就是发生在此过程中。_update//src/core/instance/lifecycle.jsVue.prototype._update=function(vnode:VNode
明么
·
2021-09-28 09:08
Vue源码
解读(七):模板编译
在最开始的章节提到过,我们在使用vue-cli创建项目的时候,提供了两个版本供我们使用,RuntimeOnly版本和Runtime+Compiler版本。RuntimeOnly版本是不包含编译器的,在项目打包的时候会把模板编译成render函数,也叫预编译。Runtime+Compiler版本包含编译器,可以把编译过程放在运行时做。入口这一块代码量比较多,主要是对各种情况做了一些边界处理。这里只关
明么
·
2021-09-28 09:59
Vue源码
解读(四):更新策略
之前介绍过初始化时Vue对数据的响应式处理是利用了Object.defifineProperty(),通过定义对象属性getter方法拦截对象属性的访问,进行依赖的收集,依赖收集的作用就是在数据变更的时候能通知到相关依赖进行更新。通知更新setter当响应式数据发生变更时,会触发拦截的setter函数,先来看看setter://src/core/observer/index.jsexport fu
·
2021-09-15 10:29
Vue源码
解读(三):响应式原理
Vue一大特点就是数据响应式,数据的变化会作用于视图而不用进行DOM操作。原理上来讲,是利用了Object.defifineProperty(),通过定义对象属性setter方法拦截对象属性的变更,从而将属性值的变化转换为视图的变化。在Vue初始化时,会调用initState,它会初始化props,methods,data,`computed,watch`等.响应式对象initState//src
·
2021-09-14 09:00
Vue(v2.6.14)源码解毒(一):准备工作
最近在掘金上看到李永宁大佬的《
Vue源码
解读》系列文章后,又开始蠢蠢欲动了。这次主要是对核心实现的一个梳理,细节方面不会太过介绍。源码地址本次学习的
Vue源码
为2
·
2021-09-08 11:39
大概几集下饭剧时间就能懂的VUE3原理
最近中午没胃口,找来
VUE源码
相关视频来当下饭剧。几顿饭下去,人胖了,VUE也整明白了。这篇文章为你带来一份VUE3原理速成指南。
·
2021-09-01 10:34
Vue源码
解读四:AST抽象语法树
本篇内容是在模板引擎的基础上,结合虚拟DOM进行的讨论,基于三者之间的关系,总结出下图示意:graphTDA[模板语法]-->|解析|B(抽象语法树AST)B-->|调用|C[渲染函数即h函数]C-->|生成|D[虚拟节点diff/patch]D-->|更新|E(界面)1.抽象语法树(AST)是什么?抽象语法树,AbstractSyntaxTree(简称:AST)本质上就是一个js对象。模板语法先
·
2021-08-30 19:00
Vue源码
解读二:虚拟DOM与Diff算法
什么是虚拟DOM?virtualDOM,用普通js对象来描述DOM结构,因为不是真实DOM,所以称之为虚拟DOM。虚拟DOM在Vue中的应用Vue的编译器在编译模板之后,会把这些模板编译成一个渲染函数。而函数被调用的时候就会渲染并且返回一个虚拟DOM的树。Vue的VirtualDOMPatching算法是基于Snabbdom的实现。当我们有了这个虚拟的树之后,再交给一个Patch函数,负责把这些虚
·
2021-08-27 19:11
Vue源码
解读一:模板引擎
什么是模板引擎?模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的文档,就是将模板文件和数据通过模板引擎生成一个HTML代码。本篇内容需要的js常量及dom结构vararr=[{name:'小明',age:23},{name:'小红',age:25},{name:'小强',age:27}]模板引擎的发展纯dom法-创建节点法var
·
2021-08-26 16:31
Vue源码
解析(入口解析)
Vue入口文件查找查看dist/vue.js的构建过程当运行npmrundev时指定了配置文件,从配置文件script/config.js入手web-full-dev(web包含编译器和运行时的开发版)script/config.js基于node的模块"dev":"rollup-w-cscripts/config.js-m--environmentTARGET:web-full-dev"配置文件c
·
2021-08-25 13:04
vue.js
Vue源码
模板编译解析
vue源码
模板编译模板编译的主要目的是将模板(template)转换为渲染函数(render)模板编译作用Vue2.x使用VNode描述视图以及各种交互,用户自己编写VNode比较复杂用户只需要编写类似
·
2021-08-25 13:28
vue.js
Vue源码
虚拟 Dom解析
什么是虚拟DOMVirtualDOM是使用JS对象描述真实DOM(普通的JS对象,描述DOM结构)Vue中的虚拟Dom借鉴Snabbdom,并添加了Vue.js的特性。(借鉴模块机制,钩子函数,diff算法等,添加例如指令,组件机制新特性)为什么要使用虚拟DOM避免直接操作DOM,提高开发效率(只关注业务代码实现,不需要关注dom浏览器兼容性问题)作为一个中间层可以跨平台(WebWeex移动端平台
·
2021-08-25 13:27
vue.js
Vue源码
中对Watcher执行的分析
触发更新时watcher的执行watcher分为三种,ComputedWatcher,用户Watcher侦听器,渲染Watcher前两种initState时初始化渲染watcher在core/instance/lifecycle.js中mountComponent,后执行当调用dep.notify时,会对watcher排序,然后依次更新watcher.update对于不同类型watcher,upd
·
2021-08-25 13:56
vue.js
[
vue源码
06] - Vue.nextTick 和 VM.$nextTick
导航[[深入01]执行上下文](https://juejin.im/post/684490...)[[深入02]原型链](https://juejin.im/post/684490...)[[深入03]继承](https://juejin.im/post/684490...)[[深入04]事件循环](https://juejin.im/post/684490...)[[深入05]柯里化偏函数函数记
·
2021-08-23 23:38
[
vue源码
05] - Vue.extend
导航[[深入01]执行上下文](https://juejin.im/post/684490...)[[深入02]原型链](https://juejin.im/post/684490...)[[深入03]继承](https://juejin.im/post/684490...)[[深入04]事件循环](https://juejin.im/post/684490...)[[深入05]柯里化偏函数函数记
·
2021-08-23 23:07
[
vue源码
04] Vue.set 和 vm.$set ( Vue.delete 和 Vm.$delete )
导航[[深入01]执行上下文](https://juejin.im/post/684490...)[[深入02]原型链](https://juejin.im/post/684490...)[[深入03]继承](https://juejin.im/post/684490...)[[深入04]事件循环](https://juejin.im/post/684490...)[[深入05]柯里化偏函数函数记
·
2021-08-23 23:07
[
vue源码
02] computed 响应式 - 初始化,访问,更新过程
导航[[深入01]执行上下文](https://juejin.im/post/684490...)[[深入02]原型链](https://juejin.im/post/684490...)[[深入03]继承](https://juejin.im/post/684490...)[[深入04]事件循环](https://juejin.im/post/684490...)[[深入05]柯里化偏函数函数记
·
2021-08-22 00:42
[
vue源码
03] watch 侦听属性 - 初始化和更新
导航[[深入01]执行上下文](https://juejin.im/post/684490...)[[深入02]原型链](https://juejin.im/post/684490...)[[深入03]继承](https://juejin.im/post/684490...)[[深入04]事件循环](https://juejin.im/post/684490...)[[深入05]柯里化偏函数函数记
·
2021-08-22 00:42
[
vue源码
01] data响应式 和 初始化渲染
导航[[深入01]执行上下文](https://juejin.im/post/684490...)[[深入02]原型链](https://juejin.im/post/684490...)[[深入03]继承](https://juejin.im/post/684490...)[[深入04]事件循环](https://juejin.im/post/684490...)[[深入05]柯里化偏函数函数记
·
2021-08-22 00:10
javascript前端
Vue源码
解析(二)
二、响应式原理initState(vm)1.inState响应式入口initState在import{initState}from'./state'同级目录下找到state.jsexportfunctioninitState(vm:Component){vm._watchers=[]constopts=vm.$options//处理props对象为每一个props对象上面设置响应式,并将其代理到v
·
2021-08-02 15:59
vue.js
Vue 响应式原理解析
这个专题自然是分多个部分讲解
Vue源码
,第一篇就先讲最最经典的Vue响应式原理吧!在正式讲原理之前,我觉得应该首先讲明白下面几个概念吧。DepvarDep
·
2021-07-27 18:58
Vue源码
解析:Vue是如何设计的?
组成与设计.png项目文件结构在Vue项目中,所有核心的代码都是在src目录下完成,为了更好的了解Vue的底层实现,我们首先来了解一下src目录下代码的组织情况,从全局入手,在脑海里留下简单的印象,方便后续的学习。(注意:当前使用Vue的版本为2.6.12,不同版本的内容可能会有所差异).├──compiler//编译模块:将template编译成为可以生成vnode的render函数│├──co
promise96319
·
2021-07-23 08:58
Snabbdom:虚拟DOM和Diff算法
因为要学习
Vue源码
,它的diff算法是绕不过的一个知识点。
普通不平庸
·
2021-06-29 17:42
上一页
7
8
9
10
11
12
13
14
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他