《60天AI学习计划启动 | Day 02: Node.js 环境搭建与基础》

Day 02: Node.js 环境搭建与基础

📋 学习目标


🎯 核心学习内容

1. Node.js 简介

什么是 Node.js?

  • 基于 Chrome V8 引擎的 JavaScript 运行时
  • 让 JavaScript 可以在服务器端运行
  • 事件驱动、非阻塞 I/O

为什么选择 Node.js?

  • 与前端技术栈一致(JavaScript)
  • 生态丰富(npm 包多)
  • 适合 AI 应用开发(异步处理)

版本选择:

  • 推荐 LTS(长期支持版)
  • 当前推荐:Node.js 18.x 或 20.x
  • 使用 nvm 管理多版本

2. 环境安装

Windows 安装:

# 1. 下载安装包
访问 nodejs.org 下载 LTS 版本

# 2. 验证安装
node -v
npm -v

# 3. 配置镜像(可选,加速下载)
npm config set registry https://registry.npmmirror.com

使用 nvm 管理版本(推荐):

# Windows: 使用 nvm-windows
# 下载:github.com/coreybutler/nvm-windows

# 安装 Node.js
nvm install 18.17.0
nvm use 18.17.0

# 查看已安装版本
nvm list

3. npm 包管理基础

核心命令:

# 初始化项目
npm init -y

# 安装依赖
npm install package-name          # 生产依赖
npm install -D package-name      # 开发依赖
npm install -g package-name      # 全局安装

# 查看依赖
npm list
npm list --depth=0

# 更新依赖
npm update
npm outdated

# 卸载依赖
npm uninstall package-name

# 运行脚本
npm run script-name

package.json 说明:

{
  "name": "ai-frontend-project",
  "version": "1.0.0",
  "description": "AI学习项目",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "dev": "node --watch index.js"
  },
  "dependencies": {
    "openai": "^4.0.0"
  },
  "devDependencies": {
    "nodemon": "^3.0.0"
  }
}

4. Node.js 核心模块

fs 模块(文件系统):

const fs = require('fs').promises;

// 异步读取文件
async function readFile() {
  try {
    const data = await fs.readFile('test.txt', 'utf-8');
    console.log(data);
  } catch (error) {
    console.error('读取失败:', error);
  }
}

path 模块(路径处理):

const path = require('path');

// 路径拼接
const filePath = path.join(__dirname, 'data', 'test.json');
console.log(filePath); // /project/data/test.json

// 获取文件名
const fileName = path.basename(filePath);
console.log(fileName); // test.json

// 获取扩展名
const ext = path.extname(filePath);
console.log(ext); // .json

http 模块(HTTP 服务器):

const http = require('http');

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

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

process 模块(进程信息):

// 环境变量
console.log(process.env.NODE_ENV);

// 命令行参数
console.log(process.argv);

// 退出进程
process.exit(0);

5. 环境变量管理

使用 dotenv:

npm install dotenv

创建 .env 文件:

# .env
NODE_ENV=development
OPENAI_API_KEY=sk-your-api-key-here
PORT=3000

使用环境变量:

require('dotenv').config();
console.log(process.env.OPENAI_API_KEY);
console.log(process.env.PORT);

⚠️ 注意事项:

  • .env 文件不要提交到 Git
  • 添加到 .gitignore
  • 使用 .env.example 作为模板

🏗️ 实践作业

作业1:创建项目结构

项目结构:

ai-frontend-project/
├── .env                 # 环境变量(不提交)
├── .env.example         # 环境变量模板
├── .gitignore          # Git忽略文件
├── package.json        # 项目配置
├── README.md           # 项目说明
├── src/                # 源代码目录
│   ├── index.js        # 入口文件
│   ├── api/            # API相关
│   │   └── openai.js
│   └── utils/          # 工具函数
│       └── logger.js
└── test/               # 测试文件
    └── api.test.js

创建步骤:

# 1. 创建项目目录
mkdir ai-frontend-project
cd ai-frontend-project

# 2. 初始化项目
npm init -y

# 3. 安装基础依赖
npm install openai axios dotenv

# 4. 安装开发依赖
npm install -D nodemon

# 5. 创建目录结构
mkdir src src/api src/utils test

作业2:配置 package.json

修改 package.json:

{
  "name": "ai-frontend-project",
  "version": "1.0.0",
  "description": "AI学习项目 - 前端开发者的AI转型之路",
  "main": "src/index.js",
  "type": "module",
  "scripts": {
    "start": "node src/index.js",
    "dev": "nodemon src/index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": ["ai", "openai", "frontend"],
  "author": "你的名字",
  "license": "MIT",
  "dependencies": {
    "openai": "^4.20.0",
    "axios": "^1.6.0",
    "dotenv": "^16.3.1"
  },
  "devDependencies": {
    "nodemon": "^3.0.1"
  }
}

作业3:创建环境变量配置

.env.example:

# OpenAI API配置
OPENAI_API_KEY=your-api-key-here

# 服务器配置
PORT=3000
NODE_ENV=development

# 其他配置
LOG_LEVEL=info

.gitignore:

# 依赖
node_modules/

# 环境变量
.env
.env.local

# 日志
*.log
logs/

# 系统文件
.DS_Store
Thumbs.db

# IDE
.vscode/
.idea/
*.swp

作业4:创建基础文件

src/index.js:

import 'dotenv/config';
import { testOpenAI } from './api/openai.js';
import { logger } from './utils/logger.js';

async function main() {
  logger.info('🚀 AI项目启动');
  logger.info(`环境: ${process.env.NODE_ENV}`);
  
  // 检查环境变量
  if (!process.env.OPENAI_API_KEY) {
    logger.error('❌ 未找到 OPENAI_API_KEY,请检查 .env 文件');
    process.exit(1);
  }
  
  // 测试 OpenAI API
  await testOpenAI();
}

main().catch(error => {
  logger.error('程序异常:', error);
  process.exit(1);
});

src/api/openai.js:

import OpenAI from 'openai';
import { logger } from '../utils/logger.js';

const openai = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY
});

export async function testOpenAI() {
  try {
    logger.info('📡 测试 OpenAI API...');
    
    const completion = await openai.chat.completions.create({
      model: "gpt-3.5-turbo",
      messages: [
        {
          role: "system",
          content: "你是一个友好的AI助手"
        },
        {
          role: "user",
          content: "用一句话介绍Node.js"
        }
      ],
      temperature: 0.7
    });

    const response = completion.choices[0].message.content;
    const usage = completion.usage;
    
    logger.success('✅ API调用成功');
    logger.info(`回复: ${response}`);
    logger.info(`Token使用: ${JSON.stringify(usage)}`);
    
    return { response, usage };
  } catch (error) {
    logger.error('❌ API调用失败:', error.message);
    throw error;
  }
}

src/utils/logger.js:

const colors = {
  reset: '\x1b[0m',
  red: '\x1b[31m',
  green: '\x1b[32m',
  yellow: '\x1b[33m',
  blue: '\x1b[34m',
  cyan: '\x1b[36m'
};

export const logger = {
  info: (msg, ...args) => {
    console.log(`${colors.cyan}[INFO]${colors.reset}`, msg, ...args);
  },
  success: (msg, ...args) => {
    console.log(`${colors.green}[SUCCESS]${colors.reset}`, msg, ...args);
  },
  error: (msg, ...args) => {
    console.error(`${colors.red}[ERROR]${colors.reset}`, msg, ...args);
  },
  warn: (msg, ...args) => {
    console.warn(`${colors.yellow}[WARN]${colors.reset}`, msg, ...args);
  }
};

README.md:

# AI Frontend Project
AI学习项目 - 前端开发者的AI转型之路

## 项目结构

ai-frontend-project/
├── src/ # 源代码
├── test/ # 测试文件
└── .env # 环境变量(不提交)


## 快速开始
1. 安装依赖
   ```bash
   npm install
  1. 配置环境变量

    cp .env.example .env
    # 编辑 .env 文件,填入你的 API Key
    
  2. 运行项目

    npm start
    # 或开发模式(自动重启)
    npm run dev
    

学习进度


---

### 作业5:测试运行
**运行测试:**
```bash
# 开发模式运行
npm run dev

# 预期输出
[INFO] 🚀 AI项目启动
[INFO] 环境: development
[INFO] 📡 测试 OpenAI API...
[SUCCESS] ✅ API调用成功
[INFO] 回复: Node.js是一个基于Chrome V8引擎的JavaScript运行时...
[INFO] Token使用: {"prompt_tokens":20,"completion_tokens":30,"total_tokens":50}

⚠️ 遇到的问题

问题1:npm install 很慢

解决方案:

# 使用国内镜像
npm config set registry https://registry.npmmirror.com

# 或使用 cnpm
npm install -g cnpm --registry=https://registry.npmmirror.com
cnpm install

问题2:ES Module vs CommonJS

问题: Cannot use import statement outside a module

解决方案:

// package.json 添加
{
  "type": "module"
}
// 或使用 .mjs 扩展名
// 或使用 CommonJS (require/module.exports)

问题3:环境变量未加载

问题: process.env.OPENAI_API_KEY 为 undefined

解决方案:

// 确保在文件开头导入
import 'dotenv/config';

// 或
import dotenv from 'dotenv';
dotenv.config();

📊 学习总结

今日收获

✅ 成功搭建 Node.js 开发环境
✅ 掌握 npm 包管理基础
✅ 理解 Node.js 核心模块
✅ 创建完整的项目结构
✅ 配置环境变量管理

关键知识点

  1. Node.js 是 JavaScript 运行时,让 JS 可以在服务器运行
  2. npm 是包管理器,管理项目依赖
  3. 环境变量很重要,保护敏感信息
  4. 项目结构要清晰,便于维护和扩展

前端开发者的优势

✅ 熟悉 JavaScript,学习成本低
✅ 理解异步编程(Promise/async-await)
✅ 熟悉模块化开发(import/export)
✅ 可以直接复用前端技能

项目结构设计思路

src/          # 源代码集中管理
api/          # API相关功能模块化
utils/        # 工具函数复用
test/         # 测试文件分离

📅 明日计划

明天将学习:

期待明天的学习! 🚀


📚 参考资源


💻 代码仓库

项目已同步到 GitHub:

  • 仓库地址:[你的GitHub链接]
  • 今日提交:Day 02 - Node.js环境搭建

标签: #AI学习 #Node.js #npm #环境搭建 #学习笔记


💭 写在最后

今天完成了 Node.js 环境的搭建,虽然内容基础,但为后续的 AI 应用开发打下了坚实基础。项目结构已经搭建好,明天就可以开始创建后端 API 服务了!

继续加油! 💪

posted @ 2025-12-16 11:42  XiaoZhengTou  阅读(3)  评论(0)    收藏  举报