Skip to content
A lightweight, scalable for agile development Node.js web framework, based on koa2.
JavaScript
Branch: master
Clone or download
Latest commit fc3e4c9 Jul 3, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib 修改默认监听0.0.0.0,避免非本机访问不通的问题 Feb 27, 2019
test
.eslintrc fix Dec 11, 2017
.gitignore 升级依赖 Oct 16, 2018
.npmignore remove files Dec 18, 2017
.travis.yml fix Dec 11, 2017
LICENSE fix Dec 11, 2017
README.md Update README.md Feb 26, 2019
package-lock.json security alerts Jul 3, 2019
package.json

README.md

ThinkKoa

介绍

npm version Build Status dependencies Status Package Quality Greenkeeper badge

A lightweight, scalable for agile development Node.js web framework, based on koa2.

ThinkKoa - 轻量级可扩展的敏捷开发Node.js框架,支持ES6/7全新特性,支持Koa、Express中间件,基于koa2。

特性

  • 基于koa2

ThinkKoa基于著名的Node.js框架koa2进行了薄封装。扩展了Koa的功能,能够迅速的进行Web开发。

  • 支持Koa/Express中间件

通过简单的引入机制,ThinkKoa可以很好的支持Koa中间件(包括Koa1及Koa2)。还提供了useExp()来使用Express的中间件。大大提升了框架的扩展性及开源模块利用率。

  • 为敏捷开发而生

ThinkKoa是在ThinkKoa团队3年的Node.js项目开发积累中酝酿诞生的,以提升团队开发效率、助力敏捷开发为目的。框架经过公司多个互联网产品上线、迭代以及大流量大并发的考验。

  • 支持多种项目结构和多种项目环境

ThinkKoa默认支持单模块模式,适合简单快速的项目。业务复杂的项目,可以开启多模块支持,功能划分更加清晰。ThinkKoa支持Nginx代理以及pm2部署,适合对稳定性和效率有要求的生产环境。

  • 支持灵活的自定义路由

ThinkKoa除默认的单模块模式(controller/action)及多模块模式(module/controller/action)路由规则以外,还支持用户定制路由。 在项目中增加路由文件配置即可灵活的支持Restful等各种自定义路由。

  • 拥抱 Node.js 8 LTS, 使用 ES6/7 特性来开发项目

Node.js 8支持99%的ES6新特性,并且相对6.0版本提升20%性能。现在使用 async/await 等一系列新特性,让Node.js开发变得赏心悦目。

const {controller, helper} = require('thinkkoa');
const user = require('../model/user.js');

//user controller, controller/user.js
module.exports = class extends controller {
    //login action
    async loginAction(){
        //If it is a get request, the login page is displayed directly
        if(this.isGet()){
          return this.render();
        }
        //Obtaining data by post method
        let name = this.post('username');
        if (helper.isEmpty(name)) {
          return this.fail('username is required');
        }
        let userModel = new user(this.app.config('config.model', 'middleware'));
        //Username matches the corresponding entries in the database.
        let result = await userModel.where({name: name, phonenum: {"not": ""}}).find();
        if(!result){
          return this.fail('login fail'); 
        }
        //Written into session
        await this.session('userInfo', result);
        return this.ok('login success'); 
    }
}

上面的代码我们使用了 ES6 里的 class, let 以及 ES7 里的 async/await 等特性,虽然查询数据库和写入 Session 都是异步操作,但借助 async/await,代码都是同步书写的。

文档

中文文档

快速开始

全局安装thinkkoa_cli

npm install -g thinkkoa_cli@2.x

创建项目

在合适的位置执行命令

think new project_name

进入这个目录

cd project_name

安装依赖

npm install

启动服务

npm start

开始访问

打开浏览器,访问http://localhost:3000

协议

MIT

You can’t perform that action at this time.