Nodejs编程题
## Node.js编程题
### 题目一:构建HTTP服务器
**描述**:
使用Node.js内置的`http`模块,创建一个简单的HTTP服务器。该服务器应能响应根路径`/`的GET请求,并返回“Hello, World!”。
**要求**:
1. 使用ES6模块语法(`import`/`export`)。
2. 服务器应能处理多个并发连接。
3. 不使用任何第三方库。
**示例代码**:
```javascript
// server.js
import http from 'http';
const server = http.createServer((req, res) => {
if (req.url === '/') {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, World!');
}
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
```
### 题目二:实现RESTful API
**描述**:
设计并实现一个简单的RESTful API,用于管理用户数据。API应支持以下操作:
* `GET /users`:获取所有用户列表。
* `POST /users`:创建新用户。
* `GET /users/:id`:获取指定ID的用户信息。
* `PUT /users/:id`:更新指定ID的用户信息。
* `DELETE /users/:id`:删除指定ID的用户。
**要求**:
1. 使用Node.js和Express框架。
2. 数据存储可以使用内存数组或任何其他数据存储方式(如MongoDB、MySQL等),但需自行实现数据访问逻辑。
3. 确保API的安全性和健壮性,包括输入验证和错误处理。
**示例代码**(使用内存数组):
```javascript
// app.js
import express from 'express';
import bodyParser from 'body-parser';
const app = express();
app.use(bodyParser.json());
let users = [];
app.get('/users', (req, res) => {
res.json(users);
});
app.post('/users', (req, res) => {
const user = req.body;
users.push(user);
res.status(201).json(user);
});
app.get('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).send('User not found');
res.json(user);
});
app.put('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).send('User not found');
Object.assign(user, req.body);
res.json(user);
});
app.delete('/users/:id', (req, res) => {
const index = users.findIndex(u => u.id === parseInt(req.params.id));
if (index === -1) return res.status(404).send('User not found');
users.splice(index, 1);
res.status(204).send();
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
```
### 题目三:创建命令行工具
**描述**:
使用Node.js创建一个命令行工具,该工具能够执行以下任务:
* 读取用户输入的一串数字。
* 计算这些数字的平均值并输出结果。
**要求**:
1. 使用Node.js的`readline`模块来读取用户输入。
2. 工具应能处理至少10个数字的输入。
3. 输出结果保留两位小数。
**示例代码**:
```javascript
// calculator.js
import readline from 'readline';
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('请输入一串以空格分隔的数字: ', (input) => {
const numbers = input.split(' ').map(Number);
const sum = numbers.reduce((acc, num) => acc + num, 0);
const average = sum / numbers.length;
console.log(`平均值是: ${average.toFixed(2)}`);
rl.close();
});
```
运行此工具后,用户可以输入一串数字,然后程序会计算并输出它们的平均值。
更多精彩文章: 现象视频
### 现象视频:探索未知的奇妙世界
在当今数字化时代,视频已成为我们日常生活中不可或缺的一部分。从娱乐、教育到科学研究,视频以其独特的魅力和广泛的应用场景,吸引了无数人的关注。本文将带您走进令人惊叹的现象视频的世界,探索其中隐藏的奥秘与奇迹。
**一、自然界的奇迹**
现象视频中,自然界总是能带来无尽的惊喜。例如,在纪录片《地球脉动》中,我们可以看到壮观的山川、广袤的草原、深邃的海洋以及令人惊叹的生态系统。这些画面不仅让我们感受到了大自然的鬼斧神工,还让我们更加珍惜和尊重这个美丽的星球。
除了自然景观,动物世界也是现象视频的重要题材。在《狂野北美》中,我们可以观察到美洲豹捕猎的瞬间、雄伟的落基山脉以及丰富的野生动物种群。这些画面让我们对自然界有了更深入的了解,也让我们更加敬畏生命的伟大。
**二、科技的进步**
随着科技的飞速发展,现象视频为我们展示了一个充满无限可能的未来世界。在《未来世界》中,我们可以看到无人驾驶汽车穿梭在城市街道上空、人工智能医生为病人提供精准治疗以及虚拟现实技术为我们带来身临其境的娱乐体验。这些画面让我们看到了科技改变生活的巨大潜力,也让我们对未来充满了期待。
此外,科技进步也为我们揭示了一些前所未有的现象。例如,在《宇宙时空之旅》中,我们可以了解到宇宙的起源、黑洞的神秘以及星系之间的碰撞。这些画面让我们对宇宙有了更深入的认识,也让我们意识到自己在宇宙中的渺小。
**三、人类的探索精神**
现象视频中,人类的探索精神也得到了充分体现。无论是探险家在极地的冒险、科学家在实验室的研究还是运动员在赛场上的拼搏,都展现了人类不断追求未知、挑战自我的决心。这些画面让我们看到了人类在面对未知时的勇气和智慧,也让我们更加敬佩那些为了人类进步而付出努力的人。
**四、文化的多样性**
现象视频为我们呈现了世界各地的文化风情。在《美国家庭》中,我们可以了解到美国家庭的日常生活、家庭教育的观念以及多元文化的融合。这些画面让我们看到了不同文化背景下的生活方式和价值观念,也让我们更加包容和理解不同的文化。
此外,《印度的女儿》等纪录片则让我们看到了战争给人们带来的痛苦和苦难。这些画面让我们深刻反思人类行为对社会的影响,也让我们更加珍视和平与友谊。
总之,现象视频以其独特的视角和表现手法,为我们展示了大自然、科技、人类探索精神以及文化多样性等多个领域的奇妙世界。它让我们看到了世界的多彩和美好,也让我们更加珍惜每一个生活中的瞬间。