最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Svelte 框架体积优势有多大?

    正文概述 掘金(塔希)   2020-12-25   858

    Svelte 是一个新的前端框架,由 rollup 的作者编写。其口号——编译器即框架,核心思想在在于 编译期 做静态分析, 按需生成 最小的功能集来减少打包后代码体积。Svelte 的另一个特点是没有采用现在框架流行的虚拟 DOM 架构,而是直接编译生成最小操作 DOM 的代码,从而避免掉 diff 操作。

    所以从上述这段话可以看出,Svelte 的关键优势在两点:

    • 打包后体积小
    • 理论上性能和手写原生 JS 一样

    除去性能方面, Svelte 的另一个卖点就是,完成相同需求的代码,Svelte 打包后的体积会比其他框架小。我们从原理上来理解下为什么 Svelte 打包后的体积会小于其他框架。

    对于这段代码

    <script>
    	let name = 'world';
    </script>
    
    <h1>Hello {name}!</h1>
    

    会被编译成

    function create_fragment(ctx) {
    	let h1;
    
    	return {
    		c() {
    			h1 = element("h1");
    			h1.textContent = `Hello ${name}!`;
    		},
    		m(target, anchor) {
    			insert(target, h1, anchor);
    		},
    		p: noop,
    		i: noop,
    		o: noop,
    		d(detaching) {
    			if (detaching) detach(h1);
    		}
    	};
    }
    

    这段代码就是一个简单的挂载逻辑,通过模版编译分析,可以得出最终生成的 <h1>Hello {name}!</h1> 永远不会改变,那么 Svelte 就不会引入响应式更新相关的代码,没有用到生命周期钩子,自然而然生命周期相关的代码也没有,这个组件编译后的代码就是这么多。

    相同的代码如果换成 React 的话,即使你没有用到 hooks 或 class 相关的功能,你依然需要引入整个 react 包,而所谓体积差距就是在这个时候拉开的。

    了解到 Svelte 的原理之后,我们就可以从理论上做点分析了,从原理来看,这只是高级点的按需引入而已,你不用为你没有用到的代码付出代价,听起来很不错,然而换句话说,如果你确实用到了所有功能,你依然逃不掉代价

    重点在于,什么时候这个体积优势会消失,临界点在哪里? Svelte 社区同样有人关注这个问题 #2546 ,于是就有人做了相关实验放在 svelte-it-will-scale 仓库中。

    为了找出影响体积优势的临界点,首先需要找出 Svelte 源代码与打包后代码的体积关系。测试者选取了真实世界中的一些 Svelte 项目中,不同大小的 Svelte 组件,在移除样式相关的代码后,绘制出了源码体积和打包后大小的关系图。

    Svelte 框架体积优势有多大?

    x 轴是源码体积大小,y 轴是打包后体积大小,不同线表示应用不同压缩算法后的结果。通过这个关系图,我们可以得出一个公式:

    Svelte 组件打包后字节 = 0.493 * 源码大小 + 2811

    接下来,实验者使用同样的方法测算了 React 框架,得到的关系图如下

    Svelte 框架体积优势有多大?

    得出公式为:

    React 组件打包后字节 = 0.153 * 源码大小 + 43503

    通过两个公式,我们可以很容易使用三年级的数学水平算出临界点在哪里,不过为了直观,我们还是用图来表示

    Svelte 框架体积优势有多大?

    从图中可以看到,临界点在 120 kb 作用,也就是说,如果你的应用 组件相关的代码在 120 kb 左右时, Svelte 按需编译的体积优势则不在了

    从实践中来看,正常应用组件相关的代码确实很难达到 120 kb 作用,再加上使用 code-spliting 等技术。并且,实验者同时观察了现实世界中的 Svelte 项目,发现确实没有任何一个项目甚至接近临界点。

    Svelte 框架体积优势有多大?

    因此,使用 Svelte 确实会为你的项目带来体积上的优势。


    起源地下载网 » Svelte 框架体积优势有多大?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元