这篇文章将为大家详细讲解有关如何使用Node . js + Vue.js来构建文件压缩应用程序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
Node . js为我们提供了一个模块来协助文件压缩。在本文中,我们将构建一个应用程序,用户可以在该应用程序中上传他们想要压缩的文件,然后使用节点。js Zlib模块下载该文件的压缩版本。
前提
要继续学习本教程,你需要具备以下条件:
- <李>
熟悉HTML、CSS和Javascript (ES6 +)
李> <李>VS代码或开发计算机上安装的任何代码编辑器
李> <李>在你的开发机器上安装了邮差
李> <李>Vue和节点。js的基础知识
李>设置项目
我们将从构建后端开始,这是我们应用程序的基础。
在桌面上,为应用程序创建一个文件夹,群殴取名为<代码>压缩机> 代码,并通过运行<代码> npm init - y 代码>设置一个新的节点。js项目。
我们先编写后端服务,所以在项目中再建立一个服务器<代码> 代码>目录。
现在,我们需要为应用程序安装必要的软件包:
- <李>
<强>高雅强> <强> koa-router 强>:这将有助于设置我们的服务器以及路由
李> <李><强> nodemon 强>:当我们对应用程序进行更改时,nodemon将重新启动我们的服务器
李> <李><强>乘强>:用于上传文件的中间件
李> <李>强>:<强>歌珥帮助将头添加到代理请求中
李>要安装所有这些,请在我们创建的服务器<代码> 代码>目录中运行以下命令:
npm 小姐:,,节省koa koa-router nodemon multer 歌珥
完成安装后,在服务器<代码> 代码>目录内创建一个<代码>索引。js代码>文件,这是我们将编写后端代码的地方。
使用VS代码打开文件夹。在开始之前,我们先创建一个<代码>。gitignore 代码>文件,并向其中添加<代码> node_modules> 代码,这将防止将<代码> node_modules 代码>文件夹添加到git中。
让我们继续来创建一个简单的高雅。js服务器,然后配置我们的包:
const express =,要求(& # 39;表达# 39;); const multer =,要求(& # 39;multer& # 39;); const zlib =,要求(& # 39;zlib # 39;); const cors =,要求(& # 39;歌珥# 39;); const fs =,要求(& # 39;fs # 39;); const path =,要求(& # 39;path & # 39;); const app =,表达(); app.use(歌珥());//乘 const storage =, multer.memoryStorage (); const upload =,乘({ 储存:才能,存储, }); app.listen(3000年,(),=祝辞,{ console.log才能(& # 39;App is runnuing 提醒port 3000 & # 39;); });
我们首先要求我们安装的包,如表达,乘和歌珥。然后,我们创建一个表达的实例,并将其保存在一个变量中。我们使用表达实例来配置我们的<代码>歌珥> 代码作为中间件。
我们还需要一些节点。js的核心模块,比如<代码> zlib> 代码,我们将使用它来进行实际的压缩。然后我们使用表达的实例来创建一个服务器,它将监听<代码> 3000 代码>端口。
接下来,我们将创建一个路,由该路由将接收一个文件,然后返回压缩文件。
zlib有很多压缩方法,但是在本文中,我们将使用gzip <代码> 代码>方法。
app.post (“/compress",, upload.single (“file"), async (点播,res),=祝辞,{ try {才能 ,,,const destination =,压缩/$ {req.file.originalname} . gz的; ,,,let fileBuffer =, req.file.buffer; ,,,await zlib.gzip (fileBuffer,,(呃,,响应),=祝辞,{ ,,,,,if (err), { ,,,,,,,console.log(错); ,,,,,} ,,,,,fs.writeFile (path.join (__dirname,,目的地),,,,(呃,,数据),=祝辞,{ ,,,,,,,if (err), { ,,,,,,,,,console.log(错); ,,,,,,,} ,,,,,,,res.download (path.join (__dirname,,目的地)); ,,,,,}); ,,,}); ,,},catch (err), { ,,,console.log(错); ,,,res.json(错); ,,} });
我们定义<代码>/代码>路压缩由,这是一个<代码> 代码>后请求,然后在该路由中传递个乘中间件。我们的<代码>乘> 代码中间件将返回文件缓冲区,该文件缓冲区存储在<代码> fileBuffer> 代码变量中。
为了进行测试,我们创建一个<代码>