koacss
连接:html
官网: https://koa.bootcss.com/# 入门: http://www.ruanyifeng.com/blog/2017/08/koa.html 进阶: https://chenshenhai.github.io/koa2-note/ 跨域: https://github.com/zadzbw/koa2-cors
koa 须要 node v7.6.0以上
npm i koa
koa 2.5.0
入门 const Koa = require('koa'); const app = new Koa(); const main = ctx => { ctx.response.body = 'Hello World'; }; app.use(main); app.listen(3000);
koa-generator 生成 koa项目 npm i koa-generator -g koa2 test cd test && npm i
koa2 获取后端接口,提供给前端使用前端
router.get('/string', async (ctx, next) => { let a = await axios.get('http://localhost:1111/comments') // 获取后端接口 console.log('a',a); let obj = { 'name': 'kang', 'age': 24 } ctx.body = a.data // 提供给前端访问 http://xxx:3000/string })
跨域node
const cors = require('koa2-cors') // 提供接口给前端,解决跨域 app.use(cors()) // 跨域
其余ios
【引入模板文件】 const fs = require('fs'); ctx.response.body = fs.createReadStream('./template.html'); 【原生路由: url请求判断 】 if (ctx.request.path !== '/') { ctx.response.type = 'html'; ctx.response.body = '<a href="/">Index Page</a>'; } 【koa-route 路由】 const Koa = require('koa'); const route = require('koa-route'); const app = new Koa(); const about = ctx => { ctx.response.type = 'html'; ctx.response.body = '<a href="/">Index Page</a>'; }; const main = ctx => { ctx.response.body = 'Hello World'; }; app.use(route.get('/', main)); app.use(route.get('/about', about)); app.listen(3000); const serve = require('koa-static'); // 静态资源 ctx.response.redirect() // 重定向 【logger 日志中间件 】 const logger = (ctx, next) => { console.log(`${Date.now()} ${ctx.request.url}`); next(); // 有next() 才会继续往下执行 } const main = ctx => { ctx.response.body = 'Hello World'; }; app.use(logger); app.use(main); // 有next()这里才会执行 app.listen(3000); 多个中间件会造成一个栈结构(middle stack),以"先进后出"(first-in-last-out)的顺序执行 // 异步中间件 必须 async 和 await const fs = require('fs.promised'); const main = async function (ctx, next) { ctx.response.type = 'html'; ctx.response.body = await fs.readFile('./template.html', 'utf8'); 【读文件】 }; const compose = require('koa-compose'); 【中间件合并】 compose([logger,main]) ctx.throw(500) 抛错 ctx.response.status = 404; // 经过改status 来抛错
koa2git
koa2 const Koa = require('koa') const app = new Koa() const bodyparser = require('koa-bodyparser') // bodyparser 不知道效果 const logger = require('koa-logger') // logger 不知道效果 const cors = require('koa2-cors') // cors const bouncer =require('koa-bouncer') // koa-bouncer 扩展router 里面的 ctx 方法 详见 npm bodyparser() 获取 post传递的表单数据、json数据,上传文件等,使用 this.body() 获取 app.use(bodyparser({ enableTypes:['json', 'form', 'text'] })) 可不配置: app .use(cors()) .use(bodyparser()) .use(logger()) .use(bouncer.middleware()) // extends the Koa context with some methods .use(require('koa-static')(__dirname + '/public')) // 静态资源 koa-logger 替换console.log输出的一个插件。