koa文件服务器,基于Node的Koa2项目从创建到打包到云服务器指南

一 创建koa2项目

二 放到云服务器

一 创建koa2项目

为了节省开发成本,本文采用koa-generator脚手架来创建koa2项目

首先npm安装脚手架

$ npm install -g koa-generator

这是脚手架自动生成的目录

打开package.json文件可以看到

简单介绍下这几个快捷命令 start dev prd 和 test

start 命令是运行项目

dev 中的nodemon是修改项目代码后,服务器自动重启,让我们的改动生效

prd 中的pm2是node进程管理工具(用来保持进程,下文中放云服务器上时会用到)

test 自然是代码测试配置

我们输入 npm start 就可以看到项目成功运行了

本文暂时不分析koa脚手架目录和配置文件

ps: 在npm中,有四个常用的缩写

npm start 是 npm run start

npm stop 是 npm run stop 的简写

npm test 是 npm run test 的简写

npm restart 是 npm run stop && npm run restart && npm run start的简写

其他自己配的命令都需要 npm run yourCommand

省略开发过程

二 放到云服务器

注:本文以 centos 为例

推荐yum 源安装(本文省略 yum 源配置,请自行百度或者看他人的博文)

1 )配置node 和 npm

首先 打开命令行 输入 ssh root@yourIp 连上你的服务器

本文推荐用nvm方式安装n

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 服务器koa2路由代码(假设文件存放在public/files目录下): ``` const Koa = require('koa'); const Router = require('koa-router'); const serve = require('koa-static'); const path = require('path'); const fs = require('fs'); const app = new Koa(); const router = new Router(); // 静态文件服务 app.use(serve(path.join(__dirname, 'public'))); // 获取文件列表路由 router.get('/fileList', async (ctx, next) => { try { const files = fs.readdirSync(path.join(__dirname, 'public', 'files')); const fileList = []; for (let i = 0; i < files.length; i++) { const file = files[i]; const fileInfo = fs.statSync(path.join(__dirname, 'public', 'files', file)); fileList.push({ name: file, size: fileInfo.size, time: fileInfo.mtime }); } ctx.body = fileList; } catch (err) { console.error(err); ctx.status = 500; ctx.body = '服务器错误'; } }); app.use(router.routes()); app.listen(3000); console.log('Server running on http://localhost:3000'); ``` 2. 在前端Vue组件中使用axios获取文件列表并渲染缩略图、文件名等信息: ``` <template> <div> <div v-for="file in fileList" :key="file.name"> <img :src="`/files/${file.name}`" width="100" height="100" /> <div>{{ file.name }}</div> <div>{{ getFileSize(file.size) }}</div> <div>{{ formatDate(file.time) }}</div> </div> </div> </template> <script> import axios from 'axios'; export default { data() { return { fileList: [] }; }, mounted() { axios.get('/fileList').then(res => { this.fileList = res.data; }).catch(err => { console.error(err); }); }, methods: { getFileSize(size) { if (size < 1024) { return `${size}B`; } else if (size < 1024 * 1024) { return `${(size / 1024).toFixed(2)}KB`; } else if (size < 1024 * 1024 * 1024) { return `${(size / 1024 / 1024).toFixed(2)}MB`; } else { return `${(size / 1024 / 1024 / 1024).toFixed(2)}GB`; } }, formatDate(time) { const date = new Date(time); return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()} ${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`; } } }; </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值