Skip to content

Latest commit

 

History

History
161 lines (117 loc) · 3.17 KB

README.md

File metadata and controls

161 lines (117 loc) · 3.17 KB

koa2-demo

npm version Build

这个项目是express风格的最新的Koa 2项目的示例,已集成到koa-generator里,算是集成一些所谓的最佳实践吧

Tech 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

http://127.0.0.1:3000/

启动方式

最简单启动方式

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.

List of supported engines

需要注意的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.