热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

原生nodejs在koa中获取表单提交的数据和利用koa-bodyparser

module文件夹下的common.js方法封装exports.getPostDatafunction(ctx){returnnewPromise(function(

module文件夹下的 common.js方法封装


exports.getPostData=function(ctx){

    return new Promise(function(resolve,reject){//需要返回一个promise对象
        try{
            let str='';
            ctx.req.on('data',function(chunk){

                str+=chunk;
            })
            ctx.req.on('end',function(chunk){

                resolve(str);
            })


        }catch(err){
            reject(err);

        }
    })

}

后台引入ejs引擎 所以 views/index.ejs代码如下


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title>
head>
<body>

    <form action="/doAdd" method="post">
        用户名: <input type="text" name="username"/>
        <br/>
        <br/>
        密 码: <input type="password" name="password"/>
        <br/>
        <br/>
        <button type="submit">提交button>
    form>

body>
html>

后台 app.js


var Koa=require('koa'),
    router = require('koa-router')(),
    views = require('koa-views'),
    common = require('./module/common.js');
var app=new Koa();
/*应用ejs模板引擎*/
app.use(views('views',{
    extension:'ejs'
}))

router.get('/',async (ctx)=>{ await ctx.render('index'); }) //接收post提交的数据 router.post('/doAdd',async (ctx)=>{ //原生nodejs 在koa中获取表单提交的数据 var data=await common.getPostData(ctx); console.log(data); ctx.body=data; }) app.use(router.routes()); /*启动路由*/ app.use(router.allowedMethods()); app.listen(3000); 

以上是原生nodejs在koa中获取表单提交的数据

用koa-bodyparser就更简单了。不需要封装一个方法来接收数据

如下 koa-bodyparser.js

/*
 Koa 中 koa-bodyparser 中间件获取表单提交的数据

    1.npm install --save koa-bodyparser

    2.引入var bodyParser = require('koa-bodyparser');

    3.app.use(bodyParser());

    4.ctx.request.body;  获取表单提交的数据
* */
var Koa=require('koa'),
    router = require('koa-router')(),
    views = require('koa-views'),
    bodyParser = require('koa-bodyparser');

var app=new Koa();
/*应用ejs模板引擎*/
app.use(views('views',{
    extension:'ejs'
}))

//配置post bodyparser的中间件
app.use(bodyParser());

router.get('/',async (ctx)=>{ await ctx.render('index'); }) //接收post提交的数据 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(3000);

推荐阅读
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • 在《PHP应用性能优化实战指南:从理论到实践的全面解析》一文中,作者分享了一次实际的PHP应用优化经验。文章回顾了先前进行的一次优化项目,指出即使系统运行时间较长后出现的各种问题和性能瓶颈,通过采用一些通用的优化策略仍然能够有效解决。文中不仅详细阐述了优化的具体步骤和方法,还结合实例分析了优化前后的性能对比,为读者提供了宝贵的参考和借鉴。 ... [详细]
  • 本教程旨在为HTML5初学者提供Canvas画布的基础知识与实践指导。通过详细解析Canvas元素的使用方法、绘图API及常见图形绘制技巧,帮助读者快速掌握在网页中利用Canvas进行动态图形创作的基本技能。 ... [详细]
  • 本文深入探讨了数据库性能优化与管理策略,通过实例分析和理论研究,详细阐述了如何有效提升数据库系统的响应速度和处理能力。文章首先介绍了数据库性能优化的基本原则和常用技术,包括索引优化、查询优化和存储管理等。接着,结合实际应用场景,讨论了如何利用容器化技术(如Docker)来部署和管理数据库,以提高系统的可扩展性和稳定性。最后,文章还提供了具体的配置示例和最佳实践,帮助读者在实际工作中更好地应用这些策略。 ... [详细]
  • MVVM架构~mvc,mvp,mvvm大话开篇
    返回目录百度百科的定义:MVP是从经典的模式MVC演变而来,它们的基本思想有相通的地方:ControllerPresenter负责逻辑的处理,Model提供数据,View负责显示。作为一种新的模 ... [详细]
  • HTTP请求与响应机制:基础概览
    在Web浏览过程中,HTTP协议通过请求和响应报文实现客户端与服务器之间的通信。当用户访问一个网页时,浏览器会发送一个HTTP请求报文至服务器,服务器接收到请求后,会生成并返回一个HTTP响应报文。这两种报文均包含三个主要部分:起始行、头部字段和消息体,确保了数据的有效传输和解析。 ... [详细]
  • 池子比率:BSV 区块链上的去中心化金融应用——Uniswap 分析
    池子比率:BSV 区块链上的去中心化金融应用——Uniswap 分析 ... [详细]
  • 在进行网络编程时,准确获取本地主机的IP地址是一项基本但重要的任务。Winsock作为20世纪90年代初由Microsoft与多家公司共同制定的Windows平台网络编程接口,为开发者提供了一套高效且易用的工具。通过Winsock,开发者可以轻松实现网络通信功能,并准确获取本地主机的IP地址,从而确保应用程序在网络环境中的稳定运行。此外,了解Winsock的工作原理及其API函数的使用方法,有助于提高开发效率和代码质量。 ... [详细]
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • 在开发DedeCMS企业模板时,常常需要创建如“关于我们”等单页面。由于DedeCMS不直接支持像WordPress那样的独立页面功能,但可以通过调用栏目内容来实现这一需求。本文详细介绍了如何利用DedeCMS的栏目功能,结合具体步骤和技巧,帮助网站管理员高效地创建和管理单页面内容。 ... [详细]
  • 本文探讨了如何在C#中实现USB条形码扫描仪的数据读取,并自动过滤掉键盘输入,即使不知道设备的供应商ID(VID)和产品ID(PID)。通过详细的技术指导和代码示例,展示了如何高效地处理条形码数据,确保系统能够准确识别并忽略来自键盘的干扰信号。该方法适用于多种USB条形码扫描仪,无需额外配置设备信息。 ... [详细]
  • 在Ubuntu系统中,由于预装了MySQL,因此无需额外安装。通过命令行登录MySQL时,可使用 `mysql -u root -p` 命令,并按提示输入密码。常见问题包括:1. 错误 1045 (28000):访问被拒绝,这通常是由于用户名或密码错误导致。为确保顺利连接,建议检查MySQL服务是否已启动,并确认用户名和密码的正确性。此外,还可以通过配置文件调整权限设置,以增强安全性。 ... [详细]
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
  • 本文详细探讨了代码中 `position` 属性的使用方法及其常见问题,并提出了多种有效的解决方案。通过实例分析,文章不仅解释了 `position` 属性的不同值(如 `static`、`relative`、`absolute` 和 `fixed`)在不同场景下的应用,还讨论了其对布局和定位的影响。此外,文章还提供了一些实用的调试技巧和最佳实践,帮助开发者更好地理解和应用这一重要 CSS 属性。 ... [详细]
author-avatar
但须g婚后
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有