Node.js 和 JavaScript 的语法在很大程度上是相同的,因为 Node.js 是基于 JavaScript 的运行时环境。然而,它们之间还是存在一些关键的区别,主要体现在以下几个方面:
JavaScript:
Node.js:
JavaScript:
Node.js:
JavaScript:
Node.js:
require
模块系统和 module.exports
导出机制。JavaScript:
Node.js:
在浏览器中,全局对象是 window
,而在 Node.js 中,全局对象是 global
。
// 浏览器端
console.log(window); // 输出: Window {...}
// Node.js 端
console.log(global); // 输出: Global {...}
JavaScript 在浏览器中没有原生的模块系统,而 Node.js 使用 CommonJS 规范。
// Node.js 模块导出
// math.js
exports.add = function(a, b) {
return a + b;
};
// 使用模块
// app.js
const math = require('./math');
console.log(math.add(2, 3)); // 输出: 5
虽然两者都支持异步编程,但 Node.js 更倾向于使用回调函数、Promise 和 async/await 来处理异步操作。
// Node.js 异步读取文件
const fs = require('fs');
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
问题:在 Node.js 中遇到 ReferenceError: window is not defined
错误。
原因:尝试在服务器端代码中使用浏览器特有的全局对象 window
。
解决方法:确保只在客户端代码中使用 window
对象,或者在服务器端代码中避免使用它。
if (typeof window !== 'undefined') {
// 客户端代码
console.log(window.innerWidth);
}
通过理解这些基础概念和区别,你可以更好地选择适合的技术栈来解决特定的问题。
领取专属 10元无门槛券
手把手带您无忧上云