devdocs.io/electron 是一个便捷的网站,它存储了用于离线使用的文档,不仅包括 Electron,还包括许多其他项目,如 JavaScript、TypeScript、Node.js、React、Angular 等等。当然,也有一个相应的 Electron 应用。请访问 Electron 网站查看 devdocs-app。
electron npm 包现在包含一个 TypeScript 定义文件,该文件提供了整个 Electron API 的详细注解。即使您正在编写 **纯 JavaScript**,这些注解也能改善您的 Electron 开发体验。只需运行 npm install electron 即可在您的项目中获取最新的 Electron 类型定义。
TypeScript 是由 Microsoft 创建的一种开源编程语言。它是 JavaScript 的超集,通过添加对静态类型的支持来扩展该语言。近年来,TypeScript 社区迅速发展,并在最近的 Stack Overflow 开发者调查中被列为 最受欢迎的编程语言 之一。TypeScript 被描述为“可扩展的 JavaScript”,GitHub、Slack 和 Microsoft 的团队都在使用它来编写被数百万人使用的可扩展 Electron 应用。
我在理解“流”这个概念上遇到了困难。起初,我考虑使用 GitHub 的通知 API。但我注意到它不支持某些用例。之后,我考虑在通知 API 的基础上使用议题 API 和拉取请求 API。但它从未达到我想要的效果。然后,在思考各种方法时,我意识到轮询 GitHub 的搜索 API 将提供最大的灵活性。达到这一点花了大约一个月的实验时间,然后我花了两天时间用流的概念实现了一个 Jasper 的原型。
有一种说法认为 Electron 应用是“臃肿的”,因为它们在每个应用中都包含了整个 Chrome 内容模块。在某些情况下,这部分属实(一个 Electron 应用安装程序通常约 40MB,而 OS 特定的应用安装程序通常约 20MB)。
然而,对于 WebTorrent Desktop 来说,我们在正常操作过程中使用了几乎所有的 Electron 功能以及几十种 Chrome 功能。如果我们想为每个平台从头实现这些功能,构建我们的应用将需要多几个月甚至几年的时间,或者我们只能发布到单个平台。
举个例子,我们使用了 Electron 的 Dock 集成(显示下载进度)、菜单栏集成(在后台运行)、协议处理程序注册(打开磁力链接)、电源阻止器(防止视频播放期间休眠)和自动更新器。至于 Chrome 功能,我们使用了不少:<video> 标签(播放多种视频格式)、<track> 标签(支持字幕)、拖放支持以及 WebRTC(这在原生应用中使用并非易事)。