1. Node.js概述
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用于在服务器端运行JavaScript代码。它采用事件驱动、非阻塞I/O模型,使其轻量且高效,适合构建高性能的网络应用。更多学习教程www.fgedu.net.cn
2. Node.js环境搭建
搭建Node.js开发环境需要安装Node.js和npm(Node Package Manager)。
# 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
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导出模块。
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));
5. Node.js文件系统操作
Node.js的fs模块提供了文件系统操作功能,如读写文件、创建目录等。学习交流加群风哥QQ113257174
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
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
# 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);
}
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
