📜  开始 Node.js - Javascript (1)

📅  最后修改于: 2023-12-03 15:25:33.033000             🧑  作者: Mango

开始 Node.js - JavaScript

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,能够在服务器端运行 JavaScript。它提供了一种事件驱动、非阻塞式 I/O 的模型,使得其在网络编程和高并发场景下表现出色。本文将介绍如何开始 Node.js 编程。

安装 Node.js

在开始 Node.js 编程之前,需要先安装 Node.js。可以从官网下载 Node.js 并按照安装步骤进行安装。

Node.js 基础

Node.js 遵循 JavaScript 标准,因此 Node.js 编程与前端 JavaScript 编程语法大致相同。以下是一个 Hello World 示例:

// hello.js
console.log('Hello World!');

在命令行中运行 node hello.js,即可看到输出的 Hello World!

Node.js 可以读取文件、创建服务器、发送 HTTP 请求等。以下是一个读取文件的示例:

// readfile.js
const fs = require('fs');
fs.readFile('file.txt', function (err, data) {
  if (err) throw err;
  console.log(data.toString());
});

在命令行中运行 node readfile.js,即可读取 file.txt 中的内容并输出。

Node.js 还有其他许多用法,建议查阅官方文档 Node.js API

模块化开发

Node.js 使用模块系统来组织代码和抽象公用代码。每个 Node.js 模块都有自己的作用域,不会污染全局命名空间。以下是一个示例:

// math.js
function add(x, y) {
  return x + y;
}
function subtract(x, y) {
  return x - y;
}
module.exports = { add, subtract };
// main.js
const math = require('./math.js');
console.log(math.add(2, 3)); // 输出 5
console.log(math.subtract(5, 3)); // 输出 2

在 Node.js 中,module.exports 是一个特殊对象,用于导出模块中的变量和函数。可以通过 require 函数来引入其他模块。

异步编程

Node.js 的非阻塞式 I/O 模型使得其非常适合于处理高并发和 I/O 密集型应用。以下是一个示例:

// async.js
const fs = require('fs');
const path = require('path');
const dirPath = './';
// 读取当前目录下的所有文件
fs.readdir(dirPath, function (err, files) {
  if (err) throw err;
  files.forEach(function (file) {
    const filePath = path.join(dirPath, file);
    // 判断文件是否为目录
    fs.stat(filePath, function (err, stats) {
      if (err) throw err;
      if (stats.isDirectory()) {
        console.log(filePath + ' is a directory.');
      } else {
        console.log(filePath + ' is a file.');
      }
    });
  });
});

在上述例子中,fs.readdirfs.stat 方法都是异步的,不会阻塞程序的执行。

总结

本文介绍了如何开始 Node.js 编程,涵盖了安装、基础语法、模块化开发和异步编程等方面。Node.js 是一个非常强大和实用的工具,希望本文对您有所帮助。