Node.js简介
- Node.js不是语言,是JavaScript的运行环境
- 基于Chrome V8引擎,使JS可以脱离浏览器运行
- 异步非阻塞I/O模型,适合高并发场景
- 应用场景:Web服务、API开发、CLI工具、微服务等
第一个Node程序
创建项目结构
go
task-manager/
├── package.json
├── index.js
└── tasks.json 运行index.js后自动生成
package.json 配置
json
{
"name": "task-manager",
"version": "1.0.0",
"description": "命令行任务管理器",
"main": "index.js",
"bin": {
"task": "./index.js"
},
"scripts": {
"start": "node index.js"
}
}
index.js 内容
javascript
#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
// 任务文件路径
const TASK_FILE = path.join(__dirname, 'tasks.json');
// 初始化任务文件
function initTasks() {
if (!fs.existsSync(TASK_FILE)) {
fs.writeFileSync(TASK_FILE, JSON.stringify([], null, 2));
}
}
// 读取任务
function loadTasks() {
try {
const data = fs.readFileSync(TASK_FILE, 'utf8');
return JSON.parse(data);
} catch (error) {
return [];
}
}
// 保存任务
function saveTasks(tasks) {
fs.writeFileSync(TASK_FILE, JSON.stringify(tasks, null, 2));
}
// 添加任务
function addTask(description) {
const tasks = loadTasks();
const newTask = {
id: Date.now(),
description,
completed: false,
createdAt: new Date().toISOString()
};
tasks.push(newTask);
saveTasks(tasks);
console.log(`✅ 任务添加成功: ${description}`);
}
// 列出任务
function listTasks() {
const tasks = loadTasks();
if (tasks.length === 0) {
console.log("📝 还没有任务,快添加一个吧!");
return;
}
console.log("\n📋 你的任务列表:");
tasks.forEach((task, index) => {
const status = task.completed ? '✅' : '⏳';
console.log(`${index + 1}. ${status} ${task.description}`);
});
}
// 完成任务
function completeTask(index) {
const tasks = loadTasks();
if (index >= 0 && index < tasks.length) {
tasks[index].completed = true;
saveTasks(tasks);
console.log(`🎉 任务完成: ${tasks[index].description}`);
} else {
console.log("❌ 任务不存在");
}
}
// 删除任务
function deleteTask(index) {
const tasks = loadTasks();
if (index >= 0 && index < tasks.length) {
const deleted = tasks.splice(index, 1)[0];
saveTasks(tasks);
console.log(`🗑️ 任务删除: ${deleted.description}`);
} else {
console.log("❌ 任务不存在");
}
}
// 主函数
function main() {
initTasks();
const [,, command, ...args] = process.argv;
switch (command) {
case 'add':
if (args.length > 0) {
addTask(args.join(' '));
} else {
console.log("❌ 请提供任务描述");
}
break;
case 'list':
listTasks();
break;
case 'done':
if (args.length > 0) {
completeTask(parseInt(args[0]) - 1);
} else {
console.log("❌ 请提供任务编号");
}
break;
case 'delete':
if (args.length > 0) {
deleteTask(parseInt(args[0]) - 1);
} else {
console.log("❌ 请提供任务编号");
}
break;
default:
console.log(`
使用说明:
node index.js add <任务描述> 添加任务
node index.js list 列出所有任务
node index.js done <序号> 标记任务为完成
node index.js delete <序号> 删除任务
`);
}
}
main();
运行与测试
bash
# 添加任务
node index.js add "学习Node.js"
node index.js add "完成第一个项目"
# 查看任务
node index.js list
# 完成任务
node index.js done 1
# 删除任务
node index.js delete 2
知识点总结
-
CommonJS模块系统 :使用
require导入模块 -
核心模块 :
fs(文件系统)、path(路径处理) -
全局对象 :
process获取进程信息 -
JSON操作:读写JSON文件
-
命令行参数 :
process.argv处理用户输入