运行时(Runtime)
JavaScript(或更正式的 ECMAScript)只是一种编程语言的规范。任何人都可以编写 JavaScript引擎来获取有效的 JavaScript 程序并执行它。目前使用最广泛的两个引擎是 V8(由 Google 开发) 和 JavaScriptCore(由 Apple 开发)。两者都是开源的。
但大多数 JavaScript 程序都不是独立运行的。它们需要一种方式来访问外部世界以执行有用的任务。这就是运行时的作用所在。它们实现额外的 API,然后将其提供给它们执行的 JavaScript 程序。
运行时有:
浏览器
浏览器都附带 JavaScript 运行时。浏览器执行的任何 JavaScript 代码都可以使用这些 API 在当前网页的上下文中实现交互式或动态行为。
Node.js
nodejs是一个开源的服务器端 JavaScript 运行环境,可以在非浏览器环境(如服务器)中使用。通常,JavaScript 主要用于在浏览器中执行,但是 Node.js 扩展了 JavaScript 的用途,使其能够在服务器端执行。Node.js 使用事件驱动、非阻塞 I/O 模型,适用于处理大量并发连接的应用程序,例如 Web 服务器。
同样,Node.js 是一个 JavaScript 运行时,可以在非浏览器环境(如服务器)中使用。Node.js 执行的 JavaScript 程序可以访问一组特定于 Node.js 的全局变量,如Buffer
、process
和,以及用于执行操作系统级任务(如读取/写入文件( )和联网(、 ))__dirname
的内置模块。Node.js 还实现了基于 CommonJS 的模块系统和解析算法,该算法早于 JavaScript 的原生模块系统。
NodeJs的管理工具
nvm(node version manager)
是专门用于管理 Node.js 版本的工具,使得在同一系统上能够方便切换不同的 Node.js 版本。fnm
(fast node manager)是一个专注于提供更快速 Node.js 版本管理的工具,类似于nvm
但设计上更注重性能。- npm (Node Package Manager) 是 Node.js 的默认包管理工具,也是全球最大的 JavaScript 包管理平台。它主要用于管理 JavaScript 项目的依赖包,可以安装、更新、删除项目所需的库和工具。除了管理依赖,npm 还可以用于脚本执行和版本管理。
Bun
作为nodeJs的替代品,bun的功能和优势是:
- TypeScript 和 JSX 支持。您可以直接执行
.jsx
、.ts
和.tsx
文件;Bun 的转译器会在执行前将这些文件转换为原始 JavaScript。 - ESM 和 CommonJS 兼容性。世界正在向 ES 模块 (ESM) 迈进,但 npm 上的数百万个软件包仍然需要 CommonJS。Bun 推荐使用 ES 模块,但支持 CommonJS。
- Web 标准 API。Bun实现了标准 Web API,如
fetch
、WebSocket
和ReadableStream
。Bun 由 Apple 为 Safari 开发的 JavaScriptCore 引擎提供支持,因此一些 API(如Headers和)URL直接使用Safari 的实现。 - Node.js 兼容性。除了支持 Node 样式的模块解析之外,Bun 还致力于完全兼容内置的 Node.js 全局变量(
process
、Buffer
)和模块(path
、、等)。这是一项正在进行的工作fs
,尚未完成。请参阅兼容性页面了解当前状态。
React Native 框架
Expo:帮助react native跨平台开发,为 React Native 应用程序开发提供的框架和平台。它简化了跨平台移动应用的开发过程。
Expo 的主要特点包括:
- 快速开发:使用 Expo 可以快速开发应用程序,无需编写大量平台特定的代码。
- 丰富的功能: Expo 提供了许多内置的功能和组件,包括相机、地理位置、传感器、推送通知等。
- 热重载: Expo 支持热重载,可以实时预览和调试应用程序的变化。
- 自定义配置:通过 Expo 配置文件,您可以轻松地自定义应用程序的不同设置和功能
Homebrew 是 macOS 上的包管理器,主要用于安装和管理系统级别的软件包,而不仅限于 Node.js。