返回知识库

工程与栈 · 开发基础

运行时Runtime

运行时是跑你代码的引擎加上它给的平台 API;同一种语言换地方,能做的事就不一样。

先认出这扇浏览器窗,再换运行时

下面就是课表页:默认 querySelector 已经找到标题。把同一行丢进 Node 或边缘,失败也盖在这扇窗上。

localhost:3000 /schedule浏览器 · 找到了 h1

晚间写作 · 19:30

querySelector 点亮了这行标题,因为浏览器给了 document。

浏览器 · 找到了 h1标题长在窗口里。

原因:浏览器运行时提供 document。下一步:点「同一行丢进 Node」,看标题会不会从窗口里消失。

知识点:运行时是引擎加平台 API

窗口里的标题和报错已经演示了差异,这里只命名三层。

  • 引擎只负责语法能跑:浏览器和 Node 都可以跑 JavaScript。
  • 平台 API 由运行时另给:浏览器给 document,Node 给 fs,边缘给 fetch 和 KV。
  • 报错常常不是代码写错,而是这段代码调的 API 不属于当前运行时。
  • 离开后要盯:代码搬家前先问「这跑在哪个运行时」。

什么时候用、怎么用

代码要跨浏览器、Node 或边缘时,先匹配运行时;纯页面脚本不必每次都问。

  • 信号:document 在服务端炸、fs 在浏览器 undefined、本地能跑上线崩。
  • 适用:确认最终执行环境,再写或改代码。
  • 不适用:同一种运行时里的逻辑 bug,先查业务而不是换环境。
  • 最短路径:写下跑在哪 → 只用那里有的 API → 本地用同一运行时复现。

正反例:同一行找标题

目标都是读到晚间写作,只改代码跑在哪。

正例在浏览器里调 document

标题被点亮。结果长在窗口里。

反例把同一行丢进 Node

标题划掉,窗上盖着 document is not defined。失败写在物件上。

快速自测

要把课表标题读出来,却在边缘函数里写 document.querySelector,会发生什么?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。