1. 首页 > IT综合教程 > 正文

it教程FG179-Node.js开发基础

1. Node.js概述

Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用于在服务器端运行JavaScript代码。它采用事件驱动、非阻塞I/O模型,使其轻量且高效,适合构建高性能的网络应用。更多学习教程www.fgedu.net.cn

生产环境风哥建议:选择稳定的Node.js版本,如LTS版本,确保生产环境的稳定性。

2. Node.js环境搭建

搭建Node.js开发环境需要安装Node.js和npm(Node Package Manager)。

# 检查系统是否已安装Node.js
# node -v

# 安装Node.js(Ubuntu/Debian)
# curl -fsSL https://deb.nodesource.com/setup_lts.x | bash –
# apt install -y nodejs

# 安装Node.js(CentOS/RHEL)
# curl -fsSL https://rpm.nodesource.com/setup_lts.x | bash –
# yum install -y nodejs

# 验证安装
# node -v
v16.18.0

# 验证npm
# npm -v
8.19.2

3. Node.js基础

Node.js的基本结构包括模块、事件、文件系统等。学习交流加群风哥微信: itpux-com

// 第一个Node.js程序 (app.js)
console.log(“Hello, Node.js!”);

// 运行程序
# node app.js
Hello, Node.js!

// 变量和数据类型
const name = “John”;
const age = 30;
const isAdmin = true;
const fruits = [“apple”, “banana”, “orange”];
const person = { name: “John”, age: 30 };

// 控制语句
if (age >= 18) {
console.log(“Adult”);
} else {
console.log(“Minor”);
}

// 循环
for (let i = 0; i < 5; i++) { console.log(i); } // 函数 function greet(name) { return `Hello, ${name}!`; } console.log(greet("Alice"));

4. Node.js模块系统

Node.js使用CommonJS模块系统,通过require()导入模块,通过module.exports导出模块。

// 创建模块 (greet.js)
function greet(name) {
return `Hello, ${name}!`;
}

module.exports = greet;

// 使用模块 (app.js)
const greet = require(‘./greet’);
console.log(greet(“John”));

// 导出多个函数 (utils.js)
function add(a, b) {
return a + b;
}

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

module.exports = {
add,
subtract
};

// 使用多个函数 (app.js)
const utils = require(‘./utils’);
console.log(utils.add(1, 2));
console.log(utils.subtract(5, 3));

风哥风哥提示:Node.js的模块系统允许代码模块化,提高代码的可维护性和可重用性。

5. Node.js文件系统操作

Node.js的fs模块提供了文件系统操作功能,如读写文件、创建目录等。学习交流加群风哥QQ113257174

// 引入fs模块
const fs = require(‘fs’);

// 写入文件(同步)
try {
fs.writeFileSync(‘example.txt’, ‘Hello, Node.js!’);
console.log(‘File written successfully’);
} catch (err) {
console.error(err);
}

// 读取文件(同步)
try {
const data = fs.readFileSync(‘example.txt’, ‘utf8’);
console.log(data);
} catch (err) {
console.error(err);
}

// 写入文件(异步)
fs.writeFile(‘example.txt’, ‘Hello, Node.js!’, (err) => {
if (err) {
console.error(err);
return;
}
console.log(‘File written successfully’);
});

// 读取文件(异步)
fs.readFile(‘example.txt’, ‘utf8’, (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});

// 创建目录
fs.mkdir(‘test’, (err) => {
if (err) {
console.error(err);
return;
}
console.log(‘Directory created successfully’);
});

6. Node.js HTTP服务器

Node.js的http模块可以创建HTTP服务器,处理HTTP请求和响应。更多学习教程公众号风哥教程itpux_com

// 引入http模块
const http = require(‘http’);

// 创建服务器
const server = http.createServer((req, res) => {
// 设置响应头
res.writeHead(200, { ‘Content-Type’: ‘text/plain’ });
// 发送响应内容
res.end(‘Hello, Node.js HTTP Server!’);
});

// 监听端口
const port = 3000;
server.listen(port, () => {
console.log(`Server running at http://fgedudb:${port}/`);
});

// 运行服务器
# node server.js
Server running at http://fgedudb:3000/

// 访问服务器
# curl http://fgedudb:3000/
Hello, Node.js HTTP Server!

7. Node.js包管理

npm是Node.js的包管理器,用于安装、管理和发布Node.js包。

# 初始化项目
# npm init -y

# 安装包
# npm install express

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

# 查看已安装的包
# npm list

# 卸载包
# npm uninstall express

# 运行脚本
# 在package.json中添加脚本
{
“scripts”: {
“start”: “node app.js”,
“dev”: “nodemon app.js”
}
}

# 运行脚本
# npm start
# npm run dev

8. Node.js异步编程

Node.js使用回调函数、Promise和async/await进行异步编程。

// 回调函数
const fs = require(‘fs’);

function readFileCallback(callback) {
fs.readFile(‘example.txt’, ‘utf8’, (err, data) => {
if (err) {
callback(err);
return;
}
callback(null, data);
});
}

readFileCallback((err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});

// Promise
function readFilePromise() {
return new Promise((resolve, reject) => {
fs.readFile(‘example.txt’, ‘utf8’, (err, data) => {
if (err) {
reject(err);
return;
}
resolve(data);
});
});
}

readFilePromise()
.then(data => {
console.log(data);
})
.catch(err => {
console.error(err);
});

// async/await
async function readFileAsync() {
try {
const data = await readFilePromise();
console.log(data);
} catch (err) {
console.error(err);
}
}

readFileAsync();

9. Node.js Web框架

Node.js有多种Web框架,如Express、Koa、Fastify等,用于简化Web应用开发。

// Express框架示例
# 安装Express
# npm install express

// app.js
const express = require(‘express’);
const app = express();
const port = 3000;

// 路由
app.get(‘/’, (req, res) => {
res.send(‘Hello, Express!’);
});

app.get(‘/api/users’, (req, res) => {
res.json([{ id: 1, name: ‘John’ }, { id: 2, name: ‘Alice’ }]);
});

// 监听端口
app.listen(port, () => {
console.log(`Server running at http://fgedudb:${port}/`);
});

// 运行应用
# node app.js

// 访问应用
# curl http://fgedudb:3000/
Hello, Express!

# curl http://fgedudb:3000/api/users
[{“id”:1,”name”:”John”},{“id”:2,”name”:”Alice”}]

10. Node.js开发最佳实践

Node.js开发的最佳实践包括代码组织、性能优化、错误处理等方面。author:www.itpux.com

// 代码组织示例
/project
/src
/controllers
userController.js
/models
userModel.js
/routes
userRoutes.js
/middleware
auth.js
/utils
helpers.js
app.js
package.json
.env

// 环境变量
# 安装dotenv
# npm install dotenv

// .env文件
PORT=3000
DATABASE_URL=mongodb://fgedudb:27017/test

// app.js
require(‘dotenv’).config();
const port = process.env.PORT || 3000;

// 错误处理
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send(‘Internal Server Error’);
});

// 性能优化
// 使用集群模块
const cluster = require(‘cluster’);
const os = require(‘os’);

if (cluster.isMaster) {
const numCPUs = os.cpus().length;
console.log(`Forking ${numCPUs} workers…`);

for (let i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', (worker) => {
console.log(`Worker ${worker.id} died`);
cluster.fork();
});
} else {
// 启动服务器
const server = http.createServer((req, res) => {
res.writeHead(200, { ‘Content-Type’: ‘text/plain’ });
res.end(‘Hello, Node.js!’);
});

server.listen(3000);
}

生产环境风哥建议:使用PM2管理Node.js进程,使用nginx作为反向代理,配置SSL证书启用HTTPS。

风哥风哥提示:Node.js适合构建高性能的网络应用,如API服务、实时应用等,是现代Web开发的重要工具。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息