网易首页 > 网易号 > 正文 申请入驻

Vue 3是最佳选择吗? 耗时两周从Vue 2迁移到Svelte后:代码执行更快、体验更佳

0
分享至

  整理 | 冬梅、核子可乐

  到底选 Vue 3 还是 Svelte?

  架构选型问题是每位 Web 开发人员都绕不开的一道难关。

  架构是整个 IT 系统的根基,一个错误的选型,可能造成巨大的财务、人力损失。现在随着各种新应用的崛起,到底是选择 Bootstrap、Angular、React、Vue 还是 Svelte,让开发人员很犯难。而且随着 Vue 3 发布、Vue 2 即将停止维护,不少企业开始考虑升级问题,其中不止一家企业选择从 Vue 迁移到了 Svelte,并对 Svelte 的性能表示满意。

  Sophie 是一名 UI/UX 设计师 / 前端开发者,她介绍了在知晓 Vue 2 即将停止维护后,其团队在选择新架构过程中的纠结、做出最终选择的原因、迁移的全过程以及迁移后的效果和收益。

  为什么要迁移?

  Sophie 表示,之所以要进行迁移,一方面是知晓了 Vue 2 即将停止维护,另一方面也是想改善开发者的工作体验,特别是类型检查、性能和构建时间这几项核心指标。之所以没有考虑 React,是因为它的学习过程太耗时间,而且也不提供能开箱即用的解决方案。Vue 和 Svelte 在这方面的优势明显更大。另外,Vue 和 Svelte 的单文件组件还通用相同的概念:逻辑均由 JS 表达、结构依托 HTML,样式则由 CSS 定义。

  在开展了一系列相关研究后,Sophie 的团队最终选择了 Svelte。

  关于 Vue 3 和 Svelte 哪个更好的争论一直是前端圈的热门话题,Vue 作者尤雨溪去年也在 GitHub 上创建了一个仓库用来对比 Svelte 和 Vue 3 组件。

  为了公平起见,尤雨溪选择了 todomvc 来进行构建比较,然后列举了一系列的步骤方案。最终结论是:

  Svelte 单组件在普通模式下比 Vue 3 单组件约大 70%(这个 70% 指的是当前 todomvc 组件的大小对比,并不代表着所有 Svelte 组件 都比 Vue 3 组件大 70%),在 SSR 模式下大 110%;

  在理论上,如果一个应用程序包含超过 15.04 / 0.78 约等于 19 个 todomvc 大小的组件,则 Svelte 应用程序将最终比 Vue 应用程序体积更大。在 SSR 场景中,这个阈值会更低。对于某个项目来说,当编写的组件大于 19 个(SSR 模式为 13 个组件),Svelte 的优势与 Vue 3 相比就不存在了。

  仓库地址:

  https://github.com/yyx990803/vue-svelte-size-analysis

  为什么选择 Svelte?

  与 Vue 3 相比,Svelte 优势明显

  在 Sophie 的项目中,其团队认为 Svelte 与 Vue 3 相比主要有以下几点优势:

  第一,Svelte 的留存率更高。下图为不同框架在过去五年内的留存率展示,留存率公式为:会再次使用 /(会再次使用 + 不会再次使用)。这部分开发者数据来自 JS 现状调查,可以看到 Svelte 在留存率方面位列第二,而 Vue 则居第四。

  2021 年前端开发框架留存率榜单,Svelte 位列第二、Vue 3 排名第四。

  由此看来,用过 Svelte 的开发者们普遍愿意再次使用。

  第二,Svelte 的类型机制更完善。

  Svelte 拥有更简单的组件设计流程和内置的类型化事件,由此实现的更佳类型体验更贴合人性化需求。

  第三,限制全局访问。在使用 Svelte 时,可以从其他文件处导入 enums 并在模板中使用;而 Vue 3 则做不到这一点。

  第四,语法更简明。Sophie 表示,她个人认为 Svelte 的语法要比 Vue 更优雅、也更易用一点。同时大家可以参考以下代码,体会二者之间的不同。

  Svelte:

  First nameLast nameReset

  {fullName}

  Vue:

  First nameLast name

  Full name: {{fullName}}

  Reset

  第五,无需额外的 HTML div在Svelte中,开发者可以直接编写自己的HTML。

  第六,Svelte 中会自动限定样式范围。这对可维护性来说是个好消息,有助于避免意料之外的 CSS 影响。由于每个组件的样式都彼此独立,因此问题只会影响到特定组件,而不影响其父组件或子组件。

  第七,更新数据无需计算属性。Svelte 的使用感受更像是编写纯 JavaScript 代码。开发者只需要专注于写下箭头函数:

  const reset = () => {firstName = "";lastName = "";}

  Svelte 中只须使用单括号:

  //Svelte{fullName}
//Vue{{fullName}}

  请注意,这里的结论只适用于上述特定代码模板,并不是对框架自身差异的完备说明。

  第八,纯 js 插件添加更简单。以下是 Svelte 和 Prism.js 的语法高亮集成用例展示:

  // Prism.svelte
{@htmlPrism.highlight(code, Prism.languages[lang], lang)// App.svelte


  第九,无需虚拟 DOM 即可编译代码。Svelte 和 Vue 的另一主要区别,就是减少了浏览器与应用程序之间的层数,从而实现性能优化、加快任务完成速度。

  第十,自动更新。借助声明变量,Svelte 能够自动更新开发者数据。这样就不必等待变更反映在虚拟结构当中,由此获得更好的开发体验。

  当然,Svelte 也有短板

  当然,Svelte 也有自己的短板,比如说社区规模较小。这也难免,毕竟 Svelte 在 2019 年才刚刚诞生。但随着越来越多的开发者感受到它的高品质和用户友好设计,支持与技术社区一定会发展壮大起来。另外,GitHub 上也已经有定期发布且相当完备的更新说明,随时可供查阅。

  总之,尽管在迁移之时 Svelte Kit 仍处于开发阶段,但综合各项因素考量,Sophie 和团队最终还是决定将神圣一票投给 Svelte 与 Svelte Kit。

  关于前端堆栈的Escape Benchmark

  迁移方法

  时间:Sophie 团队选择在 8 月份进行迁移,因为这时的应用程序使用量较低。

  耗时:迁移全过程一共耗时两周,就把所有文件从 Vue 迁移到了 Svelte。

  参与迁移的开发者人数:这两周内,有两位全职前端开发者负责迁移,另有一名全职开发者参与了一个礼拜。所以总共用到了 3 位开发人员。

  工作流程:首先用概念工具把迁移项目拆分成了指向各位开发者的工单。之后,技术团队开始在 Storybook 中创建新组件,最后由各位开发人员用 Svelte 重写自己负责的页面。

  Sophie 表示,作为一家初创企业,他们的迁移工作不会特别复杂,需要重写的文件也不是很多,所以推进速度很快。必须承认,将项目从 Vue 迁移至目前仍处于活跃开发阶段的 Svelte Kit 的确有些冒险,导致的结果就是迁移完成后仅一个月就需要做出重大变更。但 Svelte Kit 的专业团队业务极强,为 Sophie 团队提供了一条命令(npx svelte-migrate routes)和一份非常完备的迁移指南,帮助他们快速适应了此次更新。

  此外,今年 9 月 Svelte Kit 团队宣布此框架正式进入候选发布阶段,意味着其稳定性终于得到了保证。

  文件与组件的组织方式

  Svelte Kit 采取的“基于文件夹的路由”设计令 Sophie 团队受益良多。他们可以借此将页面拆分成子页面,以便重用标准变量名称,例如“loading”、“submit”等。另外,布局会直接集成到关联的路由当中,这样就增加了树内组织水平、降低了访问难度。

  迁移过程中沉淀下来的经验

  Sophie 表示,除了上述收益之外,还有其他一些关键因素值得探讨:

  更高的性能、更流畅的体验。在编译完成之后,技术团队马上就感受到了应用程序的“瘦身”成效。与其他框架相比,Svelte 提高了加载速度,帮助应用程序告别了曾经嵌入在逻辑代码之外的“运行时”。

  更佳开发者体验。Svelte Kit 使用 Vite 捆绑器,也就是新一代 JavaScript 构建工具,能够利用浏览器中的 ES 模块与“编译为本机”捆绑器,为团队带来最新 JS 技术中的最佳开发体验。

  更快代码执行速度。告别虚拟 DOM,而且在页面上执行变更时也能减少一层。

  启动并运行服务器端渲染(SSR)。如果最终用户的网络连接不畅、或者未启用 JavaScript,Svelte 平台仍能在 SSR 的帮助下高效运行,确保用户在未联网时继续加载网页。

  代码更加简洁易懂。Svelte 通过将逻辑(JS)、结构(HTML)和样式(CSS)组合在同一文件中,大大优化了面向组件代码的可读性和可维护性。其独特之处,就在于所有元素都会被编译在同一.svelte 文件当中。

  经过修复的类型检查。自从迁移至 Svelte 以来,终于可以通过类型检查解决当初的一系列问题。之前,Sophie 的技术团队不得不处理大量经常性 Sentry 通知,但现在情况不同了——那些烦人的误报再也不见了(参考下图)。

  Discord 上的 Sentry 错误通知示例

  Sophie 表示他们对于迁移后的效果非常满意,她称:“总而言之,从 Vue 到 Svelte 为我们带来了更愉悦的开发者体验,让我们能够专注于在 Escape 平台上更快更好地发布功能。这不仅拯救了项目团队自己,也给最终用户带来了感受提升”。

  https://github.com/yyx990803/vue-svelte-size-analysis

  https://escape.tech/blog/from-vue2-to-svelte/

  https://www.qiufeng.blue/vue/svelte-vs-vue3.html

  https://procoders.tech/blog/svelte-vs-vue-frameworks-comparison/

  https://news.ycombinator.com/item?id=33827075

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
突发!黎以全面开战!中东火药桶彻底点燃!

突发!黎以全面开战!中东火药桶彻底点燃!

大嘴说天下
2024-06-13 17:40:38
27岁女子被情夫杀,2013年情夫:她和前夫睡,让我在门外看,杀掉

27岁女子被情夫杀,2013年情夫:她和前夫睡,让我在门外看,杀掉

汉史趣闻
2024-06-13 08:59:13
南通一公墓数十个墓盖被掀开,目击者称骨灰盒露出,警方正在调查

南通一公墓数十个墓盖被掀开,目击者称骨灰盒露出,警方正在调查

极目新闻
2024-06-13 18:41:22
暴赚530亿!144小时中国游,震碎老外三观

暴赚530亿!144小时中国游,震碎老外三观

金错刀
2024-06-13 14:59:49
“白天高温晚上突然暴风雨”最近北方天气这是怎么了?

“白天高温晚上突然暴风雨”最近北方天气这是怎么了?

北青网-北京青年报
2024-06-13 20:05:06
最新!岛内发起罢免于北辰联署

最新!岛内发起罢免于北辰联署

环球时报新闻
2024-06-13 14:35:10
唯一在世的一代领导人,曾任政治局常委,如今107岁

唯一在世的一代领导人,曾任政治局常委,如今107岁

深度知局
2024-06-13 17:41:13
就在今晚,降!降!降!降!

就在今晚,降!降!降!降!

台州行
2024-06-13 07:36:29
俄军最后底牌,S-500导弹杀进战场:再被摧毁,就没人怕俄罗斯了

俄军最后底牌,S-500导弹杀进战场:再被摧毁,就没人怕俄罗斯了

鹅毛的大雪
2024-06-13 16:15:41
曝豆得儿曾为王思聪打过胎,看到黄一鸣爆料后破防,本人发文怒斥

曝豆得儿曾为王思聪打过胎,看到黄一鸣爆料后破防,本人发文怒斥

拾娱先生
2024-06-13 15:04:40
具俊晔情绪失控当场发飙,菲律宾演出现场寒酸,6个大灯24把椅子

具俊晔情绪失控当场发飙,菲律宾演出现场寒酸,6个大灯24把椅子

郑丁嘉话
2024-06-13 14:15:56
黄一鸣被曝生活拮据:给王思聪女儿穿20块衣服,喝200块的奶粉!

黄一鸣被曝生活拮据:给王思聪女儿穿20块衣服,喝200块的奶粉!

古希腊掌管月桂的神
2024-06-12 20:19:26
顺义要被堵死了.…源自无人驾驶

顺义要被堵死了.…源自无人驾驶

悠闲葡萄
2024-06-13 18:03:37
解放军中将突然去世,定居美国的两女儿现身追悼会,死因真相披露

解放军中将突然去世,定居美国的两女儿现身追悼会,死因真相披露

求实者
2024-06-08 23:09:29
高考作文压根没出现ai,写成“爱”的山区孩子,该怪出题人吗

高考作文压根没出现ai,写成“爱”的山区孩子,该怪出题人吗

熙熙说教
2024-06-13 13:57:27
外卖员要“感党恩、听党话、跟党走”,如何正确看待?

外卖员要“感党恩、听党话、跟党走”,如何正确看待?

一见财经
2024-06-13 15:23:57
中国行!桑尼赛后首发声:下个月被邀请来中国,会尽快建国内社媒

中国行!桑尼赛后首发声:下个月被邀请来中国,会尽快建国内社媒

直播吧
2024-06-13 17:05:20
曝王刚卖掉北京价值上亿四合院,移民美国,本人回应:我不是和珅

曝王刚卖掉北京价值上亿四合院,移民美国,本人回应:我不是和珅

拾娱先生
2024-06-12 15:27:22
深圳一家五口喝汤中毒,2人进ICU!

深圳一家五口喝汤中毒,2人进ICU!

南方都市报
2024-06-13 20:45:08
太狂!韩媒前瞻世预赛抽签,列上签和下签,放话:碰中国队=必胜

太狂!韩媒前瞻世预赛抽签,列上签和下签,放话:碰中国队=必胜

足球慢镜头
2024-06-13 16:38:26
2024-06-13 22:30:44
InfoQ
InfoQ
有内容的技术社区媒体
9904文章数 50002关注度
往期回顾 全部

科技要闻

小红书员工仅1/5工龄满2年 32岁就不让进了

头条要闻

美联储连续七次不降息 专家:或在大选前2个月降息

头条要闻

美联储连续七次不降息 专家:或在大选前2个月降息

体育要闻

乔丹最想单挑的男人走了

娱乐要闻

森林北报案,称和汪峰的感情遭受压力

财经要闻

私募大佬孙强:中国为什么缺少耐心资本

汽车要闻

升级8155芯片 新款卡罗拉锐放售12.98-18.48万

态度原创

健康
本地
手机
公开课
军事航空

晚餐不吃or吃七分饱,哪种更减肥?

本地新闻

粽情一夏|海河龙舟赛,竟然成了外国人的大party!

手机要闻

荣耀Magic V Flip发布 外屏尺寸行业最大 4999元起

公开课

近视只是视力差?小心并发症

军事要闻

美军演习将罕见以4万吨级准航母作为靶舰

无障碍浏览 进入关怀版