koa项目并详解 每个模块都可以单独使用

nodejs_ko

本项目学习需要掌握的知识点:
1.熟练使用koa搭建服务器
2.熟练使用koa-router的使用;并了解ctx的作用
3.熟练掌握此项目中用到的插件的用法及作用:
	用到的插件包括("koa-json","nodemon","koa-router","koa-bodyparser")
4.掌握如何获取前端传来post数据;以及掌握formData数据是如何获取的
5.如何使用阿里云数据库(mongodb),以及阿里云存储
  1. 安装所需依赖
npm init //初始化项目 创建package.json文件
npm install koa  --save //安装koa
npm install koa-json --save //
npm install nodemon --save //自动启动服务器
npm install koa-router --save//安装路由
npm install koa-bodyparser --save //获取ctx.request.body里的数据
npm install koa-multer --save //用来解析formData数据
npm install ali-oss --save//安装阿里云存储

  1. 在app.js中引入以上依赖

    启动服务并创建路由

    const koa = require('koa') //导入koa
    const router = require('koa-router')() //导入路由并创建路由对象
    const bodyParser = require("koa-bodyparser");
    const app = new koa()//实例化koa
    
    app.use(bodyParser())
    
    const banner = require('./router.js')//引入下面创建的router.js文件
    router.use("/api",banner) //在外部创建一个router.js,然后在app.js中引入传入到这里
    
    app.use(router.routes()).use(router.allowedMethods()) //将koa-router上的所有路由和处理函数注册成中间件
    app.listen(3000)
    console.log("本地服务器启动成功");
    

创建一个router.js

注:ctx是上下文 用来接收前端发来的请求数据

const router = require('koa-router')() //导入路由并创建路由对象
const {upload,uploading} = require(../oss/oss.js)//引入下面的oss.js文件;上传图片

router.get("/login",upload.single("file") async ctx=>{
    ctx.body = "这是登陆漏油"//ctx.body向前端返回的数据
    ctx.request.body//获取前端用post传来的数据,注意:要获取body里的数据必须安装插件"koa-bodyparser"
   uploading(ctx.req.file.path).then(res=>{
    console.log(res)
}).catch(err=>{
    console.log(err)
})
})

module.exports = router.routes();

使用koa-multer解析前端传来的文件图片

新建一个oss.js文件夹
const multer = require("koa-multer")

//实现文件图片上传
//调用multer的存储对象
let storage = multer.diskStorage({
    //图片存储路径;提前在后端文件夹中新建好;比如(publick/uploads)
    destination:(rep,file,cb)=>{
        cb(null,"publick/uploads/")//cb表示存储在哪里方法
    },
    //图片文件重命名
    filename: (req, file, cb) => {
        let formData = (file.originalname).split(".");
        cb(null, Date.now() +"." +formData[formData.length - 1]);
  },
})
//配置
let upload = multer({storage})

module.exports = upload 

知识点二:使用阿里云存储oss

阿里云存储这个模块可以单独列出来也可以放在oss.js文件里
注:使用云存储先到阿里云注册账号申请 阿里云存储(ali-oss)
const oss = require("ali-oss")
//初始化
const client = new oss({
      region: "********",//填写地域节点名称
      accessKeyId: "**********",//填写秘钥id
      accessKeySecret: "*********",//填写秘钥
      bucket: "********",//填写存储桶名称
})

let uploading = function (image){
    return new Promise((resolve,reject)=>{
        //第一个参数是阿里云存储自己创建的文件路径,第二个参数要上传的文件路径
        client.put("meituanoss/" + image, image).then(res=>{
            resolve(res)
        }).catch(err=>{
            reject(err)
        })
    })
}

module.exports = {upload, uploading}//这和上面的文件在同一个文件里,也可单独列出去
posted @ 2022-05-07 19:48  白头翁z  阅读(118)  评论(0编辑  收藏  举报