干货 | 携程机票前端Svelte生产实践

本文介绍了携程机票前端团队在项目中采用Svelte框架的实践。Svelte以其小巧、高效和响应式的特点,成为项目落地的优选。文章详细探讨了Svelte的技术优势,如Write less code、No virtual DOM和Truly reactive,并通过与React和Vue的对比,阐述了Svelte的高效性。此外,还分享了项目落地过程中的组件结构、生命周期、数据绑定、状态管理等方面的经验,以及项目性能优化后的成果。
摘要由CSDN通过智能技术生成

作者简介

 

shuan feng,携程高级前端开发工程师,关注性能优化、低代码、svelte等领域。

一、技术调研

最近几年,前端框架层出不穷。近两年,前端圈又出了一个新宠Svelte。作者是 Rich Harris,也就是 RactiveRollup 和 Buble的作者,前端界的“轮子哥”。

通过静态编译减少框架运行时的代码量。一个 Svelte 组件编译之后,所有需要的运行时代码都包含在里面了,除了引入这个组件本身,你不需要再额外引入一个所谓的框架运行时!

Github上拥有 5w 多的 star!

ae3c4ff8507a3152764f7fd4270cddd7.png

在最新的State of JS 2021和Stack Overflow Survey 2021的排名情况中,也一定程度上反映了它的火热程度。

3414fb246ddfd13776a0571a0e61bc3e.png 251ca235727c68b2f85d2425db6b1956.png

在早前知乎的如何看待 svelte 这个前端框架?问题下面,Vue的作者尤雨溪也对其做出了极高的评价:

f5ea85800fc47462c400bec216db1cad.png

去它的官网看一下:

05ef0205353c00c251154ee804d3e13a.png

官网上清楚的表明了三大特性:

  • • Write less code

  • • No virtual DOM

  • • Truly reactive


1.1 Write less code

顾名思义,是指实现相同的功能,Svelte的代码最少。这一点会在后面的示例中有所体现。

1.2 No virtual DOM

Svelte的实现没有利用虚拟DOM,要知道VueReact的实现都是利用了虚拟DOM的,而且虚拟DOM不是一直都很高效的吗?

Virtual DOM 不是一直都很高效的吗?

其实 Virtual DOM高效是一个误解。说 Virtual DOM 高效的一个理由就是它不会直接操作原生的 DOM 节点,因为这个很消耗性能。当组件状态变化时,它会通过某些 diff 算法去计算出本次数据更新真实的视图变化,然后只改变需要改变的 DOM 节点。

用过 React 的同学可能都会体会到 React 并没有想象中那么高效,框架有时候会做很多无用功,这体现在很多组件会被“无缘无故”进行重渲染(re-render)。所谓的 re-render 是你定义的 class Component 的 render 方法被重新执行,或者你的组件函数被重新执行。

组件被重渲染是因为 Vitual DOM 的高效是建立在 diff 算法上的,而要有 diff 一定要将组件重渲染才能知道组件的新状态和旧状态有没有发生改变,从而才能计算出哪些 DOM 需要被更新。

正是因为框架本身很难避免无用的渲染,React 才允许你使用一些诸如 shouldComponentUpdatePureComponent 和 useMemo 的 API 去告诉框架哪些组件不需要被重渲染,可是这也就引入了很多模板代码。

那么如何解决 Vitual DOM 算法低效的问题呢?最有效的解决方案就是不用 Virtual DOM

1.3 Truly reactive

第三点真正的响应式,上面也提到了前端框架要解决的首要问题就是:当数据发生改变的时候相应的 DOM 节点会被更新,这个就是reactive

我们先来看下VueReact

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Svelte是一个新兴的前端框架,近年来逐渐崭露头角。虽然它的star数量还远远不及Vue、React和Angular这三个主流框架,但是其增长速度令人瞩目。Svelte提供了一种全新的思维方式,通过编译时将组件转化为高效的JavaScript代码,使得应用程序在运行时更加高效。与传统的前端框架相比,Svelte的体积更小、性能更好。由于Svelte的出现,前端开发者可以尝试新的技术栈,提升开发效率和用户体验。因此,对于前端工程师来说,了解和学习Svelte是值得考虑的。123 #### 引用[.reference_title] - *1* [尝鲜 Svelte 前端框架,开发读书笔记](https://blog.csdn.net/csdnnews/article/details/109912904)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *2* [实战 | 尝鲜 Svelte 前端框架,开发读书笔记](https://blog.csdn.net/azl397985856/article/details/110412562)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [undefined](undefined)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值