1. 原生Nodejs在Koa中获取表单提交的数据
// app.js
var Koa = require('koa'),
router = require('koa-router')(),
views = require('koa-views'),
common = require('./module/common.js'); // 引入 封装模块
var app = new Koa();
app.use(views('views', {/*应用ejs模板引擎*/
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);
// common.js
exports.getPostData = function (ctx) {
return new Promise(function (resolve, reject) {
try {
let str = '';
ctx.req.on('data', function (chunk) {
str += chunk;
})
ctx.req.on('end', function (chunk) {
resolve(str)
})
} catch (err) {
reject(err)
}
})
}
2. Koa中koa-bodyparser中间件的使用
// 1. 安装
npm install --save koa-bodyparser
var Koa = require('koa'),
router = require('koa-router')(),
views = require('koa-views'),
bodyParser = require('koa-bodyparser'); // 2. 引用
var app = new Koa();
app.use(views('views', {/*应用ejs模板引擎*/
extension: 'ejs'
}))
app.use(bodyParser());// 3. 配置post 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; // 4. 获取表单提交的数据
})
app.use(router.routes()); /*启动路由*/
app.use(router.allowedMethods());
app.listen(3000);
3. koa-static - 静态资源中间件 - 静态web服务
// 1. 安装
cnpm install koa-static --save
var Koa = require('koa'),
router = require('koa-router')(),
views = require('koa-views'),
bodyParser = require('koa-bodyparser'),
static = require('koa-static'); // 2. 引入
var app = new Koa();
app.use(views('views', {/*应用ejs模板引擎*/
extension: 'ejs'
}))
// http://localhost:3000/css/basic.css 首先去static目录找 ,如果能找到返回对应的文件,找不到 next()
// 3. 配置静态web服务的中间件
// app.use(static('./static')); // 方式一
app.use(static(__dirname + '/static')); // 方式二
app.use(static(__dirname + '/public')); // koa静态资源中间件可以配置多个
app.use(bodyParser()); // 配置post bodyparser的中间件
router.get('/', async (ctx) => {
await ctx.render('index');
})
router.post('/doAdd', async (ctx) => {
console.log(ctx.request.body);
ctx.body = ctx.request.body; //获取post表单提交的数据
})
app.use(router.routes()); /*启动路由*/
app.use(router.allowedMethods());
app.listen(3000);