koa2-demo
这个项目是express风格的最新的Koa 2项目的示例,已集成到koa-generator里,算是集成一些所谓的最佳实践吧
Teck Stack
- Koa 2
- nodemon + runkoa(支持async/await,且不需关心babel)
- pm2 for deployment(服务器部署)
- express-style middlewares
- koa-router
- koa-views
- koa-static
- koa-bodyparser
Getting Start
git clone https://github.com/17koa/koa2-demo.git
cd koa2-demo
npm install
npm start
open in browser
启动方式
最简单启动方式
node bin/run
最常用的集成nodemon的方式,代码变动会自动重载(其实就是nodemon去执行bin/run)
npm start
支持pm2部署
#npm run pm2
pm2 start bin/run
支持koa2的3种中间件写法
Koa 2是一个 middleware framework, 它提供了 3 种不同类型的中间件写法
- common function
- async function(新增)
- generatorFunction
详见koa 2的文档
支持view层多种模板
koa-views
is using consolidate under the hood.
需要注意的koa2使用的koa-views也是下一版本的koa-views@next,当前项目已经处理过了,不需要再处理的,哈哈
jade
npm i -S jade
in app.js
app.use(views(__dirname + '/views', {
extension: 'jade'
}));
ejs
npm i -S ejs
in app.js
app.use(views(__dirname + '/views-ejs', {
extension: 'ejs'
}));
目录结构
➜ koa2-demo git:(master) tree . -L 2
.
├── LICENSE
├── README.md
├── app.js
├── bin
│ ├── run
│ └── www
├── node_modules
│ ├── co
│ ├── debug
│ ├── ejs
│ ├── jade
│ ├── koa
│ ├── koa-bodyparser
│ ├── koa-convert
│ ├── koa-json
│ ├── koa-logger
│ ├── koa-onerror
│ ├── koa-router
│ ├── koa-static
│ ├── koa-views
│ ├── nodemon
│ └── runkoa
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
├── routes
│ ├── index.js
│ └── users.js
├── views
│ ├── error.jade
│ ├── index.jade
│ └── layout.jade
└── views-ejs
├── error.ejs
└── index.ejs
24 directories, 13 files
说明
- bin/run(runkoa执行bin/www)
- bin/www是常规koa启动文件,和express的一样
- views是放默认的jade文件
- views-ejs是放ejs文件
推荐
如果你喜欢express风格的生成,推荐koa-generator
如果你喜欢babel + koa2可以参考Minimal koa v2 boilerplate.
全文完
欢迎关注我的公众号【node全栈】
请问,那么如果想在routes的文件中调用koa的上下文。该怎么加?
@i5ting 谢谢大神。再问一个问题,如果我在外面的koa上加了oauth认证。也可以传进来吗?
koa1还没有学习,koa2就发布了,是不是直接跳过1直接学习2比较好
@youth7 是真实项目还是学习?
验证了,写楼主。
@i5ting 公司的小项目
在我看来,koajs的特色和核心就是co库实现了表面看起来的阻塞式同步IO调用,为什么新版本里要抛弃呢?
已经增加了ci,哈哈 https://travis-ci.org/17koa/koa2-demo