Node.js 基础教程

Node.js 基础教程

1. 什么是 Node.js?

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,允许你在服务器端运行 JavaScript 代码。它是开源的、跨平台的,并且非常适合构建高性能、可扩展的网络应用程序。

2. 安装 Node.js

2.1 下载安装

  1. 访问官方网站 https://nodejs.org/
  2. 选择适合你操作系统的长期支持(LTS)版本
  3. 下载并运行安装程序
  4. 安装完成后,打开命令行并验证安装:
bash 复制代码
node --version
npm --version

2.2 通过包管理器安装

Windows

使用 Chocolatey:

bash 复制代码
choco install nodejs-lts
macOS

使用 Homebrew:

bash 复制代码
brew install node
Linux (Ubuntu/Debian)
bash 复制代码
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs

3. 基本概念和语法

3.1 创建第一个 Node.js 程序

创建 hello.js 文件:

javascript 复制代码
console.log('Hello, Node.js!');

在命令行运行:

bash 复制代码
node hello.js

3.2 模块系统

CommonJS 模块导入导出

math.js

javascript 复制代码
function add(a, b) {
    return a + b;
}

function subtract(a, b) {
    return a - b;
}

module.exports = {
    add,
    subtract
};

app.js

javascript 复制代码
const math = require('./math');

console.log(math.add(5, 3));      // 输出: 8
console.log(math.subtract(10, 4)); // 输出: 6

3.3 异步编程

回调函数
javascript 复制代码
function fetchData(callback) {
    setTimeout(() => {
        callback('数据已获取');
    }, 2000);
}

fetchData((result) => {
    console.log(result);
});
Promise
javascript 复制代码
function fetchDataPromise() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('数据已获取');
        }, 2000);
    });
}

fetchDataPromise()
    .then(result => console.log(result))
    .catch(error => console.error(error));
Async/Await
javascript 复制代码
async function getData() {
    try {
        const result = await fetchDataPromise();
        console.log(result);
    } catch (error) {
        console.error(error);
    }
}

getData();

4. NPM(Node Package Manager)

4.1 初始化项目

bash 复制代码
mkdir my-project
cd my-project
npm init -y

4.2 安装依赖

bash 复制代码
# 安装生产依赖
npm install express

# 安装开发依赖
npm install --save-dev nodemon

# 全局安装
npm install -g nodemon

4.3 package.json 脚本

json 复制代码
{
  "scripts": {
    "start": "node app.js",
    "dev": "nodemon app.js",
    "test": "jest"
  }
}

5. 常用内置模块

5.1 文件系统(fs)

javascript 复制代码
const fs = require('fs');

// 同步读取文件
const content = fs.readFileSync('file.txt', 'utf8');

// 异步读取文件
fs.readFile('file.txt', 'utf8', (err, data) => {
    if (err) throw err;
    console.log(data);
});

5.2 路径(path)

javascript 复制代码
const path = require('path');

const filePath = path.join(__dirname, 'files', 'data.json');
console.log(filePath);

5.3 HTTP 模块

javascript 复制代码
const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World');
});

server.listen(3000, () => {
    console.log('服务器运行在 http://localhost:3000');
});

6. 搭建简单的 Web 服务器(Express)

6.1 安装 Express

bash 复制代码
npm install express

6.2 基本服务器

javascript 复制代码
const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
    res.send('Hello World!');
});

app.listen(port, () => {
    console.log(`服务器运行在 http://localhost:${port}`);
});

7. 最佳实践和建议

  1. 使用 constlet 替代 var
  2. 使用异步编程和 Promise
  3. 使用 async/await 处理异步操作
  4. 合理使用错误处理
  5. 保持代码模块化
  6. 使用 ESLint 进行代码风格检查

结语

Node.js 是现代 Web 开发不可或缺的技术。通过持续学习和实践,你将能够构建高效、可扩展的应用程序。

相关推荐
Hammer Ray1 天前
SourceMap知识点
javascript·sourcemap
CDwenhuohuo1 天前
微信小程序里用 setData() 修改数据并打印输出 的几种写法
javascript·微信小程序·小程序
前端一小卒1 天前
生产环境Sourcemap策略:从苹果事故看前端构建安全架构设计
前端·javascript
im_AMBER1 天前
React 18
前端·javascript·笔记·学习·react.js·前端框架
老前端的功夫1 天前
Vue2中key的深度解析:Diff算法的性能优化之道
前端·javascript·vue.js·算法·性能优化
集成显卡1 天前
AI取名大师 | PM2 部署 Bun.js 应用及配置 Let‘s Encrypt 免费 HTTPS 证书
开发语言·javascript·人工智能
脸大是真的好~1 天前
黑马JAVAWeb -Vue工程化-API风格 - 组合式API
前端·javascript·vue.js
我命由我123451 天前
CesiumJS 案例 P35:添加图片图层(添加图片数据)
开发语言·前端·javascript·css·html·html5·js
你挚爱的强哥1 天前
【sgMobileUploadTypeSelect】自定义组件:从底部弹出选择上传图片文件的方式【1、上传本地文件,2、拍摄上传】
前端·javascript·vue.js
fury_1231 天前
tsfile.raw提示
java·前端·javascript