当前位置: 首页 > wzjs >正文

网站建设公司好长春网站优化

网站建设公司好,长春网站优化,三明网站建设公司,重庆外贸网站建设公司准备工作 安装依赖 npm init -y npm i koakoa 文档:https://koajs.cn/# koa 中不能用回调的方式来实现,因为 async 函数执行的时候不会等待回调完成 app.use(async (ctx, next) > {console.log(ctx.path, ctx.method);if (ctx.path "/login…

准备工作

安装依赖

npm init -y
npm i koa

在这里插入图片描述

koa 文档:https://koajs.cn/#

koa 中不能用回调的方式来实现,因为 async 函数执行的时候不会等待回调完成

app.use(async (ctx, next) => {console.log(ctx.path, ctx.method);if (ctx.path == "/login" && ctx.method === "POST") {const arr = [];ctx.req.on("data", function (chunk) {arr.push(chunk);});ctx.req.on("end", function () {const result = Buffer.concat(arr).toString();console.log("result---->", result);ctx.body = result;});} else {next();}
});

koa 中所有的异步都必须是 promise,只有 promise 才有等待效果,必须所有的 next 方法前需要有 await、return 否则没有等待效果

app.use(async (ctx, next) => {console.log(ctx.path, ctx.method);if (ctx.path == "/login" && ctx.method === "POST") {await new Promise((resolve, reject) => {const arr = [];ctx.req.on("data", function (chunk) {arr.push(chunk);});ctx.req.on("end", function () {const result = Buffer.concat(arr).toString();console.log("result---->", result);ctx.body = result;resolve();});});} else {await next();}
});

实现一个表单提交功能 server.js

const Koa = require("koa");const app = new Koa();app.use((ctx, next) => {// 路径是 /login get 方式// ctx 包含了 request response req resconsole.log(ctx.path, ctx.method);if (ctx.path == "/login" && ctx.method === "GET") {ctx.body = `<form action="/login" method="post">用户名:<input type="text" name="username"/><br/>密码:<input type="password" name="password"/><br/><button>提交</button></form>`;} else {return next();}
});app.use(async (ctx, next) => {console.log(ctx.path, ctx.method);if (ctx.path == "/login" && ctx.method === "POST") {await new Promise((resolve, reject) => {const arr = [];ctx.req.on("data", function (chunk) {arr.push(chunk);});ctx.req.on("end", function () {const result = Buffer.concat(arr).toString();console.log("result---->", result);ctx.body = result;resolve();});});} else {await next();}
});app.on("error", function (err) {console.log("error----->", err);
});app.listen(3000);

启动服务,访问 http://localhost:3000/login

nodemon server.js

在这里插入图片描述

输入账号密码,点击提交

在这里插入图片描述

koa-bodyparser

下面使用 koa-bodyparser 简化逻辑,安装 koa-bodyparser,https://www.npmjs.com/package/koa-bodyparser

npm i koa-bodyparser

用法:

const Koa = require('koa');
const bodyParser = require('koa-bodyparser');const app = new Koa();
app.use(bodyParser());app.use(async ctx => {// the parsed body will store in ctx.request.body// if nothing was parsed, body will be an empty object {}ctx.body = ctx.request.body;
});

业务里添加逻辑

const Koa = require("koa");
const bodyParser = require("koa-bodyparser");
const app = new Koa();
app.use(bodyParser());app.use((ctx, next) => {// 路径是 /login get 方式// ctx 包含了 request response req resconsole.log(ctx.path, ctx.method);if (ctx.path == "/login" && ctx.method === "GET") {ctx.body = `<form action="/login" method="post">用户名:<input type="text" name="username"/><br/>密码:<input type="password" name="password"/><br/><button>提交</button></form>`;} else {return next();}
});app.use(async (ctx, next) => {console.log(ctx.path, ctx.method);if (ctx.path == "/login" && ctx.method === "POST") {ctx.body = ctx.request.body;} else {await next();}
});app.on("error", function (err) {console.log("error----->", err);
});app.listen(3000);

效果也是一样的

下面自己实现 koa-bodyparser

const querystring = require("querystring");
console.log("使用的是 kaimo-koa-bodyparser 中间件");
// 中间件的功能可以扩展属性、方法
module.exports = function () {return async (ctx, next) => {await new Promise((resolve, reject) => {const arr = [];ctx.req.on("data", function (chunk) {arr.push(chunk);});ctx.req.on("end", function () {if (ctx.get("content-type") === "application/x-www-form-urlencoded") {const result = Buffer.concat(arr).toString();console.log("kaimo-koa-bodyparser-result---->", result);ctx.request.body = querystring.parse(result);}resolve();});});await next(); // 完成后需要继续向下执行};
};

将业务代码的引用自己实现的

// 使用自己实现的 koa-bodyparser
const bodyParser = require("./kaimo-koa-bodyparser");

启动服务,效果一样:

在这里插入图片描述

http://www.dtcms.com/wzjs/476065.html

相关文章:

  • 昆明网站建设服务至上建站为应用技术
  • 上海网站空间租用seo大牛
  • 专业做制作网站文件外链生成网站
  • 成都网站建设有名的在百度上打广告找谁推广产品
  • 网站建设视频演示my63777免费域名查询2023年
  • 近期军事新闻广州网站优化公司如何
  • wordpress全站ajax方法营销推广平台
  • 凡科网做网站的图片网络宣传推广方案
  • 上海网站建设优化公司旅游企业seo官网分析报告
  • 那些网站是做俄罗斯鞋子宁波网站制作与推广价格
  • 党风廉政建设网站网络舆情分析研判报告
  • 阿里云云服务器官网石家庄seo推广
  • 做电商需要学什么山西seo推广
  • 百度推广怎么做效果好南宁排名seo公司
  • 做网站公司哪家正规怎么自己制作一个网站
  • 网站规划与设计案例seo最强
  • 找美国的建站公司做网站公关团队
  • 安溪哪里有学做网站怎么搭建自己的网站
  • 论坛网站论坛网站建设建设2023年适合小学生的新闻有哪些
  • 外贸网站建设案例网站推广关键词排名优化
  • 怎么把自己笔记本做服务器做个网站技术培训学校机构
  • jcms网站建设网页制作在线生成
  • 做企业手机网站国外seo大神
  • 无锡手机网站制作百度站长平台如何添加网站
  • 社区网站如何做拼多多代运营公司十大排名
  • 手机网站logo成都公司建站模板
  • 手机网站建设教程视频教程广告推广策划
  • 东莞集团网站建设不受限制的搜索引擎
  • 网站建设合同用贴印花税吗今日热点新闻事件标题
  • 分析杭州高端网站建设开发的区别百度热度指数排行