前端探索:揭秘JavaScript引擎与运行时的不同

发表时间: 2024-04-10 23:05

行业动态

TC39 Signals 提案[1]

一个早期提案:给 ECMAScript/JavaScript 带来一个新特性 signals,该提案从一系列流行的框架中引入了一些想法。提案解释 signals 是一种数据类型,它通过模拟状态单元和从其他状态/计算中派生的计算来实现单向数据流。状态和计算形成一个无环图,其中每个节点都有其他节点从其值派生状态(接收器)和/或为其值贡献状态(源)。

TC39 Signals 提案

发布

1、Deno 1.42[2]

Deno 是有 Rust 编写的 Javascript 运行时环境,旨在提供更安全的运行环境,目前发布到了 1.42 版本。Deno 支持 引入 JSR 包,它类似于 npm 包,但是支持 TS类型、只支持 ESM模块,是npm包的一个超集。Deno v1.42提供了更健壮的依赖管理,包括 Deno 发布deno publishdeno add命令,它们可以从 JSR 和 npm 发布和安装模块。

2、Babylon.js 7[3]

Babylon.js 旨在打造一款全球最强、最美、最简单、最开放的 web 渲染引擎,其 7.0 版本的发布带来了六项重大变更。

3、Node.js April 3 Security Releases

Node.js 18.x、20.x 和21.x 版本容易受到1个中等严重性问题[HTTP Request Smuggling via Content Length Obfuscation - (CVE-2024-27982) - (Medium)](https://nodejs.org/en/blog/vulnerability/april-2024-security-releases#http-request-smuggling-via-content-length-obfuscation---cve-2024-27982---medium "HTTP Request Smuggling via Content Length Obfuscation - (CVE-2024-27982) - (Medium)")和1个高严重性问题[Assertion failed in node::http2::Http2Session::~Http2Session() leads to HTTP/2 server crash (CVE-2024-27983) - (High)](https://nodejs.org/en/blog/vulnerability/april-2024-security-releases#assertion-failed-in-nodehttp2http2sessionhttp2session-leads-to-http2-server-crash-cve-2024-27983---high "Assertion failed in node::http2::Http2Session::~Http2Session() leads to HTTP/2 server crash (CVE-2024-27983) - (High)")的影响,上述安全问题分别在 18.20.1、20.12.1、21.7.2 版本修复。

Node.js April 3 Security Releases

4、Docusaurus 3.2[4]

Docusaurus 是一个将 markdown 转换为静态HTML网页的库,专注markdown编写即可构建个人知识库,支持使用 react组件来扩展网站样式和布局。其 3.2 版本优化了生产环境打包耗时,首次构建速度提升 30%,增加构建速度提升 60%。

5、gulp v5.0.0[5]

Gulp.js 是基于 Node.js 的自动化构建工具,其 5.0.0 版本更新了依赖的 Node.js 版本、默认流编码变更为UTF-8、对 glob 路径的标准化等内容。

文章

JavaScript 引擎和 JavaScript 运行时之间的区别是什么?(英文)[6]

JavaScript 引擎和 JavaScript 运行时的关系,正如ECMAScript和JavaScript的关系,是相关的,但并不相同。

JavaScript 引擎实现 ECMA-262标准定义的 ECMAScript。ECMA-262定义了 JavaScript 的核心功能,对输入或输出没有任何支持。JavaScript 运行时是一个 ECMAScript 主机,它嵌入了一个 JavaScript 引擎,并为其增加了额外的输入和输出功能,以及运行时所需的任何其他功能。其他功能可能包括 Web 浏览器中的 DOM 或服务器端运行时中的文件系统访问。运行时没有义务遵循其他标准,并且能够根据需要定义自己的 API,这就是为什么 Node.js、 Deno 和 Bun 都有不同的文件系统 API。

开源项目

The-Super-Tiny-Compiler[7](Star 27.3k、Fork 2.8k)

这是一个超简化 JavaScript 编译器示例,用不到1000行代码实现了现代编译器的主要部分的功能,通读代码将帮助您了解大多数编译器是如何工作的。

网站

1、临时邮箱[8]

注册账号时,不想使用您的真实邮箱?可以使用这个网站提供的临时邮箱,不需要注册,邮箱持续24小时,比十分钟邮箱(10分钟)保持时间更长,可以任意设置邮箱名,随时更换邮箱。

2、无聊按钮[9]

当你感到无聊时,点击按钮,随机跳转一个奇思妙想的网站。

CSS WEEKLY

1、把玩CSS常量Infinity(英文)[10]

作者发现CSS常量Infinity,并尝试用在z-indexwidthheightborder-radius和动画上,实际上发现常量Infinity无穷大并不是真正的无穷大,取决于不同浏览器如何处理。

2、对 CSS ::backdrop 继承的更改(英文)[11]

::backdrop 是一项CSS实验中伪元素选择器,是在任何处于全屏模式的元素下的即刻渲染的盒子(并且在所有其他在堆中的层级更低的元素之上),比如说全屏播放视频元素下方的盒子。其由不继承任何元素改为:可从其原始元素继承任何可继承的属性。

对 CSS ::backdrop 继承的更改

资源

CSS Animation 101[12]

《CSS 动画 101 指南》。这本书介绍了 CSS 的动画,涵盖了 CSS animation、transition 属性、如何制作复杂的动效,结合理论和实践课程。您将学习如何,以及为什么要将动画应用在您的网页


这里是松桑的前端后花园,目前坚持在写前端后花园周刊,专注前端基础领域,分享常见前端面试题、前端开源项目、工具库、前端最新动态,目前还一个前端菜鸟,和我一起打怪升级吧!这里是我精选的往期文章,希望对你有所帮助。

Node.js常用命令及学习资料

18个宝藏技术周刊,涵盖前端、产品、UX、AIGC、独立开发、科技(偷偷收藏)

为什么每个自媒体人都需要个人网站?(附十分钟快速建站教程)

我用 Nextjs 十分钟搭建了一个展示955公司网站

Gitbook 小书 - 快速创建你的个人专栏

参考资料

[1]TC39 Signals 提案:
https://eisenbergeffect.medium.com/a-tc39-proposal-for-signals-f0bedd37a335

[2]Deno 1.42: https://deno.com/blog/v1.42

[3]Babylon.js 7: https://www.babylonjs.com/

[4]Docusaurus 3.2: https://docusaurus.io/blog/releases/3.2

[5]gulp v5.0.0: https://github.com/gulpjs/gulp/releases/tag/v5.0.0

[6]JavaScript 引擎和 JavaScript 运行时之间的区别是什么?(英文):
https://humanwhocodes.com/blog/2024/03/javascript-engines-runtimes/

[7]The-Super-Tiny-Compiler: https://github.com/jamiebuilds/the-super-tiny-compiler

[8]临时邮箱: http://24mail.chacuo.net/

[9]无聊按钮:
https://www.boredbutton.com/

[10]把玩CSS常量Infinity(英文):
https://codersblock.com/blog/playing-with-infinity-in-css/?utm_source=fe-garden

[11]对 CSS ::​backdrop 继承的更改(英文):
https://developer.chrome.com/blog/css-backdrop-inheritance?utm_source=fe-garden&hl=zh-cn

[12]CSS Animation 101: https://github.com/cssanimation/css-animation-101