返回顶部
首页 > 资讯 > 前端开发 > JavaScript >纯JS如何实现vue.js下的双向绑定功能
  • 696
分享到

纯JS如何实现vue.js下的双向绑定功能

2024-04-02 19:04:59 696人浏览 泡泡鱼
摘要

目录首先说一下实现双向绑定的思路:再说一下实现这些功能的js主要的方法有哪些:最后需要创建哪些工具类?实现Vue双向绑定看下面截图 这是一个普通的html文件,也并没有引入vue.

看下面截图

这是一个普通的html文件,也并没有引入vue.js,是不是在代码中看到有些熟悉的地方?比如:"v-model","v-on:click",还有常用的“双花括号{{}}”赋值语句。

首先说一下实现双向绑定的思路:

一、创建一个自定义vue js对象,例如上面的wslVue 对象,初始化方法里面需要的参数有:(1)需要挂载到的dom对象id、(2)自定义vue对象的data属性(JSON对象)、(3)后面添加了一个模拟挂载的方法。(这里有用的就是(1)、(2)参数,(3)参数可以当认为vue对象所有的初始化工作完成后可以进行渲染(挂载)了方法回调)。

二、重写vue属性data json对象的set、get方法,同时可以为vue对象添加data下的所有属性,重写vue生成属性的set、get方法,方法里直接执行data的set、get方法(目的是可以直接用vue对象属性的读写进行dom操作)。

三、解析html,将html里面的标签node、文本node进行特定重组(这里说的特定重组指的就是将vue指令,{{}} 赋值符号转换为正常的html文档进行输出),在解析过程中对每一个需要操作的node进行缓存、绑定逻辑、添加监听事件(比如:input标签输入)。

再说一下实现这些功能的js主要的方法有哪些:

一、js对象属性的set、get方法。

二、document.createDocumentFragment html片段解析。

三、相关的正则判断进行html代码片段重组。

最后需要创建哪些工具类?

一、vue对象。

二、观察者类Watcher,保存需要操作的node节点和属性变更需要做的回调方法。

三、管理所有观察者Watcher的管理类Dep,控制数据变更相关Watcher进行回调渲染。

实现vue双向绑定

初始化vue对象方法

注释:

1:为vue对象添加data里全部的属性,并重写set、get方法。

2:为vue对象添加方法管理methods对象,当解析html获取到v-on:click方法的时候为标签添加click事件方法体。

3:这里进行解析html,解析时遇到需要处理的node时创建Watcher对象,将相关node及指令保存在Watcher对象里,并把Watcher对象添加到观察者管理类Dep集合里面。

4:初始化完成后进行挂载,渲染完整的html到指定的dom元素上。

Compile类解析需要挂载对应的dom

获取全部的node节点

解析特定指令

标签元素与文本内容判断

这里如果是标签node需要解析里面的v-on和v-model指令

v-model

v-on:click

红线处即为vue对象里methods匹配出来的方法,为当前的node添加点击事件。

这里如果是文本内容node需要解析里面的{{}}指令。

总结:这里会创建很多Watcher对象,对象保存了当前vue对象、node、数据变更回调,并保存在Dep管理类里,以待数据变更时直接执行方法回调进行渲染。

特定指令判断

Watcher及Dep对象

最后放一张思维导图

结尾:到这里基本的思路就讲完了,没有太复杂的逻辑,表达能力有限。希望对大家能有帮助,同时也接受大神们的批评指正,共同进步。

以上就是纯JS如何实现vue.js下的双向绑定功能的详细内容,更多关于JS实现vue的双向绑定的资料请关注编程网其它相关文章!

--结束END--

本文标题: 纯JS如何实现vue.js下的双向绑定功能

本文链接: https://lsjlt.com/news/128766.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 纯JS如何实现vue.js下的双向绑定功能
    目录首先说一下实现双向绑定的思路:再说一下实现这些功能的js主要的方法有哪些:最后需要创建哪些工具类?实现vue双向绑定看下面截图 这是一个普通的html文件,也并没有引入vue....
    99+
    2024-04-02
  • 如何用js实现Vue2.0中数据的双向绑定功能
    这篇文章主要介绍了如何用js实现Vue2.0中数据的双向绑定功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用js实现Vue2.0中数据的双向绑定功能文章都会有所收获,下...
    99+
    2024-04-02
  • vue.js如何使用Object.defineProperty实现双向绑定
    这篇文章主要介绍vue.js如何使用Object.defineProperty实现双向绑定,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!示例如下:var a= {...
    99+
    2024-04-02
  • vue.js实现双向绑定的方式
    Vue.js是一种流行的前端框架,它能够快速构建交互式Web应用程序和用户界面。Vue.js中最主要的特性之一就是双向数据绑定。本文将深入探讨Vue.js是如何实现双向数据绑定的以及它是如何与视图同步的。什么是双向数据绑定双向绑定是一种数据...
    99+
    2023-05-24
  • 如何利用js实现Vue2.0中数据的双向绑定功能
    本篇内容主要讲解“如何利用js实现Vue2.0中数据的双向绑定功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何利用js实现Vue2.0中数据的双向绑定功能”吧!Object.defineP...
    99+
    2023-06-20
  • 利用js实现Vue2.0中数据的双向绑定功能
    Object.defineProperty了解 语法: Object.defineProperty(obj, prop, descriptor) obj  ...
    99+
    2024-04-02
  • vue.js如何使用defineProperty实现数据的双向绑定
    这篇文章主要介绍了vue.js如何使用defineProperty实现数据的双向绑定,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。vue.j...
    99+
    2024-04-02
  • 使用Vue.js实现数据的双向绑定
    目录如何用Vue.js实现数据的双向绑定?1. 理解双向绑定2. 使用v-model指令3. 使用自定义组件实现双向绑定4. 数据劫持5. 模板引擎6.Object.definePr...
    99+
    2023-05-16
    Vue.js数据的双向绑定 Vue.js双向绑定
  • jquery,js如何实现类似Angular.js双向绑定
    这篇文章给大家分享的是有关jquery,js如何实现类似Angular.js双向绑定的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。刚了解了下Angular.js,发现Angula...
    99+
    2024-04-02
  • 如何实现JS原生数据双向绑定
    这篇文章主要介绍如何实现JS原生数据双向绑定,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!代码如下:<span  deep="7">...
    99+
    2024-04-02
  • vue.js中怎么实现双向绑定操作
    这期内容当中小编将会给大家带来有关vue.js中怎么实现双向绑定操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先在页面引入vue.js以及其他需要用到的或者可能要用...
    99+
    2024-04-02
  • Vue如何实现双向绑定
    这篇文章主要介绍Vue如何实现双向绑定,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!原理当你把一个普通的 JavaScript 对象传给 Vue 实例的 data 选项,Vue 将遍...
    99+
    2024-04-02
  • js的双向绑定实例讲解
    这篇文章主要介绍“js的双向绑定实例讲解”,在日常操作中,相信很多人在js的双向绑定实例讲解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”js的双向绑定实例讲解”的疑惑有所帮...
    99+
    2024-04-02
  • Vue数据的双向绑定如何实现
    本篇内容介绍了“Vue数据的双向绑定如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!实现组件双向数据绑定我们先来看看抛弃 .sync ...
    99+
    2023-07-04
  • 如何实现一个vue双向绑定
    这篇文章主要讲解了“如何实现一个vue双向绑定”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现一个vue双向绑定”吧!开始开局一张图从图上可以看出new Vue()分为了两步走代理监听...
    99+
    2023-06-29
  • vue如何实现数据双向绑定
    Vue.js是一个流行的前端框架,它提供了多种方式来实现数据双向绑定。数据双向绑定是Vue.js最重要的特性之一,它使得开发者能够根据数据的变化自动更新视图,同时也能根据视图的变化自动更新数据。因此,Vue.js的数据双向绑定也成为前端面试...
    99+
    2023-05-14
  • js实现数据双向绑定(访问器监听)
    本文实例为大家分享了js实现数据双向绑定的具体代码,供大家参考,具体内容如下 双向绑定: 双向绑定基于MVVM模型:model-view-viewModel model: 模型层,负...
    99+
    2024-04-02
  • Angular2如何实现自定义双向绑定属性
    这篇文章将为大家详细讲解有关Angular2如何实现自定义双向绑定属性,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。整理文档,搜刮出一个Angular 2实现自定义 双向...
    99+
    2024-04-02
  • js项目中双向数据绑定的简单实现方法
    目录前言发布订阅者模式结果调用总结前言 双向数据绑定 指的是当对象的属性发生变化时能够同时改变对应的UI,反之亦然。换句话说,如果我们有一个user对象,这个对象有一个name属性...
    99+
    2024-04-02
  • 聊聊Vue中如何实现数据双向绑定
    在我们使用vue的时候,当数据发生了改变,界面也会跟着更新,但这并不是理所当然的,我们修改数据的时候vue是如何监听数据的改变以及当数据发生改变的时候vue如何让界面刷新的?当我们修改数据的时候vue是通过es5中的Object.defin...
    99+
    2022-11-24
    Vue vue.js
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作