本专栏(FE weekly news)文章随缘更新,由于精力有限,每篇周报的内容可能不多,欢迎大家关注
新闻
1. 一个致力于规范化source maps的TC39工作组正式成立
该工作组在23年7月宣布创建,近期该工作组宣布最终成立,其成员包括彭博社、Google、JetBrains、Meta、微软、Mozilla、Sentry等。工作组致力于规范化source mpas,并推动各种source map 调试器、生成器、工具去遵守这些规范。以此来实现source maps一些开发周期较长、较复杂但对开发者来说必要的功能。比如通过传递函数、变量名、debug IDs来快速定位源文件的位置信息。
2. The State of WebAssembly 2023 (scottlogic.com)
2023年的WebAssembly调查报告出炉,摘出几个我比较关心的调查问题列在下面,想看完整调查可以查看原文。
-
开发者开发WebAssembly相关应用时,使用哪种语言比较多?
Rust今年仍然位列top1,这已经是它连续三年蝉联冠军了。
JavaScript位列第二,他们对WebAssembly的使用,大多是看中了它的安全性和隔离性。
Swift是最近才加入WebAssembly生态系统的,其实几年前苹果公司就已经提出希望WebAssembly支持Swift了,不过尽管他们已经提交了大量commit,WebAssembly仍然没有将这些代码合进来,目前他们仍然在维护他们自己的分支以供Swift使用。
-
开发者们用WebAssembly来开发什么?
使用WebAssembly最多的就是web开发(Web development)。
排在第二的是插件环境的开发(as a plug-in environment)。插件环境开发在这两年增速很快,通过WebAssembly,让用户(自定义插件开发者)可以在安全和隔离的环境中使用代码来扩展自己所需的功能,并且大大降低这些不可控代码对平台本身的影响。
-
WebAssembly的使用比例如何?
41%的调查参与者已经将WebAssembly用在了生产环境,28%的参与者计划在明年使用。(我对此持怀疑态度,我身边朋友没听说谁在用这个,使用比例真的有这么高吗)
-
你喜欢WebAssembly的原因是什么?(没全部列出来,想看全部可以查看原文)
- 可移植性和在不同平台上运行代码的能力,可以一次编写、随处运行
- 不同语言和web之间的互操作性,语言选择更灵活
- 本地性能和效率
- 安全和沙箱功能
- 对 JavaScript 有更少的依赖
- 在浏览器中运行复杂应用程序的潜力
- ....
文章
1. Solid.js的开发者提出了一些减少代码体积的策略
Solid.js的开发者Ryan Carniato表示,减少js体积是一件很有意义且很有必要的事情。由此列出了几种减少js体积的方法:
-
代码分割/懒加载
-
使用那些打包出的代码更小的框架
值得注意的是,Carniato做了测试,有些框架虽然在项目规模较小时打包出的代码体积小,但随着项目中的组件越来越多,其代码体积增速会变的很快(点名批评Svelte 手动狗头)
-
更多利用浏览器的内置功能(比如锚点、表单),而非全部依赖js来实现。
-
渐进式水合
页面在需要时按需水合,即选择性水合。以React为例, 如果React应用还没有完全水合时,用户点击了一个部分(可能不是 React 当前正在加载或水合的部分),那么React会停止正在进行的工作,优先处理用户点击的部分。
2. Web Components Will Outlive Your JavaScript Framework
本文作者介绍了自己如何使用web components来代替各种框架(比如React)来开发应用(不过web components在浏览器上的兼容性还是一般吧,至少我目前不会选择这么做,这样要放弃很多用户哎~),不过他的观点可以借鉴:如果你想长期维护一个网站,且不想受制于开发依赖工具的变更而被迫修改你的代码,那么减少你开发时的依赖工具,尽可能使用那些不会break的原生方式去写你的代码。