当前位置: 首页 > news >正文

vue升级题

不熟悉的:

2,

3.你用过befcoreDetory 吗?清除定时器,第一个和第二个再看一下

实例加载完成是在哪个生命周期--beforecreate

7.父子组件生命周期执行顺序?为什么这么渲染?场景

8.简单描述每个周期具体适合那些场景?(需要在问)

只是钩子,触发事件

每个生命周期的钩子函数去做这个事情,不是执行

你卸载的时候会触发这个钩子

9

10

13.v都是语法糖;v-model只能用一次,sync可以父子组件的数据达到同步

16:v-on;v-bind的原理

18

21.vue-loader:解析vue文件;template-解析成html;script标签解析成js,style里的东西解析成css

是webpack中的

、允许用单文件

怎么实现

diff-vdom看下源码

22.diff算法用了key;

24:

26:

27:

28
30

33.Vue的路由实现:hash模式和history模式

35-37

38

40

41:active-class 

说下route-link原理:点击跳转;写个div 加一个点击事件原理;to:跳转到的页面

42:keep-live最多能缓存几个;缓存的这个机制是怎么实现的

标签页缓存

-50

1.vue怎么实现的减少了dom的操作,因为我们只需要关注数据就可以

https://blog.csdn.net/qq_40055200/article/details/134630413?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22134630413%22%2C%22source%22%3A%22qq_40055200%22%7D
 

vue 双向绑定的源码实现 

这段代码实现了一个简化版的Vue双向绑定,主要包括以下几个部分:

  • defineReactive 函数:使用 Object.defineProperty 定义对象的属性,实现数据的响应式绑定。
  • observe 函数:遍历对象的属性,对每个属性调用 defineReactive 进行响应式绑定。
  • compile 函数:编译模板,找到带有 v-model 属性的节点,并监听其输入事件,实现双向绑定。
  • compileNode 函数:编译文本节点,将模板中的 {{}} 表达式解析为对应的数据,并创建一个 Watcher 对象进行监听。
  • compileFragment 函数:递归遍历模板中的所有节点,调用 compileNode 进行编译。
  • Vue 构造函数:初始化 Vue 实例,将 data 数据进行响应式绑定,并编译模板。
  • Watcher 对象:观察者对象,用于监听数据变化并更新视图。
  • Dep 对象:依赖收集对象,用于管理和通知所有的观察者对象。
function defineReactive(obj, key, val) {Object.defineProperty(obj, key, {enumerable: true,configurable: true,get: function reactiveGetter() {// 在读取属性值时,进行依赖收集// ...return val;},set: function reactiveSetter(newVal) {if (newVal === val) {return;}// 在更新属性值时,触发更新// ...val = newVal;}});
}function observe(obj) {if (typeof obj !== 'object' || obj === null) {return;}Object.keys(obj).forEach(function(key) {defineReactive(obj, key, obj[key]);});
}function compile(node, vm) {if (node.nodeType === 1) {var attrs = node.attributes;for (var i = 0; i < attrs.length; i++) {if (attrs[i].nodeName === 'v-model') {var exp = attrs[i].nodeValue;node.value = vm[exp];node.addEventListener('input', function(e) {// 监听输入事件,更新数据vm[exp] = e.target.value;});node.removeAttribute('v-model');}}}
}function compileNode(node, vm) {var reg = /\{\{(.*)\}\}/;if (node.nodeType === 1) {compile(node, vm);} else if (node.nodeType === 3 && reg.test(node.nodeValue)) {var exp = RegExp.$1;exp = exp.trim();new Watcher(vm, exp, function(value) {// 监听数据变化,更新视图node.nodeValue = value;});}
}function compileFragment(fragment, vm) {var childNodes = fragment.childNodes;Array.prototype.slice.call(childNodes).forEach(function(node) {compileNode(node, vm);if (node.childNodes && node.childNodes.length > 0) {compileFragment(node, vm);}});
}function Vue(options) {this.$options = options;this._data = options.data;observe(this._data);var compiled = document.createDocumentFragment();this.$el = document.querySelector(options.el);compiled.appendChild(this.$el.cloneNode(true));compileFragment(compiled, this);this.$el.parentNode.replaceChild(compiled, this.$el);
}function Watcher(vm, exp, cb) {this.vm = vm;this.exp = exp;this.cb = cb;this.value = this.get();
}Watcher.prototype = {update: function() {var newVal = this.vm[this.exp];if (newVal !== this.value) {this.value = newVal;this.cb.call(this.vm, newVal);}},get: function() {Dep.target = this;var value = this.vm[this.exp];Dep.target = null;return value;}
};function Dep() {this.subs = [];
}Dep.prototype = {addSub: function(sub) {this.subs.push(sub);},notify: function() {this.subs.forEach(function(sub) {sub.update();});}
};Dep.target = null;

 

2.v-model怎么实现的

3.

相关文章:

vue升级题

不熟悉的&#xff1a; 2&#xff0c; 3.你用过befcoreDetory 吗&#xff1f;清除定时器&#xff0c;第一个和第二个再看一下 实例加载完成是在哪个生命周期--beforecreate 7.父子组件生命周期执行顺序&#xff1f;为什么这么渲染&#xff1f;场景 8.简单描述每个周期具体适…...

Edit And Resend测试接口工具(浏览器上的Postman)

优点 可以不用设置Cookie或者Token&#xff0c;只设置参数进行重发接口测试API 使用Microsoft Rdge浏览器 F12——然后点击网络——在页面点击发起请求——然后选择要重发的请求右键选择Edit And Resend——在网络控制台设置自己要设置的参数去测试自己写的功能...

maven常用打包命令,值传递和引用传递,Java包 ,JDK 中常用的包有哪些,import java和javax有什么区别

文章目录 maven常用打包命令Java程序设计语言对对象采用的不是引用调用&#xff0c;实际上&#xff0c;对象引用是按值传递的。值传递和引用传递有什么区别Java包 &#xff0c;JDK 中常用的包有哪些import java和javax有什么区别 谈谈java基础的内容&#xff0c;而且很多人都回…...

【c++随笔14】虚函数表

【c随笔14】虚函数表 一、虚函数表&#xff08;Virtual Function Table&#xff09;1、定义2、查看虚函数表2.1、 问题&#xff1a;三种类型&#xff0c;包含一个int类型的class、一个int类型的变量、int类型的指针&#xff1a;这三个大小分别是多少呢&#xff1f;2.2、怎么发现…...

分布式链路追踪实战篇-日志库集成opentelemetry的思路

由上文分布式链路追踪入门篇-基础原理与快速应用可以知道分布式链路追踪的作用&#xff0c;但是距离应用到项目中&#xff0c;我们还需要对项目中一些关键组件进行opentelemetry的集成&#xff0c;例如日志库&#xff0c;ORM、http框架、rpc框架等。 一、日志库如何集成opentel…...

电脑投屏到电视的软件,Mac,Linux,Win均可使用

电脑投屏到电视的软件&#xff0c;Mac&#xff0c;Linux&#xff0c;Win均可使用 AirDroid Cast的TV版&#xff0c;可以上笔记本电脑或台式电脑直接投屏到各种安卓电视上。 无线投屏可以实现本地投屏及远程投屏&#xff0c;AirPlay协议可以实现本地投屏&#xff0c;大家可以按需…...

基于vue+element-plus+echarts编写动态绘图页面

我们都知道网页的echarts可以画图&#xff0c;但是很多情况下都需要编码实现绘图逻辑&#xff0c;如果有一个前端页面可以让我输入数据然后动态生成图表的话那么该多好&#xff0c;其实这个需求不难实现&#xff0c;先看效果。 整体页面分为左右两个部分&#xff0c;其中左边的…...

无人机巡检如何做到实时识别,从数据到模型全流程解读

在数字化和自动化飞速发展的今天&#xff0c;AI识别算法正在加速进入行业生产系统。 基于巡检数据的智能开发&#xff0c;识别算法突破性进展的核心驱动力在于需求——从全天候巡视的平安城市&#xff0c;到潮汐变化的交通网络&#xff0c;从广阔的水域&#xff0c;到繁忙的街道…...

zlmediakit实现rtsp流服务器

本次实现是将内存中的H264数据经过zlmediakit实现为rtsp流。 我是用的是CAPI的方式&#xff0c;将zlmediakit作为一个sdk嵌入到自己的程序中而不是作为一个独立的进进程服务。 1.编译完成zkmedialit后会得到bin include lib三个文件夹如图 其中bin中的MediaServer是作为独立的…...

保姆级 ARM64 CPU架构下安装部署Docker + rancher + K8S 说明文档

1 K8S 简介 K8S是Kubernetes的简称&#xff0c;是一个开源的容器编排平台&#xff0c;用于自动部署、扩展和管理“容器化&#xff08;containerized&#xff09;应用程序”的系统。它可以跨多个主机聚集在一起&#xff0c;控制和自动化应用的部署与更新。 K8S 架构 Kubernete…...

耶鲁博弈论笔记

编辑记录&#xff1a; 1126&#xff1a;开个新坑&#xff0c;耶鲁大学的博弈论课程&#xff0c; 和专业相关不大&#xff0c;纯兴趣&#xff0c;尽量写好一点吧 1. 首先指出博弈论是一种研究策略形式的方法&#xff0c;对于经济学中&#xff0c;完全竞争市场只能被动接受均衡…...

一个简易的URL爬虫程序(java)

该程序是一个简单的Java程序&#xff0c;用于从指定的URL中获取网页内容并保存到本地文件。通过URL类打开指定的URL链接&#xff0c;并使用openStream()方法获取输入流。然后使用Scanner类读取输入流中的内容&#xff0c;并使用PrintWriter类将读取到的内容写入到本地文件中。 …...

Deep Learning(wu--46)

文章目录 ContentsBeginBasic逻辑回归SGD导数计算图&#xff08;反向传播&#xff09;向量化广播numpy Neural Network向量化激活函数梯度下降深层表示反向传播 Contents Begin Basic 逻辑回归 SGD 导数 计算图&#xff08;反向传播&#xff09; 向量化 广播 numpy Neural Netw…...

Java网络爬虫实战

List item 文章目录 ⭐️写在前面的话⭐️&#x1f4cc;What is it?分类网络爬虫按照系统结构和实现技术&#xff0c;大致可以分为以下几种类型&#xff1a;通用网络爬虫&#xff08;General Purpose Web Crawler&#xff09;、聚焦网络爬虫&#xff08;Focused Web Crawler&a…...

srs的webrtc信令分析

关于webrtc的流信令只有四个 /rtc/v1/publish/&#xff0c;这是推流接口&#xff0c;是推流客户端跟SRS交换SDP的接口 /rtc/v1/play/&#xff0c;这是拉流接口&#xff0c;是拉流客户端跟SRS交换SDP的接口 /rtc/v1/whip/&#xff0c;这也是推流接口&#xff0c;作用是也是交换…...

实现简单的操作服务器和客户端(上)

一、说明 描述:本教程介绍如何使用 simple_action_server 库创建斐波那契动作服务器。此示例操作服务器生成斐波那契序列,目标是序列的顺序,反馈是计算的序列,结果是最终序列。 内容 创建操作消息编写一个简单的服务器 代码...

基于Java SSM框架+Vue实现药品销售进销存网站项目【项目源码+论文说明】

基于java的SSM框架Vue实现药品销售进销存网站演示 摘要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于药品管理系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了…...

【刷题笔记】加油站||符合思维方式

加油站 文章目录 加油站1 题目描述2 思路3 解题方法 1 题目描述 https://leetcode.cn/problems/gas-station/ 在一条环路上有 n 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&#xff0c;从第 i 个加油站开往第 i1 个加油站需要消…...

【ArcGIS Pro微课1000例】0037:ArcGIS Pro中模型构建器的使用---以shp批量转kml/kmz为例

文章目录 一、ArcGIS Pro模型构建器介绍二、shp批量转kml/kmz1. 打开模型构建器2. 添加工作空间4. 添加【创建要素图层】工具5. 添加【图层转kml】工具6. 输出文件命名7. 运行模型三、模型另存为1.py文件2. 保存为工具一、ArcGIS Pro模型构建器介绍 模型构建器是一种可视化编程…...

前端 vue 面试题(二)

文章目录 如何让vue页面重新渲染组件间通信vue为什么要mutation、 action操作插槽、具名插槽、作用域插槽vue编译使用的是什么库&#xff1f;vue怎么实现treeshakingwebpack实现treeshaking为什么只有es module 能支持 tree shaking mixin 的作用mixin的底层原理nexTick原理vue…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践

01技术背景与业务挑战 某短视频点播企业深耕国内用户市场&#xff0c;但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大&#xff0c;传统架构已较难满足当前企业发展的需求&#xff0c;企业面临着三重挑战&#xff1a; ① 业务&#xff1a;国内用户访问海外服…...