ITPub博客

首页 > IT职业 > IT生活 > 知新 | koa框架入门到熟练第二章

知新 | koa框架入门到熟练第二章

IT生活 作者:船头尺 时间:2021-09-09 10:45:27 0 删除 编辑

koa-bodyparser 使用

这里对koa-bodyparser的使用教程。

目录如下

图片描述

ejs文件

ejs模板文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/doAdd" method="post">
    用户名: <input type="text" name="username"/>
    密码: <input type="password" name="password"/>
    <button type="submit">提交</button>
</form>
</body>
</html>

koa-bodyparser

使用koa-bodyparser获取body内容



var koa = require("koa");

var Router = require("koa-router");

var bodyParser = require("koa-bodyparser");

var app = new koa();

var router = new Router();

var views = require("koa-views");

app.use(views("views", {
    extension: "ejs",
}))

app.use(bodyParser());

// koa中间件
app.use(async (ctx, next) => {
    console.log(new Date());

    await next();
});



router.get("/", async (ctx) => {
    await ctx.render("index");
})

router.post("/doAdd", async (ctx) => {
    console.log(ctx.request.body);
    ctx.body = ctx.request.body;
})
app.use(router.routes());
app.use(router.allowedMethods());


app.listen(3001);

使用效果

图片描述

登录页面
图片描述

图片描述

koa-static

这里学习使用koa-static

安装

PS C:UsersAdministratorDesktopuntitled3> npm install --save koa-static
npm WARN untitled3@1.0.0 No description
npm WARN untitled3@1.0.0 No repository field.

+ koa-static@5.0.0
added 1 package in 2.042s

2 packages are looking for funding
  run `npm fund` for details

PS C:UsersAdministratorDesktopuntitled3>

访问效果

访问效果如下
图片描述

art-template

这里使用art-template 作为一个模板引擎使用

安装

PS C:UsersAdministratorDesktopuntitled3> npm install --save art-template
npm WARN untitled3@1.0.0 No description
npm WARN untitled3@1.0.0 No repository field.

+ art-template@4.13.2
added 33 packages from 141 contributors in 6.704s

2 packages are looking for funding
  run `npm fund` for details

PS C:UsersAdministratorDesktopuntitled3> npm install --save koa-art-template
npm WARN untitled3@1.0.0 No description
npm WARN untitled3@1.0.0 No repository field.

+ koa-art-template@1.1.1
added 2 packages from 4 contributors in 2.336s

2 packages are looking for funding
  run `npm fund` for details

代码如下



var koa = require("koa");

var Router = require("koa-router");

var bodyParser = require("koa-bodyparser");

var static = require("koa-static");

var app = new koa();

var router = new Router();

var views = require("koa-views");

var render = require("koa-art-template");

var path = require("path");

app.use(views("views", {
    extension: "ejs",
}))

app.use(static("./static"));

app.use(bodyParser());

// koa中间件
app.use(async (ctx, next) => {
    console.log(new Date());

    await next();
});



router.get("/", async (ctx) => {
    await ctx.render("index");
})

router.post("/doAdd", async (ctx) => {
    console.log(ctx.request.body);
    ctx.body = ctx.request.body;
})

render(app, {
    root: path.join(__dirname, "views"),
    extname: ".art",
})

app.use(async function (ctx){
    await ctx.render("user");
})

app.use(router.routes());
app.use(router.allowedMethods());


app.listen(3001);

art 文件如下



var koa = require("koa");

var Router = require("koa-router");

var bodyParser = require("koa-bodyparser");

var static = require("koa-static");

var app = new koa();

var router = new Router();

var views = require("koa-views");

var render = require("koa-art-template");

var path = require("path");

app.use(views("views", {
    extension: "ejs",
}))

app.use(static("./static"));

app.use(bodyParser());

// koa中间件
app.use(async (ctx, next) => {
    console.log(new Date());

    await next();
});



router.get("/", async (ctx) => {
    await ctx.render("index");
})

router.post("/doAdd", async (ctx) => {
    console.log(ctx.request.body);
    ctx.body = ctx.request.body;
})

render(app, {
    root: path.join(__dirname, "views"),
    extname: ".art",
})

app.use(async function (ctx){
    await ctx.render("user");
})

app.use(router.routes());
app.use(router.allowedMethods());


app.listen(3001);

访问效果

图片描述

cookie



var koa = require("koa");

var Router = require("koa-router");

var bodyParser = require("koa-bodyparser");

var static = require("koa-static");

var app = new koa();

var router = new Router();

var views = require("koa-views");

var render = require("koa-art-template");

var path = require("path");


app.use(bodyParser());

// koa中间件
app.use(async (ctx, next) => {
    console.log(new Date());

    await next();
});

router.get("/", async (ctx) => {
    ctx.cookies.set("ming", "ming")
})
app.use(router.routes());
app.use(router.allowedMethods());


app.listen(3001);

图片描述

koa-session

PS C:UsersAdministratorDesktopuntitled3> npm install koa-session
npm WARN untitled3@1.0.0 No description
npm WARN untitled3@1.0.0 No repository field.

+ koa-session@6.0.0
added 10 packages from 14 contributors in 3.484s

2 packages are looking for funding
  run `npm fund` for details

PS C:UsersAdministratorDesktopuntitled3>

编写一个简单的刷新页面次数增加



var koa = require("koa");

var Router = require("koa-router");

var bodyParser = require("koa-bodyparser");

var static = require("koa-static");

var app = new koa();

var router = new Router();

var views = require("koa-views");

var render = require("koa-art-template");

var path = require("path");

var session = require("koa-session");

app.keys = ['secret'];   // session加密字段

app.use(session({
    key: 'koa:sess', //cookie key (default is koa:sess)
    maxAge: 86400000, // cookie的过期时间 maxAge in ms (default is 1 days)
    overwrite: true, //是否可以overwrite    (默认default true)
    httpOnly: true, //cookie是否只有服务器端可以访问 httpOnly or not (default true)
    signed: true, //签名默认true
    rolling: false, //在每次请求时强行设置cookie,这将重置cookie过期时间(默认:false)
    renew: false, //(boolean) renew session when session is nearly expired,
}, app));

app.use(bodyParser());

// koa中间件
app.use(async (ctx, next) => {
    console.log(new Date());

    await next();
});


app.use(ctx => {
    // ignore favicon
    if (ctx.path === '/favicon.ico') return
    console.log(ctx.session)
    let n = ctx.session.views || 0
    ctx.session.views = ++n
    ctx.body = n + ' views'
});


router.get("/", async (ctx) => {
    ctx.cookies.set("ming", "ming")
})

app.use(router.routes());
app.use(router.allowedMethods());


app.listen(3001);

图片描述

原型链继承

// 构造原型
function Person(name, age) {
    this.name = name;
    this.age = 333;
    this.run = function () {
        console.log(this.name, this.age)
    }
}

// 添加work方法,在原型链上继承
Person.prototype.work = () => {
    console.log("work");
}

function Web() {

}

// 同样继承
Web.prototype = new Person();

var w = new Web();
// 以下两个运行原型链的值
w.run();
w.work()

静态方法和构造方法

// 新建类
class Person{
    constructor(name) {
        this._name = name;
    }
    run(){
        console.log(this._name);
    }
    // 静态方法
    static work(){
        console.log("静态方法");
    }
}

Person.work();

图片描述

koa 操作mongoDB

安装相关的库


PS C:UsersAdministratorDesktopuntitled3> npm install mongodb --save
npm WARN untitled3@1.0.0 No description
npm WARN untitled3@1.0.0 No repository field.

+ mongodb@3.5.9
updated 1 package in 2.854s

2 packages are looking for funding
  run `npm fund` for details

PS C:UsersAdministratorDesktopuntitled3>

增加一条数据



var MongoClient = require("mongodb").MongoClient;

var dbUrl = 'mongodb://106.53.115.12:27017/'

var dbName = "koa";

// 连接
MongoClient.connect(dbUrl, (err, client) => {
    if(err){
        console.log(err);
        return;
    }

    var db = client.db(dbName);

    // 增加数据
    db.collection("user").insertOne({
        "username":"xiaoxiao","age":"23"
    });

})


结果:

图片描述

对返回结果进行处理



var MongoClient = require("mongodb").MongoClient;

var dbUrl = 'mongodb://106.53.115.12:27017/'

var dbName = "koa";

// 连接
MongoClient.connect(dbUrl, (err, client) => {
    if(err){
        console.log(err);
        return;
    }

    var db = client.db(dbName);

    // 增加数据
    db.collection("user").insertOne({
        "username":"xiaoxiao","age":"23"
    }, function (err, result) {
        if(!err){
            console.log("增加数据成功 ");
            client.close();
            console.timeEnd("start");
        }
    });

})


查询数据

代码如下



var MongoClient = require("mongodb").MongoClient;

var dbUrl = 'mongodb://106.53.115.12:27017/'

var dbName = "koa";

// 连接
MongoClient.connect(dbUrl, (err, client) => {
    if(err){
        console.log(err);
        return;
    }

    var db = client.db(dbName);

    var result = db.collection("user").find(0);

    result.toArray((err, docs) => {
        console.log(docs);
    })

})


输出内容如下

"C:Program Filesnodejsnode.exe" C:UsersAdministratorDesktopuntitled3

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3016/viewspace-2825860/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-24

  • 博文量
    92
  • 访问量
    6990