# 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); ``````