Search K
Appearance
Appearance
📊 SEO元描述:2024年最新JavaScript开发环境搭建教程,详解Node.js安装配置、VS Code编辑器设置、浏览器开发工具使用。包含完整的JavaScript开发工具链配置,适合JavaScript零基础初学者快速搭建专业开发环境。
核心关键词:JavaScript开发环境搭建2024、Node.js安装教程、VS Code配置指南、JavaScript开发工具、前端开发环境、JavaScript IDE推荐、开发环境配置
长尾关键词:JavaScript开发环境怎么搭建、Node.js怎么安装、VS Code怎么配置、JavaScript开发需要什么软件、前端开发工具推荐、JavaScript编程环境
通过本节2024年JavaScript开发环境搭建教程,你将系统性掌握:
浏览器开发者控制台是每个JavaScript开发者必须掌握的核心工具,也是JavaScript开发环境搭建的第一步:
💡 JavaScript学习建议:掌握浏览器控制台是学习JavaScript的基础,建议每个初学者都要熟练使用。
// 🎯 开启Chrome开发者工具的多种方法
// 方法1: 快捷键组合(最快速)
// Windows/Linux: F12 或 Ctrl + Shift + I 或 Ctrl + Shift + J(直接打开控制台)
// macOS: Cmd + Option + I 或 Cmd + Option + J(直接打开控制台)
// 方法2: 右键上下文菜单
// 在页面任意位置右键 → 检查元素 → Console标签
// 方法3: 浏览器菜单栏
// Chrome: 更多工具 → 开发者工具 → Console
// Edge: 更多工具 → 开发者工具 → Console
// 🔴 专业技巧:直接打开控制台面板
// Ctrl + Shift + J (Windows/Linux)
// Cmd + Option + J (macOS)// Firefox Web Console开启方法
// 快捷键: F12 或 Ctrl + Shift + K (Windows/Linux)
// Cmd + Option + K (macOS)
// Firefox特色功能:
// - 多行编辑器模式
// - CSS编辑器
// - 网络性能分析// Safari开发菜单启用步骤:
// 1. Safari菜单 → 偏好设置 → 高级标签
// 2. 勾选"在菜单栏中显示开发菜单"
// 3. 快捷键: Cmd + Option + C
// Safari独有特性:
// - iOS设备远程调试
// - WebKit引擎性能分析// ===== 基础输出方法 =====
console.log("这是普通信息输出");
console.info("这是信息提示(蓝色图标)");
console.warn("这是警告信息(黄色图标)");
console.error("这是错误信息(红色图标)");
// ===== 高级输出技巧 =====
// 格式化输出多个参数
console.log("用户信息:", "姓名:", "张三", "年龄:", 25, "职业:", "程序员");
// 使用占位符格式化输出
console.log("用户%s今年%d岁,工资是%f元", "李四", 28, 15000.50);
// 样式化控制台输出
console.log("%c这是红色加粗文字", "color: red; font-weight: bold; font-size: 16px;");
console.log("%c这是蓝色背景文字", "background: blue; color: white; padding: 5px 10px;");
// 清空控制台
console.clear(); // 或使用快捷键 Ctrl+L / Cmd+K// ===== 对象和数组的美化显示 =====
let userProfile = {
personal: {
name: "王小明",
age: 30,
email: "wangxiaoming@example.com"
},
work: {
company: "科技有限公司",
position: "前端开发工程师",
salary: 18000
},
skills: ["JavaScript", "React", "Vue", "Node.js"],
projects: [
{name: "电商平台", status: "已完成", duration: "3个月"},
{name: "管理系统", status: "进行中", duration: "2个月"}
]
};
// 普通输出
console.log(userProfile);
// 表格化显示(推荐用于数组和对象)
console.table(userProfile.skills);
console.table(userProfile.projects);
// 分组显示复杂信息
console.group("👤 用户详细信息");
console.log("个人信息:", userProfile.personal);
console.log("工作信息:", userProfile.work);
console.groupCollapsed("技能列表"); // 折叠的分组
userProfile.skills.forEach(skill => console.log(`✅ ${skill}`));
console.groupEnd();
console.groupEnd();
// 目录结构显示
console.dir(document.body); // 显示DOM对象的所有属性// ===== JavaScript实时计算器功能 =====
// 基础数学运算
2 + 3 * 4; // 14
Math.PI; // 3.141592653589793
Math.random(); // 0.0-1.0之间的随机数
Math.floor(Math.random() * 100); // 0-99的随机整数
// 字符串处理
"JavaScript".toUpperCase(); // "JAVASCRIPT"
"Hello World".split(" "); // ["Hello", "World"]
"前端开发".length; // 4
// 日期时间处理
new Date(); // 当前日期时间
new Date().getFullYear(); // 当前年份
new Date().toLocaleDateString(); // 本地化日期格式
// 🔴 **控制台独有技巧**:使用 $_ 获取上一个表达式的结果
10 + 20; // 30
$_; // 30(上一个结果)
$_ * 2; // 60(使用上一个结果进行计算)
// 定义和调用函数
function calculateBMI(weight, height) {
const bmi = weight / (height * height);
return {
bmi: bmi.toFixed(2),
category: bmi < 18.5 ? "偏瘦" : bmi < 24 ? "正常" : bmi < 28 ? "超重" : "肥胖"
};
}
calculateBMI(70, 1.75); // 计算BMI指数// ===== 控制台中的DOM操作实战 =====
// 选择页面元素(在任意网页上都可以尝试)
document.querySelector('title'); // 选择title标签
document.querySelector('h1'); // 选择第一个h1标签
document.querySelectorAll('p'); // 选择所有p标签
// 🔴 **控制台专用选择器快捷方式**
$('#myId'); // 相当于 document.getElementById('myId')
$('.myClass'); // 相当于 document.querySelector('.myClass')
$$('.myClass'); // 相当于 document.querySelectorAll('.myClass')
$x('//div[@class="content"]'); // XPath选择器
// 动态修改页面内容(教学演示)
document.title = "我通过控制台修改了标题!";
document.body.style.backgroundColor = "lightblue";
document.body.style.fontFamily = "Arial, sans-serif";
// 创建新元素并添加到页面
const newElement = document.createElement('div');
newElement.innerHTML = `
<h2 style="color: red; text-align: center;">
🎉 这是通过控制台添加的元素!
</h2>
<p style="text-align: center;">
现在时间: ${new Date().toLocaleString()}
</p>
`;
newElement.style.cssText = `
position: fixed;
top: 10px;
right: 10px;
background: white;
border: 2px solid #007acc;
border-radius: 8px;
padding: 15px;
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
z-index: 9999;
`;
document.body.appendChild(newElement);
// 🔴 **注意**:某些网站有内容安全策略(CSP),可能无法执行这些操作// ===== 控制台高级调试技巧 =====
// 1. 性能监测
console.time('数组处理性能测试');
const largeArray = Array.from({length: 100000}, (_, i) => i);
const processedArray = largeArray.filter(n => n % 2 === 0).map(n => n * 2);
console.timeEnd('数组处理性能测试'); // 显示执行时间
// 2. 内存使用监控
console.memory; // 显示内存使用情况(Chrome)
// 3. 断言测试
console.assert(2 + 2 === 4, "数学计算正确"); // 不输出(断言通过)
console.assert(2 + 2 === 5, "数学计算错误"); // 输出错误信息
// 4. 计数器功能
console.count("用户点击"); // 每调用一次计数+1
console.count("用户点击");
console.count("用户点击");
console.countReset("用户点击"); // 重置计数器
// 5. 堆栈跟踪
function outerFunction() {
function innerFunction() {
console.trace("跟踪函数调用栈"); // 显示完整的调用路径
}
innerFunction();
}
outerFunction();
// 6. 复制数据到剪贴板(Chrome独有)
const userData = {name: "测试用户", id: 12345};
copy(userData); // 将对象复制到剪贴板
console.log("数据已复制到剪贴板,可以粘贴到其他地方");Visual Studio Code(简称VS Code)是微软开发的免费开源代码编辑器,已成为JavaScript开发和前端开发的事实标准工具,也是JavaScript开发环境搭建的核心组件。
💡 为什么推荐VS Code:根据2024年开发者调查,VS Code是最受欢迎的JavaScript开发工具,市场占有率超过70%。
# 官方网站下载(推荐)
https://code.visualstudio.com/
# 选择对应操作系统版本:
# - Windows: .exe安装程序或.zip便携版
# - macOS: .dmg安装包或通过App Store
# - Linux: .deb、.rpm包或.tar.gz归档
# macOS Homebrew安装(命令行方式)
brew install --cask visual-studio-code
# Windows Chocolatey安装
choco install vscode
# Ubuntu/Debian apt安装
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | sudo tee /etc/apt/sources.list.d/vscode.list
sudo apt update
sudo apt install code// 1. 打开VS Code
// 2. 按Ctrl/Cmd + Shift + P 打开命令面板
// 3. 输入"Extensions: Install Extensions"
// 4. 搜索"Chinese (Simplified)"
// 5. 安装"Chinese (Simplified) Language Pack for Visual Studio Code"
// 6. 重启VS Code即可显示中文界面
// 或者通过命令行安装
code --install-extension MS-CEINTL.vscode-language-pack-zh-hans按Ctrl/Cmd + ,打开设置,或直接编辑配置文件:
{
// ===== 字体和显示设置 =====
"editor.fontSize": 14,
"editor.fontFamily": "'JetBrains Mono', 'Fira Code', 'Cascadia Code', Consolas, 'Courier New', monospace",
"editor.fontLigatures": true, // 启用字体连字
"editor.lineHeight": 1.6, // 行高设置
"editor.letterSpacing": 0.5, // 字母间距
// ===== 缩进和格式化设置 =====
"editor.tabSize": 4, // Tab大小
"editor.insertSpaces": true, // 使用空格替代Tab
"editor.detectIndentation": false, // 不自动检测缩进
"editor.wordWrap": "on", // 自动换行
"editor.wordWrapColumn": 120, // 换行列数
// ===== 编辑器行为设置 =====
"editor.lineNumbers": "on", // 显示行号
"editor.minimap.enabled": true, // 显示代码缩略图
"editor.cursorBlinking": "smooth", // 光标闪烁样式
"editor.cursorSmoothCaretAnimation": true, // 光标移动动画
"editor.smoothScrolling": true, // 平滑滚动
// ===== 自动保存和格式化 =====
"files.autoSave": "afterDelay", // 自动保存
"files.autoSaveDelay": 1000, // 自动保存延迟(毫秒)
"editor.formatOnSave": true, // 保存时自动格式化
"editor.formatOnPaste": true, // 粘贴时自动格式化
"editor.formatOnType": true, // 输入时自动格式化
// ===== JavaScript特定设置 =====
"javascript.updateImportsOnFileMove.enabled": "always",
"typescript.updateImportsOnFileMove.enabled": "always",
"javascript.suggest.autoImports": true,
"typescript.suggest.autoImports": true,
// ===== 工作区和文件设置 =====
"workbench.startupEditor": "newUntitledFile", // 启动时打开新文件
"workbench.colorTheme": "One Dark Pro", // 主题设置
"workbench.iconTheme": "material-icon-theme", // 图标主题
"files.trimTrailingWhitespace": true, // 删除行尾空格
"files.insertFinalNewline": true, // 文件末尾插入空行
// ===== 终端设置 =====
"terminal.integrated.fontSize": 12,
"terminal.integrated.fontFamily": "JetBrains Mono, Consolas",
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
}// 1. JavaScript (ES6) code snippets
// 插件ID: xabikos.JavaScriptSnippets
// 功能:提供ES6+代码片段和自动补全
// 使用示例:
clg + Tab // 自动生成 console.log()
fre + Tab // 自动生成 forEach循环
met + Tab // 自动生成对象方法
arfn + Tab // 自动生成箭头函数
// 2. Auto Rename Tag
// 插件ID: formulahendry.auto-rename-tag
// 功能:自动重命名HTML标签对
// 使用:修改开始标签时,结束标签自动同步
// 3. Bracket Pair Colorizer 2
// 插件ID: CoenraadS.bracket-pair-colorizer-2
// 功能:括号配对彩色显示,增强代码可读性
// 4. Live Server
// 插件ID: ritwickdey.LiveServer
// 功能:本地开发服务器,实时预览
// 使用:右键HTML文件 → "Open with Live Server"// 1. ESLint - JavaScript代码检查
// 插件ID: dbaeumer.vscode-eslint
// 功能:实时检查JavaScript代码质量和语法错误
// 配置示例:
{
"eslint.autoFixOnSave": true,
"eslint.validate": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact"
]
}
// 2. Prettier - Code formatter
// 插件ID: esbenp.prettier-vscode
// 功能:代码自动格式化
// 配置示例:
{
"prettier.singleQuote": false,
"prettier.semi": true,
"prettier.tabWidth": 4,
"prettier.trailingComma": "es5"
}
// 3. Better Comments
// 插件ID: aaron-bond.better-comments
// 功能:增强注释显示效果
// 使用示例:
// ! 重要注释 (红色)
// ? 疑问注释 (蓝色)
// TODO: 待办注释 (橙色)
// * 高亮注释 (绿色)// 推荐编程主题
// 1. One Dark Pro - 最受欢迎的暗色主题
// 2. Material Theme - Material Design风格
// 3. Dracula Official - 经典Dracula配色
// 4. Night Owl - 适合夜间编程
// 5. Monokai Pro - 专业版Monokai主题
// 推荐图标主题
// 1. Material Icon Theme - 丰富的Material风格图标
// 2. VSCode Icons - VS Code官方图标扩展
// 3. file-icons - 基于Atom的文件图标// ===== 文件和项目操作 =====
// Ctrl/Cmd + N 新建文件
// Ctrl/Cmd + O 打开文件
// Ctrl/Cmd + S 保存文件
// Ctrl/Cmd + Shift + S 另存为
// Ctrl/Cmd + W 关闭文件
// Ctrl/Cmd + Shift + T 重新打开关闭的文件
// ===== 编辑操作 =====
// Ctrl/Cmd + Z 撤销
// Ctrl/Cmd + Y 重做 (Windows)
// Ctrl/Cmd + Shift + Z 重做 (macOS)
// Ctrl/Cmd + X 剪切
// Ctrl/Cmd + C 复制
// Ctrl/Cmd + V 粘贴
// Ctrl/Cmd + D 选择相同单词
// Ctrl/Cmd + Shift + L 选择所有相同单词
// ===== 代码编辑高级技巧 =====
// Alt + ↑/↓ 移动当前行
// Shift + Alt + ↑/↓ 复制当前行
// Ctrl/Cmd + L 选择整行
// Ctrl/Cmd + / 切换行注释
// Shift + Alt + A 切换块注释
// Ctrl/Cmd + [/] 增加/减少缩进
// ===== 导航和搜索 =====
// Ctrl/Cmd + F 查找
// Ctrl/Cmd + H 替换
// Ctrl/Cmd + Shift + F 全局搜索
// Ctrl/Cmd + G 跳转到指定行
// Ctrl/Cmd + P 快速打开文件
// Ctrl/Cmd + Shift + P 命令面板
// ===== 多光标编辑 =====
// Alt + Click 添加光标
// Ctrl + Alt + ↑/↓ 在上/下行添加光标
// Ctrl/Cmd + Shift + L 为所有选中内容添加光标// 创建自定义JavaScript代码片段
// 文件 → 首选项 → 配置用户代码片段 → JavaScript
{
"Console Log": {
"prefix": "clog",
"body": [
"console.log('$1:', $1);"
],
"description": "带标签的console.log"
},
"Function": {
"prefix": "func",
"body": [
"function ${1:functionName}(${2:params}) {",
"\t${3:// function body}",
"\treturn ${4:result};",
"}"
],
"description": "创建函数"
},
"Arrow Function": {
"prefix": "arfn",
"body": [
"const ${1:functionName} = (${2:params}) => {",
"\t${3:// function body}",
"\treturn ${4:result};",
"};"
],
"description": "创建箭头函数"
},
"Try Catch": {
"prefix": "tryc",
"body": [
"try {",
"\t${1:// code that may throw}",
"} catch (${2:error}) {",
"\tconsole.error('${3:Error message}:', ${2:error});",
"\t${4:// error handling}",
"}"
],
"description": "Try-Catch错误处理"
}
}Node.js是什么?Node.js是基于Chrome V8 JavaScript引擎构建的JavaScript运行时环境,让JavaScript突破了浏览器的限制,能够在服务器端、桌面应用、命令行工具等场景中运行,是JavaScript开发环境搭建的重要组成部分。
# 访问Node.js官方网站
https://nodejs.org/
# 版本选择建议:
# LTS (Long Term Support) - 长期支持版本,稳定可靠,适合生产环境
# Current - 最新版本,包含最新特性,适合尝鲜
# 下载适合操作系统的安装包:
# Windows: .msi安装程序(推荐)或.zip便携版
# macOS: .pkg安装程序
# Linux: 编译版二进制文件或源码
# 安装后验证
node --version # 显示Node.js版本
npm --version # 显示npm版本# macOS - Homebrew安装
brew install node
# Windows - Chocolatey安装
choco install nodejs
# Windows - Scoop安装
scoop install nodejs
# Ubuntu/Debian - apt安装
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
# CentOS/RHEL - yum安装
curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -
sudo yum install -y nodejs
# Arch Linux - pacman安装
sudo pacman -S nodejs npm# ===== nvm (Node Version Manager) 安装和使用 =====
# macOS/Linux安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# 或使用wget
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# 重启终端或执行
source ~/.bashrc
# Windows用户使用nvm-windows
# 下载地址:https://github.com/coreybutler/nvm-windows/releases
# 下载nvm-setup.zip并安装
# ===== nvm常用命令 =====
nvm --version # 查看nvm版本
nvm list-remote # 查看可安装的Node.js版本
nvm install --lts # 安装最新LTS版本
nvm install 18.17.0 # 安装指定版本
nvm list # 查看已安装版本
nvm use 18.17.0 # 切换到指定版本
nvm current # 查看当前使用版本
nvm alias default 18.17.0 # 设置默认版本
nvm uninstall 16.14.0 # 卸载指定版本
# ===== 实际使用示例 =====
# 为不同项目使用不同Node.js版本
cd project-old
echo "14.21.3" > .nvmrc # 创建版本配置文件
nvm use # 自动使用.nvmrc中的版本
cd project-new
echo "18.17.0" > .nvmrc
nvm use# ===== 基础版本信息检查 =====
node --version # 期望输出:v18.17.0 或更高
npm --version # 期望输出:9.6.7 或更高
npx --version # npx是npm 5.2+自带的包执行器
# ===== Node.js详细信息 =====
node -p "process.version" # Node.js版本
node -p "process.platform" # 操作系统平台
node -p "process.arch" # CPU架构
node -p "process.versions" # 详细版本信息
# ===== npm配置信息 =====
npm config list # 查看所有npm配置
npm config get registry # 查看当前镜像源
npm config get prefix # 查看全局安装路径
npm root -g # 查看全局模块安装路径# ===== 配置淘宝镜像源(推荐) =====
npm config set registry https://registry.npmmirror.com
# 验证镜像源设置
npm config get registry
# 期望输出:https://registry.npmmirror.com
# ===== 其他镜像源选择 =====
# 官方源(默认,海外用户)
npm config set registry https://registry.npmjs.org
# 腾讯云镜像
npm config set registry https://mirrors.cloud.tencent.com/npm/
# 华为云镜像
npm config set registry https://mirrors.huaweicloud.com/repository/npm/
# ===== 安装cnpm(淘宝镜像的npm客户端) =====
npm install -g cnpm --registry=https://registry.npmmirror.com
# 使用cnpm代替npm
cnpm install lodash # 使用cnpm安装包
cnpm --version # 查看cnpm版本
# ===== 测试安装速度 =====
time npm install lodash # 测试npm安装速度
time cnpm install moment # 测试cnpm安装速度# ===== 创建项目目录结构 =====
mkdir my-first-nodejs-project
cd my-first-nodejs-project
# ===== 初始化npm项目 =====
npm init -y # 快速初始化,使用默认配置
# 或交互式初始化
npm init
# 按提示输入:
# - package name: (项目名称)
# - version: (版本号,默认1.0.0)
# - description: (项目描述)
# - entry point: (入口文件,默认index.js)
# - test command: (测试命令)
# - git repository: (Git仓库地址)
# - keywords: (关键词)
# - author: (作者)
# - license: (许可证,默认ISC){
"name": "my-first-nodejs-project",
"version": "1.0.0",
"description": "我的第一个Node.js项目",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "node --watch index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": ["nodejs", "javascript", "tutorial"],
"author": "你的名字 <your.email@example.com>",
"license": "MIT",
"dependencies": {},
"devDependencies": {}
}// index.js - 主应用文件
const fs = require('fs');
const path = require('path');
const http = require('http');
const url = require('url');
// ===== 应用配置 =====
const config = {
port: process.env.PORT || 3000,
host: 'localhost',
appName: 'My First Node.js App',
version: '1.0.0'
};
// ===== 工具函数 =====
function logMessage(message, type = 'INFO') {
const timestamp = new Date().toLocaleString();
const logEntry = `[${timestamp}] [${type}] ${message}`;
console.log(logEntry);
// 同时写入日志文件
const logDir = path.join(__dirname, 'logs');
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir);
}
const logFile = path.join(logDir, `app-${new Date().toISOString().split('T')[0]}.log`);
fs.appendFileSync(logFile, logEntry + '\n');
}
function getSystemInfo() {
return {
nodeVersion: process.version,
platform: process.platform,
architecture: process.arch,
uptime: process.uptime(),
memoryUsage: process.memoryUsage(),
cpuUsage: process.cpuUsage()
};
}
// ===== HTTP服务器创建 =====
const server = http.createServer((req, res) => {
const parsedUrl = url.parse(req.url, true);
const pathname = parsedUrl.pathname;
const query = parsedUrl.query;
// 设置响应头
res.setHeader('Content-Type', 'text/html; charset=utf-8');
res.setHeader('Access-Control-Allow-Origin', '*');
logMessage(`${req.method} ${pathname} - ${req.headers['user-agent']}`);
// 路由处理
switch (pathname) {
case '/':
handleHomePage(res);
break;
case '/api/info':
handleApiInfo(res);
break;
case '/api/time':
handleApiTime(res);
break;
case '/api/calculate':
handleApiCalculate(res, query);
break;
default:
handle404(res, pathname);
break;
}
});
// ===== 路由处理函数 =====
function handleHomePage(res) {
const html = `
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>${config.appName}</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 20px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
}
.container {
background: rgba(255,255,255,0.1);
padding: 30px;
border-radius: 15px;
backdrop-filter: blur(10px);
}
.api-list {
background: rgba(255,255,255,0.2);
padding: 20px;
border-radius: 10px;
margin: 20px 0;
}
.api-item {
margin: 10px 0;
padding: 10px;
background: rgba(255,255,255,0.1);
border-radius: 5px;
}
a {
color: #ffd700;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<div class="container">
<h1>🎉 欢迎来到 ${config.appName}!</h1>
<p>这是一个使用Node.js构建的Web应用程序示例。</p>
<div class="api-list">
<h2>🔗 可用的API接口:</h2>
<div class="api-item">
<strong>📊 系统信息:</strong>
<a href="/api/info" target="_blank">/api/info</a>
</div>
<div class="api-item">
<strong>🕐 当前时间:</strong>
<a href="/api/time" target="_blank">/api/time</a>
</div>
<div class="api-item">
<strong>🧮 计算器:</strong>
<a href="/api/calculate?a=10&b=5&op=add" target="_blank">/api/calculate?a=10&b=5&op=add</a>
</div>
</div>
<div class="api-list">
<h2>📋 系统状态:</h2>
<p><strong>Node.js版本:</strong> ${process.version}</p>
<p><strong>运行平台:</strong> ${process.platform}</p>
<p><strong>启动时间:</strong> ${new Date().toLocaleString()}</p>
</div>
</div>
<script>
// 客户端JavaScript
console.log('🚀 Node.js应用前端脚本已加载');
console.log('📡 可以通过fetch调用API接口');
// 示例:调用API
fetch('/api/time')
.then(response => response.json())
.then(data => {
console.log('⏰ 服务器时间:', data);
})
.catch(error => {
console.error('❌ API调用失败:', error);
});
</script>
</body>
</html>
`;
res.writeHead(200);
res.end(html);
}
function handleApiInfo(res) {
const systemInfo = getSystemInfo();
const apiResponse = {
app: {
name: config.appName,
version: config.version,
environment: process.env.NODE_ENV || 'development'
},
system: systemInfo,
timestamp: new Date().toISOString()
};
res.setHeader('Content-Type', 'application/json');
res.writeHead(200);
res.end(JSON.stringify(apiResponse, null, 2));
}
function handleApiTime(res) {
const now = new Date();
const timeInfo = {
timestamp: now.getTime(),
iso: now.toISOString(),
local: now.toLocaleString(),
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
day: now.toLocaleDateString('zh-CN', { weekday: 'long' }),
formatted: {
date: now.toLocaleDateString(),
time: now.toLocaleTimeString(),
year: now.getFullYear(),
month: now.getMonth() + 1,
day: now.getDate(),
hour: now.getHours(),
minute: now.getMinutes(),
second: now.getSeconds()
}
};
res.setHeader('Content-Type', 'application/json');
res.writeHead(200);
res.end(JSON.stringify(timeInfo, null, 2));
}
function handleApiCalculate(res, query) {
const { a, b, op } = query;
const numA = parseFloat(a);
const numB = parseFloat(b);
let result = {
input: { a: numA, b: numB, operation: op },
output: null,
error: null
};
if (isNaN(numA) || isNaN(numB)) {
result.error = '参数a和b必须是有效数字';
} else {
switch (op) {
case 'add':
result.output = numA + numB;
break;
case 'subtract':
result.output = numA - numB;
break;
case 'multiply':
result.output = numA * numB;
break;
case 'divide':
if (numB === 0) {
result.error = '除数不能为零';
} else {
result.output = numA / numB;
}
break;
default:
result.error = '不支持的操作,支持:add, subtract, multiply, divide';
}
}
res.setHeader('Content-Type', 'application/json');
res.writeHead(result.error ? 400 : 200);
res.end(JSON.stringify(result, null, 2));
}
function handle404(res, pathname) {
const html = `
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>404 - 页面未找到</title>
<style>
body {
font-family: Arial, sans-serif;
text-align: center;
padding: 50px;
background: #f5f5f5;
}
.error-container {
background: white;
padding: 40px;
border-radius: 10px;
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
display: inline-block;
}
</style>
</head>
<body>
<div class="error-container">
<h1>🚫 404 - 页面未找到</h1>
<p>请求的路径 <strong>${pathname}</strong> 不存在</p>
<p><a href="/">返回首页</a></p>
</div>
</body>
</html>
`;
res.writeHead(404);
res.end(html);
}
// ===== 服务器启动 =====
server.listen(config.port, config.host, () => {
logMessage(`🚀 ${config.appName} v${config.version} 已启动`);
logMessage(`🌐 服务器运行在 http://${config.host}:${config.port}`);
logMessage(`📂 工作目录: ${process.cwd()}`);
logMessage(`⚙️ Node.js版本: ${process.version}`);
console.log('\n📋 可用的URL:');
console.log(` 主页: http://${config.host}:${config.port}/`);
console.log(` 系统信息: http://${config.host}:${config.port}/api/info`);
console.log(` 当前时间: http://${config.host}:${config.port}/api/time`);
console.log(` 计算器: http://${config.host}:${config.port}/api/calculate?a=10&b=5&op=add`);
console.log('\n💡 按 Ctrl+C 停止服务器\n');
});
// ===== 优雅关闭处理 =====
process.on('SIGINT', () => {
logMessage('📴 收到停止信号,正在关闭服务器...');
server.close(() => {
logMessage('✅ 服务器已安全关闭');
process.exit(0);
});
});
process.on('uncaughtException', (error) => {
logMessage(`❌ 未捕获的异常: ${error.message}`, 'ERROR');
console.error(error.stack);
process.exit(1);
});# ===== 包安装管理 =====
npm install <package-name> # 本地安装
npm install -g <package-name> # 全局安装
npm install <package-name> --save # 安装并添加到dependencies
npm install <package-name> --save-dev # 安装并添加到devDependencies
npm install # 安装package.json中的所有依赖
# ===== 包信息查询 =====
npm list # 查看本地安装的包
npm list -g # 查看全局安装的包
npm info <package-name> # 查看包的详细信息
npm outdated # 查看过时的包
npm audit # 安全漏洞扫描
# ===== 包更新管理 =====
npm update # 更新所有包
npm update <package-name> # 更新指定包
npm uninstall <package-name> # 卸载包
npm uninstall -g <package-name> # 卸载全局包
# ===== 脚本执行 =====
npm start # 运行start脚本
npm test # 运行test脚本
npm run <script-name> # 运行自定义脚本
npx <command> # 执行包中的命令
# ===== 实际使用示例 =====
# 安装常用开发工具
npm install -g nodemon # 自动重启开发服务器
npm install -g http-server # 静态文件服务器
npm install lodash # 实用工具库
npm install express # Web框架
npm install --save-dev eslint # 代码检查工具让我们创建一个综合项目来验证所有工具的协同工作:
javascript-dev-environment-test/
├── public/ # 静态资源目录
│ ├── index.html # 主页面
│ ├── css/
│ │ └── style.css # 样式文件
│ └── js/
│ └── app.js # 前端JavaScript
├── src/ # 源码目录
│ ├── server.js # Node.js服务器
│ └── utils.js # 工具函数
├── logs/ # 日志目录
├── package.json # 项目配置
├── .eslintrc.json # ESLint配置
├── .prettierrc # Prettier配置
└── README.md # 项目说明<!-- public/index.html -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript开发环境测试平台</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="container">
<header>
<h1>🚀 JavaScript开发环境测试平台</h1>
<p>验证浏览器控制台、VS Code、Node.js的完整集成</p>
</header>
<main>
<section class="test-panel">
<h2>🔧 环境检测</h2>
<div id="environment-status" class="status-grid">
<div class="status-item">
<span class="label">浏览器支持:</span>
<span id="browser-status" class="status">检测中...</span>
</div>
<div class="status-item">
<span class="label">JavaScript版本:</span>
<span id="js-version" class="status">检测中...</span>
</div>
<div class="status-item">
<span class="label">控制台功能:</span>
<span id="console-status" class="status">检测中...</span>
</div>
<div class="status-item">
<span class="label">服务器连接:</span>
<span id="server-status" class="status">检测中...</span>
</div>
</div>
</section>
<section class="interactive-tests">
<h2>🎮 交互测试</h2>
<div class="test-grid">
<div class="test-card">
<h3>控制台输出测试</h3>
<button id="console-test-btn" class="test-button">
测试控制台
</button>
<p>点击后查看浏览器控制台(F12)</p>
</div>
<div class="test-card">
<h3>API接口测试</h3>
<button id="api-test-btn" class="test-button">
测试API
</button>
<div id="api-result" class="result-area"></div>
</div>
<div class="test-card">
<h3>实时计算器</h3>
<input type="number" id="calc-a" placeholder="数字A" value="10">
<select id="calc-op">
<option value="add">加法</option>
<option value="subtract">减法</option>
<option value="multiply">乘法</option>
<option value="divide">除法</option>
</select>
<input type="number" id="calc-b" placeholder="数字B" value="5">
<button id="calc-btn" class="test-button">计算</button>
<div id="calc-result" class="result-area"></div>
</div>
</div>
</section>
<section class="feature-showcase">
<h2>✨ 功能展示</h2>
<div class="feature-grid">
<div class="feature-item">
<h4>🎯 现代JavaScript特性</h4>
<button id="es6-demo-btn">ES6+演示</button>
<div id="es6-demo-result" class="demo-result"></div>
</div>
<div class="feature-item">
<h4>🔄 异步编程</h4>
<button id="async-demo-btn">异步演示</button>
<div id="async-demo-result" class="demo-result"></div>
</div>
<div class="feature-item">
<h4>📊 数据处理</h4>
<button id="data-demo-btn">数据演示</button>
<div id="data-demo-result" class="demo-result"></div>
</div>
</div>
</section>
</main>
<footer>
<p>🎉 开发环境搭建成功!开始你的JavaScript学习之旅吧!</p>
</footer>
</div>
<script src="js/app.js"></script>
</body>
</html>// ===== Node.js相关问题 =====
// 问题1: 'node' 不是内部或外部命令
// 原因:Node.js未正确安装或环境变量未配置
// 解决方案:
// 1. 重新安装Node.js
// 2. 重启终端/命令提示符
// 3. 检查PATH环境变量是否包含Node.js路径
// 问题2: npm安装包速度慢或失败
// 解决方案:
npm config set registry https://registry.npmmirror.com
npm cache clean --force
npm install
// 问题3: 权限错误(macOS/Linux)
// 解决方案:
sudo chown -R $(whoami) ~/.npm
# 或使用nvm管理Node.js版本
// ===== VS Code相关问题 =====
// 问题1: Live Server无法启动
// 解决方案:
// 1. 检查端口是否被占用
// 2. 右键HTML文件选择"Open with Live Server"
// 3. 查看VS Code状态栏是否显示Live Server
// 问题2: ESLint不工作
// 解决方案:
// 1. 确保项目中有.eslintrc配置文件
// 2. 重启VS Code
// 3. 检查插件是否启用
// ===== 浏览器控制台问题 =====
// 问题1: 控制台无法输入中文
// 这是正常现象,建议使用英文变量名和注释
// 问题2: 某些API不可用
// 原因:浏览器安全策略或版本问题
// 解决方案:使用现代浏览器(Chrome、Firefox、Edge最新版)通过本节JavaScript开发环境搭建教程的系统学习,我们成功构建了完整的开发环境:
🌐 浏览器控制台精通
💻 VS Code专业配置
🚀 Node.js环境建设
🔧 工具链整合验证
完成开发环境搭建后,你已经具备了:
通过本节JavaScript开发环境搭建2024的学习,你已经掌握:
A: 按照本教程,完整搭建JavaScript开发环境大约需要1-2小时,包括下载、安装、配置所有工具。
A: VS Code免费、功能强大、插件丰富,是目前最受欢迎的JavaScript开发工具,市场占有率超过70%。
A: 常见解决方案:1)检查网络连接 2)使用官方安装包 3)清理之前的安装残留 4)使用nvm管理多版本。
A: 浏览器控制台适合快速测试和调试,VS Code适合编写完整项目。两者配合使用效果最佳。
A: 建议按顺序学习:1)JavaScript基础语法 2)DOM操作 3)异步编程 4)前端框架。
# 问题1:node命令不识别
# 解决:重新安装Node.js或添加环境变量
# 问题2:npm安装速度慢
npm config set registry https://registry.npmmirror.com
# 问题3:权限错误
# Windows: 以管理员身份运行
# Mac/Linux: 使用sudo或配置npm全局目录// 问题1:插件安装失败
// 解决:检查网络,重启VS Code,手动下载插件
// 问题2:中文显示异常
// 解决:安装中文语言包,重启编辑器
// 问题3:代码格式化不工作
// 解决:检查格式化插件,配置默认格式化程序"工欲善其事,必先利其器。现在你已经拥有了专业级的JavaScript开发工具链,准备好开始精彩的编程之旅了吗?让我们在下一节开始编写第一个JavaScript程序!"