网站建设河南百度站长网站规则改版

web/2025/10/4 3:40:50/文章来源:
网站建设河南,百度站长网站规则改版,html网页设计源代码文件免费,网站 建设 价格表状态更改检测#xff0c;也就是检测应用程序对状态值的改变#xff0c;这样才会相应地更新 UI。 #xff08;#MVC模式中模型Model的改变会更新View界面UI#xff0c;这点类似后端的ORM#xff0c;对象状态更改通过ORM框架自动变更相应数据表值#xff09; 变更检测是前…状态更改检测也就是检测应用程序对状态值的改变这样才会相应地更新 UI。 #MVC模式中模型Model的改变会更新View界面UI这点类似后端的ORM对象状态更改通过ORM框架自动变更相应数据表值 变更检测是前端框架的基本特征 一个框架对这个问题的解决方式还决定了其他一切开发人员体验、用户体验、API 表面积、社区满意度和参与度等。 事实证明从这个角度检查各种框架将为您提供所需的所有信息以便为您和您的用户确定最佳选择。因此让我们深入了解每个框架如何处理变更检测。 主要框架比较 我们将研究每个主要参与者以及他们如何处理变更检测但同样的批判眼光也适用于您可能遇到的任何前端 JavaScript 框架。 ReactJS React 中的更改检测是通过JS 开发人员只需通过 API 直接调用 React 的运行时就可更新状态由于 React 被通知了要进行状态更改因此它也要知道它需要重新渲染组件。 React长时间发展依赖编写组件的默认样式已经发生了各种演变变化但核心原则保持不变。 下面是一个实现按钮计数器的示例组件以 hooks 风格编写 export default function App() {const [count, setCount\] useState(0);return (divbutton onClick{() setCount(count - 1)}decrement/buttonspan{count}/spanbutton onClick{() setCount(count 1)}increment/buttonbutton onClick{() setTimeout(() setCount(count 1), 1000)}increment later/button/div); }这里的关键部分是setCount函数这个函数返回给我们的是React的钩子函数useState。 当调用setCount函数时React 可以使用其内部虚拟 DOM 比较算法来确定要重新渲染页面的哪些部分。 请注意这意味着 React 运行时必须包含在用户下载的应用程序包中。 React 的变更检测范例很简单应用程序状态在框架内维护通过向开发人员公开用于更新它的 API以便 React 知道何时重新渲染。 Angular 当你搭建一个新的 Angular 应用程序时变更检测似乎会自动发生 Component({selector: counter,template: \divbutton (click)count count - 1\decrement/buttonspan{{ count }}/spanbutton (click)count count 1\increment/buttonbutton (click)incrementLater()\increment later/button/div\ }) export **class** Counter {count 0;incrementLater() {setTimeout(() {**this**.count;}, 1000);} } 这里Angular 使用 NgZone 来观察用户操作并在每个事件中检查整个组件树。 对于任何合理大小的应用程序这都会导致性能问题因为快速检查整个树的成本太高。 因此Angular 允许开发人员选择不同的变更检测策略从而为这种行为提供了一个逃生门OnPush OnPush 意味着开发者有责任在状态发生变化时通知 Angular以便 Angular 重新渲染组件。除了默认的天真策略OnPush 是 Angular 提供的唯一一种变化检测策略。启用 OnPush 后如果新状态被异步更新我们必须手动告诉 Angular 的变化检测器检查新状态 Component({selector: counter,template: \divbutton (click)count count - 1\decrement/buttonspan{{ count }}/spanbutton (click)count count 1\increment/buttonbutton (click)incrementLater()\increment later/button/div\,changeDetection: ChangeDetectionStrategy.OnPush }) export **class** Counter {constructor(**private** readonly cdr: ChangeDetectorRef) {}count 0;incrementLater() {setTimeout(() {**this**.count;**this**.cdr.markForCheck();}, 1000);} } 对于任何复杂程度的应用来说这种方法很快就会变得站不住脚。 为了解决这个问题我们引入了其他解决方案。Angular 文档建议的主要解决方案是将 RxJS 观察对象与 AsyncPipe 结合使用 enum Action {INCREMENT,DECREMENT,INCREMENT\_LATER }Component({selector: counter,template: \divbutton (click)update.next(Action.DECREMENT)\decrement/buttonspan{{ count | async }}/spanbutton (click)update.next(Action.INCREMENT)\increment/buttonbutton (click)update.next(Action.INCREMENT\_LATER)\increment later/button/div\,changeDetection: ChangeDetectionStrategy.OnPush }) export **class** Counter {readonly update **new** SubjectAction();readonly count **this**.update.pipe(switchScan((prev, action) {**switch** (action) {**case** Action.INCREMENT:**return** of(prev 1);**case** Action.DECREMENT:**return** of(prev - 1);**case** Action.INCREMENT\_LATER:**return** of(prev 1).pipe(delay(1000));}}, 0),startWith(0));readonly Action Action; } 在其内部AsyncPipe 负责订阅观察对象在观察对象发出新值时通知变化检测器并在组件销毁时取消订阅。 可观察对象是对随时间发生的状态变化进行建模的一种强大方法但也有一些严重的缺点 它们很难调试。学习曲线非常陡峭。它们非常适合对数值流如鼠标移动进行建模但对于更常见的用例简单的状态变化如复选框的开/关状态来说它们就显得多余了。 为了克服默认变更检测模式的缺点Angular 团队正在开发一种名为信号Signals的新方法。 从概念上讲信号类似于 Svelte 存储我们稍后会介绍从根本上讲它们解决变更检测问题的方式与 React 相同框架正在控制应用程序的状态以便轻松监控变更并尽可能高效地重新呈现。 这是一个巨大的范式转变使 Angular 应用程序与其他框架更加相似。 Angular 的变更检测是一场灾难。开发人员有两个次优选择 缓慢而幼稚的默认实现或者手动管理更改检测的复杂性。 信号将使情况变得更好尽管已经晚了近十年。 VueJS Vue 的变更检测方法与 React 和 Angular 略有不同。 您不需要像React那样调用框架函数来更改状态 或像Angular那样更改状态然后通知框架它已更改 而是使用框架专门检测的状态对象来拦截和检测更改。 令人困惑的是Vue 有两种不同的 API它们以不同的方式封装了相同的底层变化检测引擎。 在 Options  API 下你可以定义一个包含状态的对象Vue 会将该对象的代理版本作为this对象的成员分配给组件的函数使用 templatedivbutton clickdecrement\decrement/buttonspan{{ count }}/spanbutton clickincrement\increment/buttonbutton clickincrementLater\increment later/button/div /templatescriptexport **default** {data() {**return** {count: 0};},methods: {decrement() {**this**.count--;},increment() {**this**.count;},incrementLater() {setTimeout(() {**this**.count;}, 1000);}}}; /script 另外Composition API 与 React 的钩子有些类似调用一个框架函数来检索 Vue 可以监控变化的状态对象 script setup**import** { ref } from vue;**const** count ref(0);function increment() {count.value;}function decrement() {count.value--;}function incrementLater() {setTimeout(() {count.value;}, 1000);} /scripttemplatedivbutton clickdecrement\decrement/buttonspan{{ count }}/spanbutton clickincrement\increment/buttonbutton clickincrementLater\increment later/button/div /template 从概念上讲从 ref() 返回的对象有一个 getter 和一个 setter 值这样 Vue 就能跟踪对象的变化。 Vue 利用 JavaScript 语言的特性允许开发人员使用有状态变量而无需考虑变化检测。 Svelte 从表面上看Svelte 版本的计数器组件与其他框架非常相似 scriptlet count 0;function decrement() {count--;}function increment() {count;}function incrementLater() {setTimeout(() {count;}, 1000);} /scriptdivbutton on:click{decrement}\decrement/buttonspan{count}/spanbutton on:click{increment}\increment/buttonbutton on:click{incrementLater}\increment later/button /div 但相比之下Svelte 的变化检测方法就显得非常新颖了。 在编译时Svelte 会分析组件代码的 AST抽象语法树并在编译输出中注入一些代码以便在必要时对 DOM 进行手术式更新。 例如编译后的 decrement() 函数就是这样的 function decrement() {$$invalidate(0, count--, count); }其中 $$invalidate 是对 Svelte 内部的调用用于指示编译后的组件更新 DOM。 这种编译时方法意味着 Svelte 应用程序不需要将大型运行时与应用程序本身捆绑在一起。 Svelte 取得了罕见的双赢平衡开发人员根本不必考虑变更检测并且可以直观地与状态变量交互然而最终用户的体验通过更好的性能得到了改善因为一个最低限度的应用程序内置更改检测被发送到浏览器。 总结 这些只是从开发人员的角度举例说明。每种方法都会对最终用户的应用程序性能产生影响。 React、Vue 和 Angular 都会向用户的浏览器发送运行时需要对运行时进行解析和执行。 Svelte 选择采用编译时框架因此在大多数情况下都不需要运行时这样用户就能获得更快的加载体验。 每种框架都有一些微妙之处使其更容易受到最终用户会遇到的特定错误类别通常与状态管理或变更检测有关的影响。 原文https://www.jdon.com/67402.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86572.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创建网站的流程有哪些零基础怎么学视频剪辑

出差回来,发现太多事需要处理现在每个项目都在Delay。且没有一个人是主动汇报项目的。这是非常不正常的现象。感觉有点累转载于:https://www.cnblogs.com/boriscao/archive/2005/09/03/229368.html

广州教育网站设计公司友情链接怎么连

本来以为以前的差不多够用了。呵呵,看到很多高手用高技巧,心痒痒的觉得我自己还可以提升啊。。哈哈哈。 这个实践起来之后,,SED,AWK也得深化一下,,,SHELL和PYTHON,作运维的两样都不能…

wordpress一行太宽了十堰seo按天计费

一、起因 1、需求: 由于业务需求在页面一次性展示较多数据,不低于上千,但是每条数据涉及样式较多,数据渲染过多就会导致页面卡顿 2、满足: 大量数据加载;表格功能:列显隐、列顺序调整、固定、筛…

中企动力做的网站升级收费广西省住房和城乡建设厅官方网站

作为青岛市的主干道之一,山东路的拥堵状况一直让人头疼。近日,因为一种交通组织优化方案的实施,山东路和延吉路的通行率提高了近50%。而研发这种智能管控系统的正是位于青岛高新区的青岛智能产业技术研究院。截止今年5月份,青岛智…

php快速建站系统芜湖网站推广

最近开发WAP网站时,最讨厌的就是back键,会造成些麻烦事。不过,问题总有办法解决。 有些页面,点击back键回退会加载缓存,这不是想要的,所以希望能够控制该页面不缓存,每次请求都需要从服务器获取…

重庆网站备案规则wordpress页面怎么切换

引言:陌瑾出品,争做精品!大家好,我是你们的老朋友,陌瑾。和平精英作为当下比较热门的一款PVP即时战斗手游,在6月17日,海岛2.0版本也重装上阵,此次地图更新是和平精英游戏上线以来第1…

电子商务网站软件平台百度一下首页极简版

目录 一、算法原理二、代码实现三、结果展示四、相关连接Open3D (C++) 点云投影至主成分空间由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 p r o j

做网站开发用哪门语言凡科建站代理入口

5G是什么?5G,其中字母G代表generation(代、际)。即第五代移动电话行动通信标准,也称第五代移动通信技术。5G的应用范围很广,大致可以包括以下几个方面:1、5G综合产业链分析2、5G与物联网3、5G与车联网4、5G与无线医疗5G对服务器的要求“云端…

基于阿里云的电商网站建设男女明星直接做的视频网站

总之,抖音招聘是一种新颖、高效的招聘方式,它可以为公司带来更大的曝光度和吸引力,帮助公司吸引更多优秀的人才。通过抖音直播招聘报白,企业或者人力资源公司可以利用抖音的短视频流量红利,触达到每天超过8亿的活跃用户…

女装网站建设规划书怎么写商城全网推广运营公司

目录 透传 Attributes Attributes 继承​ 对 class 和 style 的合并 v-on 监听器继承 深层组件继承 禁用 Attributes 继承 多根节点的 Attributes 继承 vue2 $attrs 和 $listeners $attrs 概念说明 $attrs 案例 $listeners 概念说明 $listeners案例 vue3 $attr…

智能网站推广优化福州做网站建设

总览 MineCraft是一个很好的例子,说明何时堆外内存确实可以提供帮助。 关键要求是: 保留的数据大部分是一个简单的数据结构(在我的世界的情况下,它的很多字节[]) 堆外内存的使用可以隐藏在抽象中。 考试 我使用以下测…

建设网站的工作流程价值30万的网站建设

prototype 属性的作用 JavaScript 规定,每个函数都有一个prototype属性,指向一个对象。 function f() {} typeof f.prototype // "object" ​ 上面代码中,函数f默认具有prototype属性,指向一个对象。 对于普通函数来…

百盛联合建设集团网站成功的软文推广

目录 一、ELK 简介 1.1 组件说明 1.2 为什么要使用ELK 1.3 完整日志系统的基本特征 1.4 ELK工作原理 二、Elasticsearch的介绍 2.1 Elasticsearch的核心: 三、Logstash 3.1 Logstash简介 四、Kibana 五、部署ELK日志分析系统 5.1 服务器配置 5.2 ELK Elasticse…

网站 成功因素南京十大广告公司

一、根据二叉树创建字符串 思路:在正常前序递归遍历的基础上,单独加上一个考虑到右子树为空的情况,如下:其结果为 1(2(4(5)(6)))&…

杭州电商网站建设公司青海省建设厅网站

不知道大家在写代码的时候,摸不摸鱼,是不是时不时得打开一下微博,看看今天发生了什么大事,又有谁塌房,而你没有及时赶上。 为此,我决定开发一个vscode插件,来查看微博热搜 插件名称&#xff1…

坪山网站建设渠道不备案如何架设网站

一 redis单线程与多线程 1.1 redis单线程&多线程 1.redis的单线程 redis单线程主要是指Redis的网络IO和键值对读写是由一个线程来完成的,Redis在处理客户端的请求时包括获取 (socket 读)、解析、执行、内容返回 (socket 写) 等都由一个顺序串行的主线程处理…

佛山 网站建设安装wordpress主题失败

文章目录 前言一、鼠标点击的角度测量二、二维码条形码识别 前言 一、鼠标点击的角度测量 首先导入一个带有角度的照片 然后下面的代码注册了一个鼠标按下的回调函数, 还有一个点的数列,鼠标事件为按下的时候就记录点,并画出点,…

济南网站优化收费怎么做网站demo

爆破音 true [t],发真实的 t。 单词的开始处重读音节的开始处,且前面没有跟着清辅音 [s] held 住不发声 叫法很多,声门塞音、吞音、喉塞(s)音、stop [t],held [t],不爆破的 [t]。 发音的口…

wordpress问答模块怎么做网络推广优化

目录 一、动态语言 二、创建C#dll 1.VS中创建一个C#语言的库工程 2.添加UnityEngine.dll的依赖 3.编写代码,生成dll 三、Unity使用dll 一、动态语言 计算机编程语言可以根据它们如何将源代码转换为可以执行的代码来分类为静态语言和动态语言。 静态语言&…

google网站增加关键词百度线上推广

# 首先在保证php已经正确安装的情况下:# 安装jdk(本人安装jdk7) 和 scala 因为kafka基于scala开发# 之后解压安装包 进入 运行命令 ./gradlew jar # 会下载一些包 # 首先运行 zookeeper ./bin/zookeeper-server-start.sh ./config/zookeeper.properties# 之后运行k…