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
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调用
// 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", }] ]
// 下载demo git clone https://github.com/koahubjs/koahub-demo.git // 进入项目 cd koahub-demo // 安装依赖 npm install // 启动项目 npm start
// 下载demo git clone https://github.com/koahubjs/koahub-demo-promise.git // 进入项目 cd koahub-demo-promise // 安装依赖 npm install // 启动项目 npm start
// 下载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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4