NodeJs新手学习笔记练习项目大纲
NodeJs新手学习笔记练习项目大纲
NodeJs新手学习笔记练习项目大纲
- 导言
- NodeJs的个人看法
- 练习项目大纲
##导言## 毕竟已经不是第一次学编程了,所以就想着折腾点好玩的东西,去NodeJS官网和CnodeJs转一圈以后,慢慢的有点感觉了,把学习过程中的点点滴滴记录下来当做一个一个存档或者为nodejs做一份贡献吧.
##NodeJs的个人看法##
NodeJs里面最经典的例子莫过于那个http服务器了,也是目前而言最成熟的nodejs学习的案例.在学习nodejs的过程中发现,很少发现有Nodejs 更移动客户端打交道的资料,个人愚见,nodejs的异步IO模型非常适合用于在移动客户端的领域里面,举个不太严谨的例子,例如上传一张图片,在当前的移动互联网速很慢的时候的,服务器不可能为了等待你的一张图片上传,不断的慢慢等待.在这里使用异步IO的话,服务器只管接受图片上传就行了,其它的什么都不用管.以上是我对nodejs的应用范围的一点愚见.
所以,这次的练习项目就是简单的仿照时下热门的Instagram
##练习项目的规划## 这里的目的毕竟不是要完全的模仿Instagram所以,设计就非常随便了.
让我们想想Instagram的主要功能
- 客户端部分
- 进行图片获取
- 将图片上传
- 服务端播放
- 接收图片
- 保存图片
我把Instagram的功能做了一个面目全非的精简,我们实现的目标只需要
1.客户端能拍照上传
2.服务端能接收图片上传
第一期的练习项目就是完成以上两个目标.
###客户端部分### 经过两个小时的编码终于有个雏形了并打包成apk可以安装在手机上,因为这里是nodejs社区,对客户端有兴趣的话可以关注我的博客 我的博客 在以后的某段时间,我也会把客户端的开发的进程也记录下来.
###服务端### nodejs + express 3.x
这次服务端要做的事情比较简单,说白了只不过是要支持文件上传而已,用express 实现起来十分简单
片段一:
// 获得文件的临时路径
var tmp_path = req.files.thumbnail.path;
这里要特地说一下,win下和,linux下的区别.win下的文件系统不像linux那样所有的路径都可以基于 /xxx/xx完成,所以在win下express里面改变文件默认上传的目录的话,最好还是填绝对路径.
片段二
// 将临时文件移动到目标文件夹
fs.rename(temp_path, target_path, function(err)
{if(err) throw err;
//删除临时文件
fs.unlink(temp_path, function()
{
if(err) throw err;
});
});
更多细节还是app.js看源代码47行 - 54行
就这么完了?当然不会了,接下来有得是折腾,不过暂时让我歇一歇吧,有兴趣的朋友就持续关注吧,不过,期望不要太高,毕竟俺只是兴趣而为而已
NodeJs新手学习笔记练习项目大纲
导言
在学习Node.js的过程中,我希望能通过实践来巩固知识。本文档记录了我在学习过程中的一些心得,并通过一个简单的练习项目来展示如何实现一个基本的图片上传功能。这个项目不仅有助于理解Node.js的基本概念,还能帮助了解Express框架在处理文件上传方面的应用。
NodeJs的个人看法
Node.js以其异步I/O模型著称,这使得它非常适合处理高并发请求,特别是在网络通信方面。一个经典的Node.js例子是HTTP服务器,它可以高效地处理大量并发连接。在移动客户端应用中,这种异步特性同样适用。例如,在用户上传图片时,服务器不需要阻塞等待图片上传完成,而是可以继续处理其他请求。
因此,本次练习项目将模拟Instagram的部分功能,实现一个简单的图片上传应用。
练习项目的规划
我们将实现以下功能:
- 客户端能够拍照并上传图片。
- 服务端能够接收并保存上传的图片。
客户端部分
客户端部分主要涉及拍照和上传图片的功能。这部分可以通过原生Android或iOS开发实现,也可以使用一些跨平台框架如React Native。对于本次练习,我们假设客户端已经实现了基本的图片上传功能。
服务端部分
服务端部分将使用Node.js和Express框架来实现文件上传功能。以下是具体的实现步骤:
安装依赖
首先,确保已安装Node.js和npm。然后创建一个新的项目目录并初始化项目:
mkdir nodejs-file-upload
cd nodejs-file-upload
npm init -y
安装必要的依赖包:
npm install express multer
创建服务端代码
创建一个app.js
文件,并添加以下代码:
const express = require('express');
const multer = require('multer');
const app = express();
const upload = multer({ dest: 'uploads/' });
// 设置静态文件目录
app.use(express.static('public'));
// 文件上传路由
app.post('/upload', upload.single('image'), (req, res) => {
const tempPath = req.file.path;
const targetPath = `./uploads/${req.file.originalname}`;
if (req.file.mimetype === 'image/jpeg' || req.file.mimetype === 'image/png') {
fs.rename(tempPath, targetPath, err => {
if (err) throw err;
fs.unlink(tempPath, err => {
if (err) throw err;
res.status(200).send('File uploaded successfully.');
});
});
} else {
fs.unlink(tempPath, err => {
if (err) throw err;
res.status(400).send('Only JPEG and PNG files are allowed!');
});
}
});
// 启动服务器
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
运行服务端
启动服务端应用:
node app.js
现在,服务端已经准备好接收并保存上传的图片了。客户端可以发送POST请求到http://localhost:3000/upload
来上传图片。
总结
通过这个简单的练习项目,我们展示了如何使用Node.js和Express框架实现一个基本的图片上传功能。希望这些内容对你有所帮助。如果你有任何问题或建议,欢迎随时联系我。
GitHub传送门 GitHub
希望这个大纲能帮助你更好地理解和实践Node.js的相关知识。
LinkedIn的移动端的后台支持就是node.js,但是这技术在国内精通还愿意普及的人很少啊。
NodeJs新手学习笔记练习项目大纲
导言
在多次学习编程后,我决定尝试一些有趣的新事物。浏览了NodeJS官网和CnodeJS社区后,我对NodeJS有了新的认识,并决定记录下我的学习过程,以便分享给其他初学者。
NodeJs的个人看法
NodeJS中最经典的例子莫过于HTTP服务器,这是目前最成熟的学习案例。我发现NodeJS在处理移动客户端方面有很大潜力,特别是在异步IO模型的支持下。例如,在移动网络较慢的情况下,服务器可以快速接受图片上传,而不需要等待整个上传过程完成。因此,这次练习项目将模仿时下热门的Instagram应用。
练习项目的规划
我们将简化Instagram的核心功能,主要实现以下两个目标:
- 客户端能拍照上传。
- 服务端能接收图片上传。
客户端部分
客户端将负责拍照并上传图片。这一步骤可以使用任何前端框架(如React Native、Flutter等)来实现。最终,我们将得到一个可以在手机上运行的APK文件。
服务端
服务端将使用NodeJS和Express 3.x来处理文件上传。以下是具体步骤和代码示例。
安装依赖
npm install express multer
服务端代码示例 (app.js)
const express = require('express');
const multer = require('multer');
const app = express();
const upload = multer({ dest: 'uploads/' });
// 设置临时存储目录
upload.single('image')
// 文件上传处理函数
app.post('/upload', upload.single('image'), (req, res) => {
const tempPath = req.file.path;
const targetPath = `./uploads/${req.file.originalname}`;
// 移动临时文件到目标目录
const fs = require('fs');
fs.rename(tempPath, targetPath, err => {
if (err) throw err;
// 删除临时文件
fs.unlink(tempPath, err => {
if (err) throw err;
});
});
res.send('File uploaded successfully.');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
详细说明
- Multer:Multer 是一个用于处理
multipart/form-data
的中间件,主要用于文件上传。 - upload.single(‘image’):定义一个单一文件上传的策略。
- req.file:包含了上传文件的信息,包括路径 (
path
) 和原始名称 (originalname
)。 - fs.rename 和 fs.unlink:分别用于移动临时文件到目标位置,并删除临时文件。
通过以上步骤,我们可以构建一个简单的文件上传服务。具体的实现细节和更多功能可以根据需求进一步扩展。