当前位置: 首页 > news >正文

Node.js基础用法

一、基础用法与核心模块

1. 运行 Node.js 脚本

bash

# 运行 JS 文件
node script.js# 进入交互式环境(REPL)
node
2. 核心模块示例
文件系统(fs 模块)

javascript

const fs = require('fs').promises; // 异步 Promise 版本
const path = require('path');// 读取文件
async function readFile() {try {const content = await fs.readFile(path.join(__dirname, 'test.txt'), 'utf8');console.log(content);} catch (err) {console.error('读取失败:', err);}
}// 写入文件
async function writeFile() {try {await fs.writeFile('output.txt', 'Hello Node.js', 'utf8');console.log('写入成功');} catch (err) {console.error('写入失败:', err);}
}
HTTP 服务器(http 模块)

javascript

const http = require('http');const server = http.createServer((req, res) => {res.writeHead(200, { 'Content-Type': 'text/plain' });res.end('Hello World\n');
});server.listen(3000, () => {console.log('服务器运行在 http://localhost:3000');
});
路径处理(path 模块)

javascript

const path = require('path');// 拼接路径
const fullPath = path.join(__dirname, 'src', 'app.js');
console.log(fullPath); // 输出绝对路径// 解析路径
console.log(path.parse(fullPath)); // 输出路径详情(root、dir、base等)

二、包管理(npm/yarn/pnpm)

1. 初始化项目

bash

# 创建 package.json
npm init -y  # 快速生成默认配置
yarn init -y
2. 安装依赖

bash

# 生产依赖(会写入 dependencies)
npm install lodash
yarn add lodash# 开发依赖(会写入 devDependencies)
npm install --save-dev eslint
yarn add --dev eslint# 全局安装
npm install -g nodemon
yarn global add nodemon
3. 运行脚本(package.json)

在 package.json 中定义脚本:

json

{"scripts": {"start": "node server.js","dev": "nodemon server.js",  // 热重载开发"test": "jest"}
}

运行脚本:

bash

npm run start  # 或 npm start(简写)
yarn dev

三、模块化系统(CommonJS 与 ES Modules)

1. CommonJS 模块(默认)

javascript

// 导出(module.exports)
// math.js
function add(a, b) { return a + b; }
module.exports = { add };// 导入(require)
// app.js
const { add } = require('./math');
console.log(add(1, 2)); // 3
2. ES Modules(需配置)

在 package.json 中添加:

json

{ "type": "module" }

使用 ES 模块语法:

javascript

// 导出(export)
// math.js
export function add(a, b) { return a + b; }// 导入(import)
// app.js
import { add } from './math.js'; // 必须带 .js 后缀
console.log(add(1, 2)); // 3

四、常用开发工具与配置

1. 热重载(nodemon)

监控文件变化并自动重启服务:

bash

# 安装
npm install -g nodemon# 运行
nodemon server.js  # 替代 node server.js
2. 环境变量(dotenv)

管理环境变量(如数据库密码):

bash

npm install dotenv

创建 .env 文件:

env

DB_HOST=localhost
DB_PORT=3306

在代码中使用:

javascript

require('dotenv').config();
console.log(process.env.DB_HOST); // localhost
3. 调试配置(VS Code)

创建 .vscode/launch.json

json

{"version": "0.2.0","configurations": [{"type": "node","request": "launch","name": "启动程序","program": "${workspaceFolder}/server.js"}]
}

按 F5 启动调试。

五、常用框架与库

1. Web 框架
  • Express(轻量):

    javascript

    const express = require('express');
    const app = express();app.get('/', (req, res) => {res.send('Hello Express');
    });app.listen(3000, () => console.log('服务启动在 3000 端口'));
    
  • Koa(Express 团队开发,更现代):

    javascript

    const Koa = require('koa');
    const app = new Koa();app.use(ctx => {ctx.body = 'Hello Koa';
    });app.listen(3000);
    
2. 数据库操作
  • MySQL(使用 mysql2):

    javascript

    const mysql = require('mysql2/promise');async function query() {const connection = await mysql.createConnection({host: 'localhost',user: 'root',database: 'test'});const [rows] = await connection.execute('SELECT * FROM users');console.log(rows);
    }
    
  • MongoDB(使用 mongoose):

    javascript

    const mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost:27017/test');const User = mongoose.model('User', { name: String });
    const user = new User({ name: 'Node.js' });
    await user.save();
    

六、命令行工具开发

使用 commander 库快速开发 CLI:

bash

npm install commander

示例(cli.js):

javascript

const { program } = require('commander');program.version('1.0.0').command('greet <name>').description('问候用户').action((name) => {console.log(`Hello, ${name}!`);});program.parse(process.argv);

运行:

bash

node cli.js greet World  # 输出 "Hello, World!"

七、常用配置文件

  1. .npmrc(npm 配置):

    ini

    registry=https://registry.npmmirror.com  # 切换为淘宝镜像
    
  2. eslintrc.js(代码规范):

    javascript

    module.exports = {env: { node: true, es2021: true },extends: 'eslint:recommended',parserOptions: { ecmaVersion: 'latest' },
    };
    
  3. jest.config.js(测试配置):

    javascript

    module.exports = {testEnvironment: 'node',
    };
    

http://www.dtcms.com/a/282212.html

相关文章:

  • AJAX 技术
  • ubuntu+windows双系统恢复
  • 【官方回复】七牛云开启referer防掉链后小程序访问七牛云图片显示403
  • Golang学习之常见开发陷阱完全手册
  • CocosCreator3.8.x——多语言功能(简单版)
  • STM32CubeIDE生成 .hex 文件
  • Android 15 源码修改:为第三方应用提供截屏接口
  • 设计模式三:观察者模式 (Observer Pattern)
  • ble连接参数分析
  • 【基于PaddlePaddle训练的车牌识别系统】
  • 代码随想录算法训练营完结篇
  • 【BUG】ValueError: Unable to find out axis 2.0 in start_ornt
  • TCP重传
  • TCP 拥塞控制算法 —— 慢启动(Slow Start)笔记
  • Python练习(4)Python参数传递的20道核心实战练习题(含答案与深度解析)(上)
  • Hadoop(二)
  • neovim的文件结构
  • 数据结构:栈(区间问题)
  • 2025秋招突围战:AI智能监考如何重构远程笔试公平防线?
  • API Gateway HTTP API 控制客户端访问 IP 源
  • 【用图片内容改名】水印相机拍的照片,将照片的名字批量改为水印内容,根据水印内容批量命名图片的操作步骤和注意事项
  • Java大厂面试实录:从Spring Boot到AI大模型的深度技术拷问
  • SM3算法工程中添加bouncycastle.bcprov.jdk15on库
  • 【数据结构】双链表--从原理到(用C语言)实现全解析
  • 【Linux 学习指南】网络编程基础:从 IP、端口到 Socket 与 TCP/UDP 协议详解
  • 第二十一 篇 PDF文档自动化:Python一键合并、分割、水印、提取与加密解密!你的PDF全能管家!
  • [AI-video] 字幕服务 | 视频素材服务 | 视频生成服务
  • MySQL索引及其底层原理(上)(10)
  • C++ 计数排序、归并排序、快速排序
  • SpringCloud之Config