Svelte 与 MarkoJS

Mis*_*ato 4 marko svelte

由于多种原因,我\xe2\x80\x99m 正在重建一个新项目。目前该项目使用 Marko。\n我\xe2\x80\x99m 调查\xe2\x80\x99 是否值得转向精简。\n我实际上没有\xe2\x80\x99t 发现它们之间有很大差异。\n其中之一是吗相对于对方有优势吗?为什么 Svelte 受到如此大的关注?

\n

Pee*_*ers 19

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

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

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

\n

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

\n

Rich Harris 就 Svelte 进行了一些精彩的演讲:

\n\n

另请参阅MDN:Svelte 入门

\n

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

\n

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

\n

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

\n\n

就口号而言:Marko 是 HTML 的重新构想,而 Svelte使用的是 HTML 的超集

\n