挑战“三大框架”的解决方案

简介: Svelte 是一个轻量级的前端框架,旨在帮助开发者构建高效、交互式的Web应用程序。它有着非常高的性能和可靠性,并且不需要额外的运行时库来支持,将所有代码都编译为非常优化的纯JavaScript代码。这意味着您可以获得更快的加载速度和更流畅的用户体验,从而让您的网站或应用程序看起来更加专业和出色。本篇文章将对Svelte的主要特点和使用案例进行详细介绍,同时提供一些实用的技巧,帮助你更好地利用Svelte进行开发和构建交互式的Web应用程序。

最近这些年,随着三大框架React、Vue、Angular版本逐渐稳定,前端技术栈的迭代似乎缓慢下来。

如果我们把目光拉伸到未来十年的视角,前端行业会出现哪些框架有可能会挑战React、Vue、Angular呢?

崭露头角的 Svelte 应该是其中的选项之一。

image.png

简介

Svelte 是一个构建 web 应用程序的工具。它被预测为未来十年可能取代React和Vue等其他框架的新兴技术。

有一个关键的区别:Svelte 在 构建/编译阶段 将你的应用程序转换为理想的 JavaScript 应用,而不是在 运行阶段 解释应用程序的代码。这意味着你不需要为框架所消耗的性能付出成本,并且在应用程序首次加载时没有额外损失。

你可以使用 Svelte 构建整个应用程序,也可以逐步将其融合到现有的代码中。你还可以将组件作为独立的包(package)交付到任何地方,并且不会有传统框架所带来的额外开销。

发展趋势

开发者满意度

从2019年开始, Svelte出现在榜单中。2020年,Svelte在满意度排行榜中超越了react,跃升到了第一位。在过去的两年里,也是碾压三大框架的存在,还能与最新的 Solid 并驾齐驱(都是90%)。

image.png

开发者兴趣度

在开发者兴趣度方面,在过去的四年里,Svelte 一直蝉联了第一。

image.png

市场占有率

2020年,Svelte 的市场占有率从第6名跃升到第4名,仅次于 React、Angular、Vue 老牌前端框架。

image.png

随着 Svelte 在社区里慢慢流行起来,它的占有率还会提升。

在最新的《State of JS survey》中,Svelte 被预测为未来十年可能取代React和Vue等其他框架的新兴技术。

Svelte 特点

No Runtime —— 无运行时代码

React 和 Vue 都是基于运行时的框架,当用户在你的页面进行各种操作改变组件的状态时,框架的运行时会根据新的组件状态(state)计算(diff)出哪些DOM节点需要被更新,从而更新视图。

而 Svelte 会在编译阶段将代码编译到更加贴近dom操作的代码。或者说,Svelte 生成的是命令式的dom创建过程,直接操作Dom。

Less Code —— 更少的代码

我们直接来看官网的例子:

image.png

实现的功能也很简单,就是两个Input的值求和,然后展示出来。图中是用svelte编写的代码。 看下 React 书写的版本:

import React, { useState } from 'react';

export default () => { 

    const [a, setA] = useState(1); 
    const [b, setB] = useState(2); 
    function handleChangeA(event) { setA(+event.target.value); } 
    function handleChangeB(event) { setB(+event.target.value); }

    return ( 

       <div> 
          <input type="number" value={a} onChange={handleChangeA}/> 
          <input type="number" value={b} onChange={handleChangeB}/> 
          <p>{a} + {b} = {a + b}</p> 
       </div> 

    );

}

再来看下 Vue 版本:

<template> 

    <div> 
       <input type="number" v-model.number="a"> 
       <input type="number" v-model.number="b"> 
       <p>{
  
  {a}} + {
  
  {b}} = {
  
  {a + b}}</p> 
   </div> 

</template> 

<script> 

    export default { 
       data: function() { 
          return { a: 1, b: 2 }; 
       } 
    }; 

</script>

三者对比:

框架名称 svelte react vue
demo字符数 145 445 263

单纯从代码字符数上,Svelte比Vue和React少。但就此得出说svelte的编码体积更小,这样是不对的。我们一起来看下编译后的对比:

框架名称 svelte react vue
体积 1.6k 22k 42k

从上述对比中可以看出,svelte 编译后的体积很少,包体积1.6k,对于一般中小型项目而言,整体运行的代码(编译后的代码+包体积)还是比较小的,所以可以说svelte项目的代码较小。

PS: 对于大型项目而言,因为svelte随着业务的进行,代码编译产物陡峭,大型项目体积并不会比react、vue等小,因此需要辩证看待。

svelte 生成的是命令式的dom创建过程,虚拟 dom 的框架生成的是虚拟 dom 结构创建的过程(vdom 渲染函数)。在基于虚拟 DOM 的框架里,虚拟dom到真实dom的转换过程,被封装在运行时里,所以每个组件虚拟 dom 创建过程仅仅是数据结构的表述,更为紧凑,代码产物也就比较少。

Hight-Performance ——高性能

在Virtual Dom已经是前端框架标配的今天, Svelte 声称自己是没有Virtual Dom加持的, 那性能如何呢?

Jacek Schae 在《A RealWorld Comparison of Front-End Frameworks with Benchmarks》中用主流的前端框架来编写 RealWorld 应用,使用 Chrome 的Lighthouse Audit测试性能,得出数据是Svelte 略逊于Vue, 但好于 React。

image.png

Svelte 性能还不错,至少没有我们预期的那么糟糕。

PS:svelte dom 是把数据和真实dom之间的映射关系,在编译的时候就通过AST等算出来,保存在p函数中。p函数就是一堆“if(...){...}”判断,直接保证dom的更新。同时,这也说明“如果项目中涉及了dom操作越多,那这个p函数就越大,编译后的代码提交就会增大”。

其他

本文没有涉及 Svelte 的语法,且 Svelte 的语法极其简单,官方教程学习文档也比较详细,相信大家很快就会上手语法的,这里就不做官网搬运工了。附上地址供大家参阅。

官方地址 https://www.sveltejs.cn/

相关文章
|
6月前
|
人工智能 前端开发 搜索推荐
前端UI框架的发展:从混沌到秩序的演变
前端UI框架的发展:从混沌到秩序的演变
|
6月前
|
前端开发 开发者
探索前端技术的新趋势:Web组件化开发
【2月更文挑战第11天】 在这篇文章中,我们将深入探讨Web组件化开发的概念及其对前端开发领域的影响。不同于传统的摘要方式,我们通过一个故事来引入主题:想象在一个快速变化的数字世界里,有一座由各种小型、独立、可复用的建筑块构成的城市,每个建筑块都拥有独特的功能和风格,它们可以自由组合,创造出无限可能的城市景观。这座城市,就像是使用了Web组件化开发技术的前端项目。接下来,我们将详细探讨Web组件化开发的优势、实现方式以及面临的挑战,为前端开发者提供一个全面的视角来理解和应用这一重要的技术趋势。
|
2月前
|
前端开发 JavaScript API
后端技术在现代软件开发中的应用与挑战
本文将深入探讨后端技术在当前软件开发中的重要性及其面临的主要挑战。通过分析后端技术的发展脉络,揭示其在数据处理、业务逻辑和系统安全等方面的关键作用。同时,本文还将讨论如何在快速变化的技术环境中保持后端技术的先进性和竞争力。
49 5
|
30天前
|
缓存 安全 程序员
易语言在跨平台开发中有哪些常见的技术挑战和解决方案?
易语言在跨平台开发中有哪些常见的技术挑战和解决方案?
|
4月前
|
开发框架 vr&ar 数据安全/隐私保护
移动应用的未来之路:框架、系统与创新
【5月更文挑战第83天】 随着移动互联网的飞速发展,移动应用(App)已成为人们日常生活和工作的重要组成部分。本文将深入探讨移动应用开发的最新趋势、挑战以及未来可能的发展方向。我们将重点讨论跨平台开发框架的兴起、原生与混合应用的优劣对比,以及移动操作系统在安全性、性能和用户体验方面的最新进展。通过分析这些关键技术要素,文章旨在为开发者、设计师及决策者提供洞见,帮助他们在竞争激烈的市场中保持领先。
|
4月前
|
编解码 前端开发 JavaScript
现代Web开发中的前端技术趋势与挑战
随着互联网的迅猛发展,现代Web开发中前端技术正日益成为关注的焦点。本文探讨了当前前端技术的主要趋势和面临的挑战,从性能优化到跨平台适配,为开发者提供了深入的洞见和解决方案。
|
6月前
|
安全 持续交付 云计算
利用阿里云开发中遇到的挑战与解决方案
阿里云面临开发者在网络延迟、安全性、成本管理和自动化部署方面的挑战。解决方案包括使用全球负载均衡和CDN提升网络性能,依赖安全组和SSL证书保障数据安全,通过费用预估和资源优化控制成本,以及借助容器服务和DevOps工具实现自动化部署。阿里云将持续提供支持,助力开发者克服挑战。
230 2
|
6月前
|
Kubernetes 前端开发 JavaScript
未来Web开发的趋势与挑战
随着科技的不断发展,Web开发行业也在不断演进。本文将探讨未来Web开发的趋势和面临的挑战,涵盖了前端、后端以及多种编程语言和数据库相关的技术。
|
6月前
|
API 开发者 UED
构建高效微服务架构:后端开发的新趋势移动应用与系统:开发与优化的艺术
【4月更文挑战第30天】 随着现代软件系统对可伸缩性、灵活性和敏捷性的日益需求,传统的单体应用架构正逐渐向微服务架构转变。本文将探讨微服务架构的核心概念,分析其优势,并着重讨论如何利用最新的后端技术栈实现一个高效的微服务系统。我们将涵盖设计模式、服务划分、数据一致性、服务发现与注册、API网关以及容器化等关键技术点,为后端开发者提供一份实操指南。 【4月更文挑战第30天】 在数字化时代的浪潮中,移动应用和操作系统的紧密交织已成为日常生活和商业活动的基石。本文将深入探讨移动应用开发的关键技术、跨平台开发工具的选择以及移动操作系统的架构和性能优化策略。通过分析当前移动应用开发的挑战与机遇,我们将
|
SQL 人工智能 前端开发
【深度好文】Web3数据的演变与挑战
在我们接受变革和不确定性的同时,我们也被挑战着不断拓展可能性的边界。在这个背景下,我们设想一个世界,人工智能、LLM和区块链的结合将孕育一个更加开放和包容的技术领域。
187 0
【深度好文】Web3数据的演变与挑战