Google 于 2020 年 2 月 4 日星期二发布了 Chrome v80。我一直在等待这个特定版本的发布,它是过去很长时间以来发布的最重要的主要版本。

Chrome平台状态 www.chromestatus.com

什么是 Javascript 模块?

一旦使用 ES6+ 的类系统,你很可能会自动使用 JS 模块:

img

如果你坚持“每个文件1个类”的设计模式,则很可能要导入扩展的基类。你也很可能希望在文件末尾导出新类。一旦使用 import 或 export 语句,你的文件就已经被视为 JS 模块。

JS 模块可以直接在浏览器中运行吗?

在主线程内部,这已经在 Chrome,Firefox 和 Safari 中成为可能。在 Chrome 浏览器中使用 Web Worker 内部的 JS 模块已经有相当长的一段时间了,但是隐藏在实验性标记的后面。现在有了 Chrome v80,终于可以直接使用了。

注:此举会大大拉开 Chrome 与其他浏览器之间的距离。遗憾的是,尽管 FF 和 Safari 开发团队已经将此功能计划公开了好几年,但是优先级很低。

如何从 JS 模块创建 worker?

这由你决定。如果你想将 js 模块文件命名为 .mjs.js,请添加类型:module 是实现此目的的关键。

img

直接在浏览器内部使用 JS 模块有什么好处?

你可以创建结构良好的程序,并在浏览器中运行它们,而无需任何与 JS 相关的构建过程。这意味着你可以更改源代码,而只是重新加载浏览器页面,而无需 Webkit 监视文件更改和模块的热更换。

已经有一个由 Web Worker 驱动的 JS UI 框架了吗?

是的,neo.mjs 于 2019 年 11 月 23 日向公众发布。

仓库:

https://github.com/neomjs/neo

在线示例:

https://neomjs.github.io/pages/

接下来是什么?

如果你查看了发布时间表,可能已经注意到 Chrome v81 计划于 3 月 17 日发布。此版本将包括对共享 woker 的 JS 模块支持。这是制作多浏览器窗口应用(例如可以在多个屏幕上运行的应用程序)的关键。