Vue 中递归调用节点组件自身实现无限节点的树

前言

在之前一篇《Vue 中使用渲染函数 render 实现无限节点的树》中我们介绍了如何使用 render 函数中的 h 函数来实现无限节点树的渲染,但这种方式有很多小伙伴们可能使用起来不是很习惯。有没有一种更加直观的方式来实现呢?其实是有的,就是我们可以递归调用树节点组件自身实现无限节点 继续阅读“Vue 中递归调用节点组件自身实现无限节点的树”

Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/collectionHandlers.ts

前言

接着上一篇《Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/baseHandlers.ts》我们学习了使用 Proxy 实现的 reactive 构造出来的响应式的对象, new Proxy(target, handler) 中的基础 handler(baseHandlers)。这一篇,我们将来介绍另外一种 handler 叫 collectionHandlers。collectionHandler 比 baseHandler 提供了更加丰富的 OperationTypes(set、add、delete、clear、get、has、iterate) 中更齐全的操作的 继续阅读“Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/collectionHandlers.ts”

Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/baseHandlers.ts

前言

回到之前有一篇《Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/reactive.ts》我们学习了使用 Proxy 实现的 reactive 构造出来的响应式的对象,定义一个 Proxy 对象是怎么样呢?请看代码: new Proxy(target, handler) 可以看出来,是需要 targethandler 来实现,在本篇中我们就来看看实现这个 handler 的最基础的两种叫 mutableHandlersreadonlyHandlers继续阅读“Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/baseHandlers.ts”

Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/computed.ts

前言

前一篇《Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/effect.ts》中,我们学习了用于响应数据读写变化的方法(在 vue 3 中会把用户传入的响应方法/响应函数再次封装而成为 effect 或者叫 ReactiveEffect),现在我们来介绍一种依赖于一种依赖于 effect 的扩展于 Ref 的响应式数据类型 computedComputedRef),相信用过 vue 的人都大概会猜到 computed 应该于 vue 1.x / vue 2. x 中的 computed 有很大的 继续阅读“Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/computed.ts”

Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/effect.ts

前言

前两篇《Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/reactive.ts》和《Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/ref.ts》中,我们学习了如何把目标数据或者目标对象封装成了响应式的或者对象,但除用于响应数据读写变化的方法(在 vue 3 中会把用户传入的响应方法/响应函数再次封装,然后成为本篇介绍的 effect 或者叫 ReactiveEffect),我们还没有涉及, 继续阅读“Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/effect.ts”

Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/ref.ts

前言

上一篇《Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/reactive.ts》我们学习了使用 Proxy 实现的 reactive 构造出来的响应式的对象,但 reactive 接受的值的参数限于 Object, Array, Map, Set, WeakMap, WeakSet 这些类型,而本篇介绍的 refreactive 也类似,但可以接收任何类型的值的参数。而且对值的监听的实现方式也不一样, 继续阅读“Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/ref.ts”

Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/reactive.ts

前言

今天突然回忆自己的前端成长之路,自己为什么要学习各种框架及库源码,学习各种源码有什么好处呢?其实感觉自己的能力或多或少是伴随着一系列的前端源码学习而不断进步的。

当年学习 jQuery 的源码学习到了 extend 对象 merge 及入参 options / default options 、链式调用、如何实现链式调用和如何与各种 Dom 打交道;当年学习 weui 学习到了移动端如何处理 1 像素 border 处理、 继续阅读“Vue 3 Pre-Alpha / vue-next 源码学习之 vue/reactivity/reactive.ts”

Vue 中实现动态增减输入框 / 选择器等表单输入元素

前言

在做前端开发过程中,我们经常会遇到这样的需求:要求动态增减输入框、下拉选择等输入元素(如下图)。 继续阅读“Vue 中实现动态增减输入框 / 选择器等表单输入元素”

前端 mvvm 框架底层学习(八、双向绑定加入发布订阅模式)

前言

上一篇《前端 mvvm 框架底层学习(七、双向绑定优化)》介绍了我们如何解决了双向绑定中的局部更新的问题,或者解决更小颗粒度更新的问题,但代码比较混乱,所有的 Dom 操作及数据绑定操作都耦合到了一起。这里我们来学习一下 Vue 是如何结合合经典的发布/订阅模式进行双向绑定优化的。 继续阅读“前端 mvvm 框架底层学习(八、双向绑定加入发布订阅模式)”

Vue 中使用渲染函数 render 实现无限节点的树

前言

我们在 Vue 的官方文档其中一节 渲染函数 & JSX 中有这么一句话:『Vue 推荐在绝大多数情况下使用模板来创建你的 HTML。然而在一些场景中,你真的需要 JavaScript 的完全编程的能力。这时你可以用渲染函数,它比模板更接近编译器。』,在实际项目中还真的遇到过一些使用模板解决不了的问题,如要生成一棵无限的 Dom 树,或者生成无限层级的菜单等情况。 继续阅读“Vue 中使用渲染函数 render 实现无限节点的树”