# koa-project
**Repository Path**: mirrors/koa-project
## Basic Information
- **Project Name**: koa-project
- **Description**: 执行方式: node -harmony app 演示地址: http://koa.wvovo.com/ 文件以及作用: static.js 解决windows开发中遇到的问题以及解
- **Primary Language**: JavaScript
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: https://www.oschina.net/p/koa-project
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2020-08-05
- **Last Updated**: 2025-08-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#KNode version 2.3 Beta
#####基于 express babel 开发的 nodejs (传统刷新,restful,socket)模型的 立足微服务 开发框架!
安装依赖 `npm install`
运行程序 `node app.js`
##项目结构
+ app/module 传统页面模块
+ app/config 配置文件
+ app/model 数据模型
+ app/service 服务层
+ app/socket websocket功能模块
+ app/api restful 模块
`微服务调用方式 可看app.js node app 可以开启多端口模式 `
##数据库配置
数据库ORM利用waterline 进行操作 配置如下:
微服务框架可以在公共模块如 `/application/common/config/db.js`里面 或者
单服务里面 如 `app/config/db.js` 里面添加如下代码
```javascript```
export default {
db: {
connections: {
local: {
adapter: 'mongo',
host: '127.0.0.1',
port: 27017,
user: '',
password: '',
database: 'database'
}
}
}
}
``````
## schema 配置成功后,启动服务,系统会自动生成对应得model/local 目录,然后增加schema 代码:
```javascript```
module.exports = {
schema:true,
attributes: {
name:{'type':'string',required:true}
,startTime:{'type':'date'}
,endTime:{'type':'date'}
,info:{'type':'string'}
,status:{type:'integer',defaultsTo:0}
}
}
``````
具体配置可以参考 waterline的用法,ORM调用方式为:
async await 方法: `await D.model('collectionName').find().toPromise()`
回调方法: `D.model('collectionName').find().exec(function(error,data){})`
## 实现功能以及规划(版本号为已经实现功能)
+ websocket 支撑cluster
+ mirco 微服务 分离引入 2.2
+ 引入jwt 鉴权
+ 实现 restful模式 传统展示模式 websocket模式 等独立功能部署 version 2.2
+ 同一个framework文件 多文件调用 实现多独立模块调用同一框架问题 version 2.2
+ 完善开发文档
##独立进程设置方式2.3
``````
require('babel-core/register')//引入Babel 库
require(__dirname+'/framework/knode')({
root_path:__dirname+'/application',//应用程序入口
mod:['socket','api','module'],//启动socket 模式 api 模式 传统刷新页面模式 如果api 跟 module同时启动 api 路由为 /api/ 可以通过配置修改
env:'production',//配置环境
port:8888
});
``````
##pm2 支持2.3
``````
[
{
"script": "./ylp-activities.js",
"name": "ylp-activities",
"exec_mode": "fork",
},
{
"script": "./ylp-analysis-mq.js",
"name": "ylp-analysis-mq",
"exec_mode": "fork",
}
]
``````
## nginx 支持2.3
``````
server {
listen 80;
server_name domain.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://127.0.0.1:8888$request_uri;
proxy_redirect off;
}
}
``````
##activeMQ 支持2.3
``````
import Stomp from 'stompjs';
let client = Stomp.overTCP(G.mq.host, 61613)
client.connect(G.mq.username, G.mq.password, async(d)=> {
client.subscribe(G.mq_pay_queue, async(d)=> {
let data = d&&JSON.parse(d.body)
})
}, (d)=> {
return console.log('error')
})
``````
##socket redis cluster 支持2.3
`application/common/config/production/redis.js`
``````
export default {
redis:{
host:'localhost',
username:'root',
password:'password',
port:'123'
}
}
//socket 主动推送功能
import ioe from 'socket.io-emitter';
let emitter = ioe({ host: G.redis.host, port: G.redis.port })
//通知客户端已经发布了
emitter.of('/payCount').emit('updateFromMq', true);
``````