登录
首页 >  文章 >  前端

Node.js是什么?能运行JS吗?

时间:2026-02-01 16:30:31 244浏览 收藏

小伙伴们对文章编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《Node.js是什么?能运行JavaScript吗?》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

Node.js 是专为服务器端运行 JavaScript 设计的运行时,基于 V8 引擎、事件循环和内置模块,支持 fs、http 等 API,但无 DOM 和浏览器 API。

什么是Node.js以及它能运行javascript吗?【教程】

Node.js 不是 JavaScript 的运行环境“替代品”,它本身就是让 JavaScript 能在服务器端运行的运行时(runtime)——所以答案是肯定的:它不仅能运行 JavaScript,而且专为此设计。

Node.js 本质是 V8 引擎 + 事件循环 + 内置模块

它把 Chrome 浏览器里的 V8 引擎单独拎出来,加上 libuv 提供异步 I/O(文件读写、网络请求等),再封装一层 Node.js 自己的 API(比如 fs.readFilehttp.createServer)。没有浏览器环境那套 DOM 和 window 对象,但多了 processglobal__dirname 这些服务端特有的东西。

  • 你写的 .js 文件,用 node index.js 就能直接执行,不需要 HTML 或浏览器
  • 不能用 document.getElementById —— 因为根本没有 document
  • 可以用 require('fs') 读文件,也可以用 fetch(v18+ 默认支持)或 axios 发 HTTP 请求

为什么 console.log 能用,但 alert 不行?

console.log 是 Node.js 自带的全局方法,输出到终端;而 alert 是浏览器提供的 Web API,Node.js 里压根没实现它。类似地:

  • setTimeoutPromise 可用(V8 原生支持)
  • localStorage 不可用(浏览器专属)
  • Buffer 可用(Node.js 特有,处理二进制数据)
  • import / export 默认可用(ESM 模式需加 "type": "module" 或用 .mjs 后缀)

常见报错:ReferenceError: document is not defined

这通常发生在你把前端代码(比如 React 组件、Vue SFC)直接丢进 Node.js 执行。Node.js 不知道 document 是什么,也不会自动模拟浏览器环境。

  • 解决思路:区分环境 —— 服务端渲染(SSR)需用 jsdom 模拟 DOM,或改用 if (typeof window !== 'undefined') 做运行时判断
  • 调试技巧:在代码开头加 console.log(typeof window, typeof document),确认当前环境
  • 注意 globalThis 在 Node.js 中指向 global,在浏览器中指向 window,可用来安全跨环境访问全局对象

真正容易被忽略的不是“能不能跑 JS”,而是默认不带任何浏览器能力 —— 你得主动引入对应模块(如 node-fetch 替代 fetch)、适配路径(__dirname 替代 location.pathname)、处理模块系统差异(CommonJS vs ESM)。写的时候多看一眼 process.versions,比猜更可靠。

好了,本文到此结束,带大家了解了《Node.js是什么?能运行JS吗?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多文章知识!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>