koa中文网
npm install koa
创建koa/service.js
service.js
const Koa = require('koa');
const app = new Koa();
// ctx是把res req next都放入的对象
/*
建议使用
ctx.request : koa 的 request
ctx.respond : koa 的 respond
... :ctx对象下会有很多属性来自于ctx.request和ctx.response
中文网有ctx的request&respond别名调用说明
*/
app.use(ctx => {
ctx.body = 'Hello Koa';
});
app.listen(3000);
启动服务:当前目录下cmd
运行node service
,浏览器输入localhost:3000
,看到Hello Koa
koa静态资源服务器插件
npm install koa-static
修改koa/service.js
service.js
const Koa = require('koa');
const static = require('koa-static');
// 创建koa应用
const app = new Koa();
// 创建静态资源服务器,static('静态资源服务器路径')
app.use(static('./'))
// response
app.use(ctx => {
ctx.body = 'Hello Koa';
});
app.listen(3000);
创建koa/katsuki.html
katsuki.html
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Documenttitle>
head>
<body>
<div>katsukidiv>
body>
html>
启动服务,访问localhost:3000/katsuki.html
,访问到页面
koa路由插件
npm install koa-router
创建koa/routers
文件夹,再创建koa/routers/index.js
作为路由配置文件,创建koa/routers/katsuki.js
作为路由文件
index.js
const Router = require('koa-router');
// 创建路由
var router = new Router();
// 引入页面路由
const katsukiRouter = require('./katsuki');
router.use('/katsuki',katsukiRouter.routes());
module.exports = router;
katsuki.js
const Router = require('koa-router');
// 创建路由
var router = new Router();
router.get('/', ctx => {
ctx.body = 'katsuki desu';
})
module.exports = router;
修改koa/service.js
service.js
const Koa = require('koa');
const static = require('koa-static');
// 路由,routers引进是一个对象
const routers = require('./routers');
// 创建koa应用
const app = new Koa();
// 创建静态资源服务器,static('静态资源服务器路径')
app.use(static('./'))
// routers使用其中间件.routes()
app.use(routers.routes());
// response
app.use(ctx => {
ctx.body = 'Hello Koa';
});
app.listen(3000);
启动服务,访问localhost:3000/katsuki
,访问到该路由
在koa/service.js
中添加语句
service.js
// app.context是从其他创建ctx的原型,编辑可以为ctx添加属性
app.context.myname = 'katsukichan'
在koa/routers/katsuki.js
中修改语句
katsuki.js
router.get('/', ctx => {
ctx.body = ctx.myname;
})
修改后访问localhost:3000/katsuki
就是显示ctx.myname
的值
npm install koa-body
修改koa/routers/index.js
index.js
const Router = require('koa-router');
const koaBody = require('koa-body');
// 创建路由
var router = new Router();
// 引入页面路由
const katsukiRouter = require('./katsuki');
router.use(koaBody({
// 支持formdata
multipart:true,
// 文件支持
formidable:{
// 指定保存路径
uploadDir:'./uploads',
// 保持默认扩展名
keepExtensions:true,
// 改文件名
onFileBegin(filename,file){
// filename: 上传文件的原始名
// file:文件信息对象
// * path:
// file.path = './uploads/'+filename
}
}
}));
router.use('/katsuki',katsukiRouter.routes());
module.exports = router;
在koa/routers/katsuki.js
中添加语句
katsuki.js
添加post路由
router.post('/', ctx => {
ctx.body = ctx.request.body;
})
egg文档
使用脚手架
首次需全局安装
npm i egg-init -g
搭建脚手架
egg-init egg-example --type=simple
进入并安装依赖
cd egg-example
npm i
启动项目
npm run dev
访问地址
http://localhost:7001
egg脚手架
目录
在命令行中中断或关闭,egg服务器不会被中断,中断需要执行npm stop
,再启动执行npm start
修改app/controller/home.js
home.js
'use strict';
const Controller = require('egg').Controller;
class HomeController extends Controller {
async index() {
const { ctx } = this;
ctx.body = 'hi, egg';
}
async katsuki() {
const { ctx } = this;
ctx.body = 'katsuki desu';
}
}
module.exports = HomeController;
修改app/router.js
router.js
'use strict';
/**
* @param {Egg.Application} app - egg application
*/
module.exports = app => {
const { router, controller } = app;
router.get('/', controller.home.index);
router.get('/katsuki', controller.home.katsuki);
};
访问http://127.0.0.1:7001
显示hi,egg
,访问http://127.0.0.1:7001/katsuki
显示katsuki desu
koa
和egg
搭建路由后,结合node_数据库
封装等操作实现返回数据,为所欲为