Coder Social home page Coder Social logo

koahubjs / koahub Goto Github PK

View Code? Open in Web Editor NEW
307.0 25.0 43.0 681 KB

KoaHub.js -- 中文最佳实践Node.js Web快速开发框架。支持Koa.js, Express.js中间件。当前项目已停止维护,推荐使用Doodoo.js

Home Page: https://www.doodooke.com

License: MIT License

JavaScript 32.74% HTML 64.80% CSS 2.46%
koahub koa koa2 koajs node nodejs

koahub's Introduction

KoaHub.js

license travis-ci codecov Dependency Status

KoaHub.js -- 中文最佳实践Node.js Web快速开发框架。支持Koa.js, Express.js中间件。当前项目已停止维护,推荐使用Doodoo.js

//base controller, admin/controller/base.controller.js
module.exports = class extends koahub.controller {

    async _initialize() {
        console.log('base _initialize');
    }

    async isLogin() {
        console.log('base isLogin');
    }
}

//index controller, admin/controller/index.controller.js
const base = require('./base.controller');
module.exports = class extends base {

    async _initialize() {
        await super._initialize();
    }

    async index() {
        this.view(1);
    }

    async index2() {
        this.json(1, 2);
    }

    async index3() {
        await this.render('index');
    }
}

环境要求:Node.js >= 7.6.0

特性

  • 支持koa全部中间件
  • 支持使用 ES6+ 全部特性来开发项目
  • 支持断点调试 ES6+ 项目
  • 支持多种项目结构和多种项目环境
  • 支持 Controller 中使用Koa.js的所有API
  • 支持多级 Controller
  • 支持自动加载
  • 支持钩子机制
  • 支持 Socket.io
  • 支持错误处理
  • 支持全局koahub变量
  • 支持快捷方法
  • 支持修改代码,立即生效
  • 支持前置,后置,空操作
  • 支持禁用控制器方法
  • 支持 Restful 设计
  • 支持 Common 自动加载
  • 支持启动自定义
  • ...

安装

npm install koahubjs/koahub --save

创建启动文件

// app/index.js启动文件
const Koahub = require('koahub');

// 初始化项目
const app = new Koahub();

// 启动项目
app.run();

方法

ctx上的函数或参数将自动加载到controller,例如支持 this.body = 'Hello World!', ctx中具体的API请参考Koa.js, controller中的扩展方法如下。

this.ctx;
this.next;
this.isGet();
this.isPost();
this.isAjax();
this.isPjax();
this.isMethod(method);
this.hook.add(name, action);
await this.hook.run(name, ...args);
this.download(file);
this.view(data);
this.json(data, msg, code);
this.success(data, msg);
this.error(data, msg);
await this.action(path, ...args);

快捷方法

// app/common.js 函数文件
module.exports = {
    add(a, b){
        return a + b;
    }
}
// 控制器中可以直接通过this.add调用

快捷中间件

app.use(async function (ctx, next) {

    ctx.model = function() {
        // ....
    }
    await next();
});

// 控制器中可以直接通过this.model调用

命令行工具

KoaHub CLI

配置

// app/config/default.config.js
module.exports = {
    port: 3000,
    default_module: 'admin'
}

//框架默认配置
//启动端口
port: 3000,

//默认模块,控制器,操作
default_module: 'home',
default_controller: 'index',
default_action: 'index',

//url后缀
url_suffix: '',

//自动加载配置
loader: {
    "controllers": {
        root: 'controller',
        suffix: '.controller.js',
        prefix: '/',
    },
    "configs": {
        root: 'config',
        suffix: '.config.js'
    },
    "middlewares": {
        root: 'middleware',
        suffix: '.middleware.js'
    }
}

//中间件默认配置
//middleware顺序
middleware: ['koa-logger'],

//http日志
'koa-logger': true,

//favicon设置
'koa-favicon': 'www/favicon.ico',

//body配置
body: {
    multipart: true
},

//cors配置
'koa-cors': false,

//session配置
'koa-session2': false,

//static配置
'koa-static-cache': false

其他

// 控制器初始化,前置,后置,空操作
async _initialize()
async _before()
async _before_index()
async index()
async _after_index()
async _after()
async _empty()

// 控制器私有方法
// 方法首页字符是`_`为私有方法

// 支持restful路由设置
// app/config/router.config.js
module.exports = [
    ['/product', {
        get: "/home/product/index"
    }],
    ['/product/:id', {
        get: "/home/product/detail",
        post: "/home/product/add",
        put: "/home/product/update",
        delete: "/home/product/delete",
    }]
]

开始应用

async/await

// 下载demo
git clone https://github.com/koahubjs/koahub-demo.git
// 进入项目
cd koahub-demo
// 安装依赖
npm install
// 启动项目
npm start

promise

// 下载demo
git clone https://github.com/koahubjs/koahub-demo-promise.git
// 进入项目
cd koahub-demo-promise
// 安装依赖
npm install
// 启动项目
npm start

generator

// 下载demo
git clone https://github.com/koahubjs/koahub-demo-generator.git
// 进入项目
cd koahub-demo-generator
// 安装依赖
npm install
// 启动项目
npm start

启动信息

[2017-05-14 11:48:05] [Koahub] Koahub Version: 2.2.6
[2017-05-14 11:48:05] [Koahub] Koahub Website: http://js.koahub.com
[2017-05-14 11:48:05] [Koahub] Nodejs Version: v8.0.0
[2017-05-14 11:48:05] [Koahub] Nodejs Platform: darwin x64
[2017-05-14 11:48:05] [Koahub] Server Enviroment: development
[2017-05-14 11:48:05] [Koahub] Server running at: http://127.0.0.1:3000

使用手册

KoaHub.js手册

官网

KoaHub.js官网

koahub's People

Contributors

einsqing avatar listtouch avatar zce avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.