您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

为什么 Qwik 可能是 JS 框架的未来?

时间:2022-12-25 15:53:08  来源:今日头条  作者:web 前端分享

大家好,很高兴又见面了,我是"web 前端分享",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!

女士们先生们,Qwik 作为新的 JS 框架发布了。这个框架能更好的覆盖以下场景:

 

  • 使用带有少量 JS 的纯 html 构建的网站,以便用户可以与之交互。
  • JS 在运行时生成 HTML
  • JS 在服务器上生成 HTML,然后在运行时对其进行水合
  • JS 通过部分水化在服务器上生成所有 HTML
  • 再回到原始的 HTML,它是由 JS 生成的,有额外的 JS 用于交互性。
Qwik 带来了什么?

 

Qwik 通过 RESUMABILITY 带来了一个全新的渲染模式,就可恢复性。Resumability 消除了许多现代框架的范式,如 Angular、NextJS 和 NUXTJS。 这些框架使用了 Hydration,帮助开发者以各种方式建立 SSR(服务器端渲染)网络应用的交互。


 

水合的问题

现有的 SSR/SSG 应用在客户端启动时,它需要客户端上做以下事情:

 

  • 1 侦听器 :定位事件侦听器并将它们安装在 DOM 节点上以使应用程序具有交互性;
  • 2 组件树: 构造数据并表现在组件树上。
  • 3 应用程序状态 :恢复应用程序状态。

 

这就是水合作用,当前所有框架都需要此步骤以使应用程序具有交互性。这个补水过程很昂贵,主要因为以下两点:

 

  • 1 框架必须下载与当前页面相关的所有组件代码。
  • 2 框架必须执行与页面上的组件关联的模板,以重建侦听器位置和内部组件树。

 

而 Qwik 则不同,Qwik 提出 Resumable(可恢复)的概念,启动时则不需要这个补水的过程,也就大大缩减了客户端的启动时间。Qwik 则通过将事件侦听序列化到 DOM 中,然后通过 Qwikloader 来解决上述问题。


click me

衡量 Web 应用程序性能的最佳工具之一是灯塔,每个优秀的开发人员都沉迷于完美的 LIGHTHOUSE SCORE 。


 

但是对于使用水合或部分水合的框架,需要编写大量 JS 来实现所有交互。而更多的 JS 意味着性能上的妥协,但是也意味着这是需要在浏览器获得完美的灯塔分数必须要做的事情 。

Qwik 速度快不是因为它使用了聪明的算法,而是因为它的设计方式使得大多数 JAVAScript 永远不需要下载或执行。它的速度来自于不做其他框架必须做的事情(例如水合作用-hydration)。

更好的性能意味着更高的收入?

问题是为什么开发人员如此痴迷于满分,仅仅是为了分数本身,还是它真的带来了什么? 好吧,根据研究,您的应用程序越快,您获得的转化率就越高。

用更少的 JavaScript 提供更多的功能?

当您在应用程序中加载页面时,通过水化,会得到如下的加载流程:

 

  • 获取 HTML
  • 下载一大堆 JS
  • 解析然后执行 JS
  • 绑定监听器

 

每次用户刷新页面时,主线程都会再次加载 JS,用户会再次经历上述的等待流程。

解决方案?

有使用水合的框架,也有部分使用水合的框架。 Qwik 没有水合作用。 它是如何做到的? 您可以将其视为可即时交互的 HTML。 有了这个,您可以获得完美的灯塔分数!

但它是如何发生的呢? Qwik 应用程序已完全序列化, 这意味着您的所有 JS 状态、侦听器和闭包都以 HTML 字符串的形式出现在您的应用程序中,这使得可即时重播并带来可恢复性(Resumability)。

使用 Qwik 进行延迟加载

当您运行 Qwik 应用程序时,您在网络检查中看不到 JS,但在单击事件时,您将看到要执行的 JS 代码。那是为什么?它基本上会在您的应用程序需要时触发 JS 代码 。

使用 Qwik 会带来更好体验?

我们看到 Qwik 的性能更好,但它是否为用户提供了更好的体验? 假设用户启动您的应用程序并立即加载,但没有任何 JS。 然后用户开始向下滚动,你的应用程序开始执行迷你 JS 文件,是不是很丝滑?

结论

现在已经了解了 Qwik 提供的内容、它解决的问题以及它如何解决问题。 很明显,它具有潜力和充满希望的未来。 确实取得了更好的性能,但在用户体验方面出现了一些问题。 Qwik 期待找到新的更好的打包方法,使可恢复性更加出彩。

参考资料

https://upmostly.com/web-development/why-qwik-is-potentially-the-future-of-js-frameworks

https://www.toutiao.com/article/7149468834204779042/?channel=&source=search_tab



Tags:JS 框架   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
每个开发人员都应该知道的 10 个 Node.js 框架
更新和更专业的软件框架不断涌现。 虽然开发人员经常难以跟踪这么多不同的选项,但每个选项都针对特定的受众,并且需要非常具体的技能组合。 这就是为什么市场上充斥着如此多...【详细内容】
2023-01-09  Search: JS 框架  点击:(262)  评论:(0)  加入收藏
为什么 Qwik 可能是 JS 框架的未来?
大家好,很高兴又见面了,我是"web 前端分享",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!女士们先生们,Qwik 作为新的 JS 框...【详细内容】
2022-12-25  Search: JS 框架  点击:(632)  评论:(0)  加入收藏
如何使用 Google CrUX 分析和比较 JS 框架的性能
摘要:在美国本土流量前 100 万的站点中(按流量统计),Vue 的性能追平了 React。 最近几年,框架已经成为 Web 开发领域的标杆,其中的排头兵当数 React。事实上,我们已经很少见到有人...【详细内容】
2022-05-20  Search: JS 框架  点击:(422)  评论:(0)  加入收藏
Riot.js 框架深入解析
最近整理了下团队新人文档,对团队内使用的框架 riot.js 这部分内容做了一些总结。本文主要在 riot.js 源码 方面,分析一下 riot.js 的执行原理和使用优化。Riot.js 简介Simple...【详细内容】
2019-09-10  Search: JS 框架  点击:(676)  评论:(0)  加入收藏
▌简易百科推荐
Qt与Flutter:在跨平台UI框架中哪个更受欢迎?
在跨平台UI框架领域,Qt和Flutter是两个备受瞩目的选择。它们各自具有独特的优势,也各自有着广泛的应用场景。本文将对Qt和Flutter进行详细的比较,以探讨在跨平台UI框架中哪个更...【详细内容】
2024-04-12  刘长伟    Tags:UI框架   点击:(1)  评论:(0)  加入收藏
Web Components实践:如何搭建一个框架无关的AI组件库
一、让人又爱又恨的Web ComponentsWeb Components是一种用于构建可重用的Web元素的技术。它允许开发者创建自定义的HTML元素,这些元素可以在不同的Web应用程序中重复使用,并且...【详细内容】
2024-04-03  京东云开发者    Tags:Web Components   点击:(8)  评论:(0)  加入收藏
Kubernetes 集群 CPU 使用率只有 13% :这下大家该知道如何省钱了
作者 | THE STACK译者 | 刘雅梦策划 | Tina根据 CAST AI 对 4000 个 Kubernetes 集群的分析,Kubernetes 集群通常只使用 13% 的 CPU 和平均 20% 的内存,这表明存在严重的过度...【详细内容】
2024-03-08  InfoQ    Tags:Kubernetes   点击:(19)  评论:(0)  加入收藏
Spring Security:保障应用安全的利器
SpringSecurity作为一个功能强大的安全框架,为Java应用程序提供了全面的安全保障,包括认证、授权、防护和集成等方面。本文将介绍SpringSecurity在这些方面的特性和优势,以及它...【详细内容】
2024-02-27  风舞凋零叶    Tags:Spring Security   点击:(55)  评论:(0)  加入收藏
五大跨平台桌面应用开发框架:Electron、Tauri、Flutter等
一、什么是跨平台桌面应用开发框架跨平台桌面应用开发框架是一种工具或框架,它允许开发者使用一种统一的代码库或语言来创建能够在多个操作系统上运行的桌面应用程序。传统上...【详细内容】
2024-02-26  贝格前端工场    Tags:框架   点击:(47)  评论:(0)  加入收藏
Spring Security权限控制框架使用指南
在常用的后台管理系统中,通常都会有访问权限控制的需求,用于限制不同人员对于接口的访问能力,如果用户不具备指定的权限,则不能访问某些接口。本文将用 waynboot-mall 项目举例...【详细内容】
2024-02-19  程序员wayn  微信公众号  Tags:Spring   点击:(39)  评论:(0)  加入收藏
开发者的Kubernetes懒人指南
你可以将本文作为开发者快速了解 Kubernetes 的指南。从基础知识到更高级的主题,如 Helm Chart,以及所有这些如何影响你作为开发者。译自Kubernetes for Lazy Developers。作...【详细内容】
2024-02-01  云云众生s  微信公众号  Tags:Kubernetes   点击:(51)  评论:(0)  加入收藏
链世界:一种简单而有效的人类行为Agent模型强化学习框架
强化学习是一种机器学习的方法,它通过让智能体(Agent)与环境交互,从而学习如何选择最优的行动来最大化累积的奖励。强化学习在许多领域都有广泛的应用,例如游戏、机器人、自动驾...【详细内容】
2024-01-30  大噬元兽  微信公众号  Tags:框架   点击:(68)  评论:(0)  加入收藏
Spring实现Kafka重试Topic,真的太香了
概述Kafka的强大功能之一是每个分区都有一个Consumer的偏移值。该偏移值是消费者将读取的下一条消息的值。可以自动或手动增加该值。如果我们由于错误而无法处理消息并想重...【详细内容】
2024-01-26  HELLO程序员  微信公众号  Tags:Spring   点击:(88)  评论:(0)  加入收藏
SpringBoot如何实现缓存预热?
缓存预热是指在 Spring Boot 项目启动时,预先将数据加载到缓存系统(如 Redis)中的一种机制。那么问题来了,在 Spring Boot 项目启动之后,在什么时候?在哪里可以将数据加载到缓存系...【详细内容】
2024-01-19   Java中文社群  微信公众号  Tags:SpringBoot   点击:(86)  评论:(0)  加入收藏
站内最新
站内热门
站内头条