Chrome 133 里程碑式更新 - moveBefore, 或开启前端框架未来新纪元?
相关背景:
Chrome 133 版本(将于 2 月 4 日发布稳定版)引入了一个新的 DOM 操作方法:Node.prototype.moveBefore。这一方法虽然看似简单,但其意义重大,因为它能够在移动 DOM 元素时保留元素的状态。传统的 DOM 移动操作通常需要先移除元素再重新插入,这会导致元素的状态重置,而 moveBefore 则避免了这一问题。
特性:
1、保留元素状态
moveBefore 方法能够在移动 DOM 元素时保留其状态,这意味着:内嵌框架 (iframe) 会保持加载状态,活动元素会保持焦点,弹出窗口、全屏模式、模态对话框会保持打开状态,CSS 过渡和动画会继续执行。
moveBefore 可以用于各种需要移动 DOM 元素并保留其状态的场景,例如:
- 拖放操作
- 动态排序列表
- 创建动画效果
- .....
2、语法简洁
moveBefore 的语法与 insertBefore 类似,开发者可以轻松替换现有的代码。例子:
传统上,开发者使用 Node.prototype.insertBefore 方法来替换 DOM 元素。然而,使用 insertBefore 方法会导致被替换的节点重新加载状态。
document.querySelector('#classic').addEventListener('click', () => {
const $newSibling = getRandomElementInBody();
const $iframe = document.querySelector('iframe');
// document.body.insertBefore($iframe, $newSibling); //无状态替换,需要重新注册
document.body.moveBefore($iframe, $newSibling); //状态可保留
});
以下这个演示为我们展示了 moveBefore 的强大魔力:
state-preserving-atomic-move.glitch.me/?scenario=selection
意义解读:
性能更优,避免了传统无状态DOM操作中产生的重排消耗
从无状态的DOM操作提供了一个过渡到有状态的DOM操作的方法
为前端MVVM机制提供了更优的性能保障
未来展望:
diff 将或与成为历史, 随着更多现代浏览器和更多先进的 DOM-API 加入后, 以react,vue为代表的现代前端框架设计理念或许将会被修正; 包括数据流,vdom的概念
以
moveBefore为里程碑或许未来将会加入更多的带状态操作的 DOM API.在这里就不得不提到 C39 Signal 提案 , 如果对前端前沿技术比较关注的同学,对状态管理的Signal解决方案想必是已经熟悉了,
useSignal的核心概念基于 TC39 的信号提案,这是一个旨在标准化 JavaScript 中响应式状态管理的提案。类似于
useSignal的概念早在十年前就已经出现,例如在 Knockout 框架中就已经使用了类似的信号机制。然而,由于当时的编译技术和开发体验的限制,这种机制并未广泛流行。该提案的目标是通过信号(
Signal)机制,提供一种细粒度的响应式状态管理方式,允许开发者更高效地管理状态变化。如果这一标准能够无缝集成到浏览器中或许复杂的前端"框架"也将成为历史,一切回归到本真,从简出发驱动开源社区提供更优质的MVVM架构设计, 简化现代MVVM架构中冗余和糟粕的部分,让开发学习成本更低,也让机器学习的成本更低,为未来的自动化应用的落地成为更现实的可能.
当然最终结果还是取决于开源社区和开发者是否积极向上的去拥抱新特性,就让历史见证一切
Chrome 133 里程碑式更新 - moveBefore, 或开启前端框架未来新纪元?的更多相关文章
- 前端框架对于未来web移动端的影响
现在前端框架市场比较乱,各种各样的框架参差不齐,这给我带来了很多困惑,同样是很多朋友的困惑吧!因为前端框架有很多种,对于程序员来说选择学习是非常困难的,不可能有几十上百种都要学习吧,不过最好的办法就是 ...
- macaca运行报错之chrome-driver问题处理,关闭 Chrome 的自动更新
由于chrome浏览器自动更新,导致 macaca运行报错,重新安装和更新chrome-driver 之后,还需要把chrome浏览器降级到50版本: 但是chrome会自动更新,所以需要禁止.找到这 ...
- 0前端 框架 库_千万别去碰js呀 混合APP_webAPP_美工 选有类型的语言,比如TypeScript
常用知识点,技巧 添加库到本地: (举例 element-ui) 用npm命令行把包下载到本地 在电脑里找到资源文件,比如 C:\Users\XiaoCong\AppData\Roaming\npm\ ...
- 2015 年开源前端框架盘点 TOP 20
1.名称:Bootstrap 类别/语言:HTML.CSS.JavaScript 创建者: Twitter 人气:在Github上有91007 stars 描述:主流框架中毋庸置疑的老大,Bootst ...
- 前端框架之Vue.js
前言: 前端主流框架有Vue.react.angular,目前比较火因为Vue比较容易学习,运营起来比较快速: Vue是什么呢? 是一个基于MVVM架构的,前端框架: 如果你之前已经习惯了用jQuer ...
- (转)2018几大主流的UI/JS框架——前端框架 [Vue.js(目前市场上的主流)]
https://blog.csdn.net/hu_belif/article/details/81258961 2016年开始应该是互联网飞速发展的几年,同时也是Web前端开发非常火爆的一年,Web ...
- 前端框架 Vue 初探
一.前言 前几日使用微信网页版时,好奇这个网页用了什么前端框架.用Chrome的开发人员模式一探到底,发现原来用了一个名叫 Angular 的框架.好吧,既然微信用了.那我也最好还是看看.等等,你这篇 ...
- 可能是目前最完整的前端框架 Vue.js 全面介绍
Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架. 摘要 2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,“vue.js兼具angul ...
- 2015年开源前端框架盘点TOP20
2015年,榜单根据github上star数作为排名依据.(榜单中大部分为组件式框架, react.Angular等基础框架不在此篇讨论) 1.Bootstrap 类别/语言:HTML.CSS.Jav ...
- 14个优秀 JS 前端框架、库、工具及其使用时机
这篇文章主要描述现今流行的一些 Javascript web 前端框架,库以及它们的适用场景. 新的 Javascript 库层出不穷,从而Web 社区愈发活跃.多样.在多方面快速发展.详细去描述每一 ...
随机推荐
- [转载] 十问 TiDB :关于架构设计的一些思考 TiDB
做 TiDB 的缘起是从思考一个问题开始的:为什么在数据库领域有这么多永远也躲不开的坑?从 2015 年我们写下第一行代码,3 年以来我们迎面遇到无数个问题,一边思考一边做,尽量用最小的代价来快速奔跑 ...
- rpc-java 生成代码路径设置
<plugin> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf- ...
- 盘点5个常用的.Net依赖注入框架!
盘点5个常用的依赖注入框架,特别是前面2个. 1.Microsoft.Extensions.DependencyInjection 这是.Net Core框架本身内置集成的,我们只需引入Microso ...
- 安装OpenCV时提示缺少boostdesc_bgm.i文件的问题解决方案
安装OpenCV时,会遇到下面的错误 /home/zhang/slam/opencv-3.4.5/opencv_contrib/modules/xfeatures2d/src/boostdesc.cp ...
- Vue整合Cesium的博文
参考链接: 1.Vue 集成 Cesium 2.vue/cli3引入cesium 3.Vue2+Cesium.js展示地图 4.vue-cli3 引入 cesium 5.Vue Cli 4 引入 Ce ...
- [转]Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简述及技术选型介绍
原文链接: Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简述及技术选型介绍
- ffmpeg 去除音频中的静音
去除音频中的静音 //去除所有超过0.3秒的静音部分 ffmpeg -i input.mp3 -af silenceremove=stop_periods=-1:stop_duration=0.3:s ...
- Apollo架构设计
Apollo架构设计 Apollo有一点很好,就是它是由国内携程团队开发,而且文档写的很全,代码也完全开源.如果去了解它也可以直接去看它的官方文档. 一.配置中心概念 1.背景 在实际开发中都会与配置 ...
- 远程连接Windows
远程桌面连接 限制 1.同网段 (1)服务器关闭防火墙 (2)服务器端 右键点击'我的电脑'进入'属性'点击左侧菜单栏中的'远程设置': 把远程桌面选项设置成'允许运行任意版本远程桌面的计算机连接'. ...
- 搭建 VuePress 站点必做的 10 个优化
前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 在搭建这 ...