作为前端,你可能开发过 Electron 桌面应用、小程序、浏览器上的 web 应用、基于 React Native 等跨端引擎的 app,基于 Node.js 的工具或者服务等各种应用,这些都是 JS 的不同的 runtime,开发也都是基于前端那套技术。
面对这么多的细分领域,作为前端工程师的你是否曾迷茫过:这么多技术我该学什么?他们中有没有什么本质的东西呢?
其实所有的这些技术,你写过的所有代码,都可以分为两个方面:api 和 抽象。
api
不同平台提供的 api 不同,支持的能力不同:
浏览器提供了 dom api、支持了 css 的渲染,还提供了音视频、webgl 等相关 api,这些 api 是我们开发前端应用的基础。
Node.js 提供了操作系统能力的 api,比如进程、线程、网络、文件等,这些 api 是我们开发工具链或后端应用的基础。
React Native 等跨端引擎支持了 css 的渲染,还提供了设备能力的 api,比如照相机、闪光灯、传感器、GPS 等 api,这是我们开发移动 app 的基础。
Electron 集成了 Chromium 和 Node.js,同时还提供了桌面相关的 api。
小程序支持了 css 的渲染之外,还提供了一些宿主 app 能力的 api。
此外,还有很多的 runtime,比如 vscode 插件、sketch 插件等,都有各自能够使用的 api。
不同的 JS runtime 提供了不同 api 给上层应用,这是应用开发的基础,也是应用开发的能力边界。
<