2

出于多种原因,我正在重建一个新项目。目前该项目使用 Marko。我正在调查是否值得转向苗条。我实际上并没有发现它们之间有很大的区别。其中一个对另一个有优势吗?为什么围绕 Svelte 大肆宣传?

4

1 回答 1

7

在我看来,Svelte 的受欢迎程度是基于以下事实:

  1. 它往往会导致 JS 客户端包的大小比三大巨头(React、Vue、Angular)更小,并且仍然可以在广泛的应用程序上胜过它们,尤其是在低规格/功耗的客户端设备上。
  2. 一旦你掌握了 JavaScript、HTML 和 CSS,它就相当容易学习。

我什至会说 Svelte 感觉更像是浏览器平台的自然扩展,而三巨头则倾向于做“自己的事情”(Angular 是一个“自以为是”的框架,React 痴迷于fn(state) => view,而 Vue 介于两者之间)。Svelte 中的代码节省(和“客户端电池友好性”)很大程度上是因为它没有使用像 React 和 Vue 这样的 VDOM——这意味着下载的代码更少,消耗的 CPU 周期也更少。Svelte 还使用编译器生成代码,因此它只包含实际需要的内容 - 甚至在捆绑器的 tree-shaking 开始做它的事情之前。Svelte 使用响应式更新模型(实际上有两个系统:响应式分配存储

Svelte 的缺点是,目前它的生态系统与三巨头中的任何一个相比都要小得多——但这是可以预料的,因为它是一个更年轻的工具。

Rich Harris 就 Svelte 发表了一些精彩的演讲:

另请参阅MDN:Svelte 入门

然而,就像 React 和 Vue 一样,Svelte 的核心设计基于CSR - 客户端渲染。因此,尽管它们都有 SSR 解决方案(Next.js - React、Nuxt.js - Vue、SvelteKit - 以前的 Sapper),但这些解决方案往往会引入一些意外的复杂性,因为 SSR 不是初始设计的一部分。

这就是马尔科不同的地方。它最初是一个基于服务器的解决方案,具有基于客户端的方面。早在 2017 年,基于客户端的方面是基于 VDOM 的。Marko 的优点之一是它支持异步片段- 从服务器流式传输 HTML - 开箱即用。现在 Marko 计划放弃 VDOM 并用细粒度的响应性代替它,以减少交付代码的大小并提高低端客户端设备的性能。Solid JS的Ryan Carniato于 2020 年 7 月加入Marko 团队,以实现这一目标。

从这个意义上说,Marko 是独一无二的,因为它实现了一种尝试以集成方式利用任何 Web 应用程序(服务器和客户端)中涉及的双方的优势的方法。因此,它似乎非常适合岛屿架构,需要在 Svelte 中进行更多工作(Elder.js及其背景故事)。

就标语而言:Marko 是对 HTML 的重新构想,而 Svelte使用的是 HTML 的超集

于 2021-01-28T15:15:42.287 回答