《koa2进阶学习笔记》写了关于koa2入门教程的书【持续更新...】
发布于 8 个月前 作者 ChenShenhai 18110 次浏览 最后一次编辑是 7 个月前 来自 分享

《koa2进阶学习笔记》附教程demo

第一次写书,如有错误,欢迎指正!O(∩_∩)O~。 持续更新笔记,后续会根据koa2 正式发布后添加koa2周边生态使用笔记

GitHub地址

https://github.com/ChenShenhai/koa2-note/

GitBook地址

https://chenshenhai.github.io/koa2-note/

目录

前言

  • ES6/7 带来的变革

自ES6确定和ES7的async/await开始普及,node.js的发展变得更加迅速,可以预见到JavaScript中令人“头疼”的多层嵌套回调(注意是”多层嵌套回调“)将会使用Promise + async/await的方式逐渐替代(不是完全替代,多层嵌套回调也有其特殊的应用场景)。

  • koa2 大势所趋的前景

基于async/await实现中间体系的koa2框架将会是是node.js web开发方向大势所趋的普及框架。基于generator/yield的koa1将会逐渐被koa2替代,毕竟使用co.js来处理generator是一种过渡的方式,虽然有其特定的应用场景,但是用async/await会更加优雅地实现同步写法。

初衷

  • 写笔记目的

从学生到工作写了几年的代码,觉得虽然学习新语言,新框架的主要目的是为了解决实际问题,其中更重要的是要每次入门了一门新技术后要及时留下点学习的痕迹,方便以后忘记可以从学习轨迹中迅速上手。

31 回复

很棒,自己总结是提升的关键。 准备在2.x正式版出来再好好学学

这个必须支持

支持 非常棒,koa2正式版应该就这两天了

大海处女贴,顶

O(∩_∩)O

更新2017.02.23:修复部分demo问题

更新2017.02.23:添加 异步上传图片实现 demo和 异步上传图片实现学习笔记

更新2017.02.24:添加开发单元测试教程笔记和demo

赞一个

来自酷炫的 CNodeMD

更新2017.02.25:由于koa@2正式发布了!O(∩_∩)O, 修改所有demo的koa2依赖及相关笔记文档

如果koa 中用第三方的模块,是不是必须得用promise重新封装一下?

赞一个!<br>【来自CNode社区小程序版的评论】<br>

看官网介绍,koa2是要node v7.6 以上是吧

@Tianfer 是的,因为nodejs 7.6.0 开始正式支持async/await,不需要加 --harmony

@yakczh 这个不一定,如果是第三方模块的API是callback方式使用的话,建议用promise封装一下,在 async/await 写法下使用起来方便些。

举个例子,假如有个第三方的文件读取库,API是callback的使用方式

// 假如有个第三方的文件读取库 myFs
const myFs = require('myFs')

// promise 封装第三方库的callback API
function  getFileContent ( path ) {
  return new Promise( ( resolve, reject ) => {
  	 myFs.readFile( path, ( err, content) =>  {
	 	if ( err ) {
			reject( err )
		} else {
			resolve( content )
		}
	 } )
  } )
}

// async/await 方式使用 
async function main(  ) {
   let content = await getFileContent( pathStr )
   console.log( content )
}

// koa2 中使用
app.use( async ( ctx ) => {
  if ( ctx.method === 'GET' && ctx.url === '/readFile' ) {
  	let content = await getFileContent( pathStr )
	ctx.body = content
  } else {
  	ctx.body = 'not found'
  }
})

非常感谢贡献知识的

Wonderful!!! 楼主,我想问一下:你的电子书网站是用什么工具生成的?

@manxisuo 用markdown写的,然后用gitbook命令编译成HTML,再push到github仓库的gh-pages分支上,具体步骤是

  • 用SUMMARY.md写目录和对应的目录md文件路径
  • 安装gitbook命令 npm install -g gitbook-cli
  • 用gitbook serve 编译并在浏览器查看效果
  • github建立个人静态博客页面 ${用户名}.github.io
  • 在一个项目中建立gh-pages分支,把gitbook编译后_book目录下的HTML代码push上去
  • 就可以在 https://${用户名}.github.io/${仓库名}/ 下访问电子书了

mark 怎么不用mongodb

强烈支持啊!真是好东西!请问LZ有没有pdf版本的呢?这样地铁上也能看了

@youarenode 因为MySQL比较容易上手理解,至于mongodb后面找个时间写一下哈,补充上去。

@hwoarangzk 因为还要持续更新,暂时还没做成PDF,但是这本书我是通过gitbook规范写的,如果你需要pdf,可以通过gitbook官网生成pdf。

回到顶部