CNO
一个服务器快速开发框架。其中加入了Mysql客户端管理,Mongodb客户端管理,Redis客户端管理,Request网络请求功能。
This is a quick develop framework for web server.Including Mysql Client Manager,Mongodb Client Manager,Redis Client Manager,Network request kit,etc.
注意:请在ES6环境下运行。
Attention: Please make sure running in ES6.
安装 Install
npm install -save cno
导入 Import
const CNO = ;
创建实例 New Instance
const configFilePath = './example/config.js'const configObject = const cno = configObject;
配置 Configure
// 添加配置// config.api 配置接口// config.api.duplicate // 是否支持重复声明接口// config.api.list // 接口文件列表// config.port 启动端口// config.headers // 配置http默认的headers,例如跨域// config.publicDir // 配置静态网页文件夹(绝对路径)cno = cno;// 配置一个Express.js实例cno = cno;
添加插件 Add Plugin
// Request网络请求cno = cno;// Mysql客户端管理cno = cno;// Redis客户端管理cno = cno;// Mongodb客户端管理cno = cno;
初始化 Initialize
// 初始化之后,cno实例无法在进行上述操作cno = cno;
使用插件 Use Plugin
Plugin.Request
request为基础进行封装的。
该插件是以// 获取插件cno = cno;cno = cno;request = cnorequest; // url 请求的url// method 请求方法,cno.request.GET,cno.request.POST,cno.request.PUT,cno.request.DELETErequestInstance = request; // params 请求参数对象,eg:url='/api',params={a:1},request.url='/api?a=1'requestInstance = requestInstance;// data 请求body对象,eg:url='/api',data={a:1},request.payload={a:1}requestInstance = request; // 'content-type': 'application/x-www-form-urlencoded'requestInstance = request;// 'content-type': 'multipart/form-data'requestInstance = request; // headers 自定义headersrequestInstance = requestInstance; // auth 授权信息requestInstance = requestInstance;// oauth 授权信息requestInstance = requestInstance; // 执行请求// returnPromise 是否返回Promise对象,默认返回async/awaitrequestInstance; // 获取相关教程console;
;
Plugin.Mysql
mysql为基础进行封装的。
该插件是以// 获取插件cno = cno;cno = cno;mysql = cnomysql; // options 数据库配置// options.host 主机// options.subHost 备用主机// options.port 端口// options.user 用户名// options.password 密码// options.database 数据库// options.maxThread 最大线程数,默认为 核心数 * 2 + 1,最少值为3// options.multipleStatements 是否开启多行表达式,默认支持mysqlConfig = options;client = mysql; // 执行sql// client 由mysql.create创建的实例// sql 合法的sql语句// args 用于置换sql中的未知参数result = mysql; // 销毁clientmysql; // 获取相关教程console;
Plugin.Mongodb
mongodb为基础进行封装的。
该插件是以cno = cno;cno = cno;mongodb = cnomongodb;;
Plugin.Redis
redis为基础进行封装的。
该插件是以// 获取插件cno = cno;cno = cno;redis = cnoredis; // 创建实例// host 主机// port 端口// password 密码client = ; // 设置数据// key 键// value 值// expire 有效时间(单位:秒),默认为86400(一天)client = client; // 获取数据// key 键value = client; // 删除数据// key 键client = client; // 获取相关教程console;
const client = cno;
关闭 ShutDown
// returnPromise 是否以Promise形式返回,默认async/awaitconst result = cno;
添加接口 Add Api
在config.js中添加接口文件
moduleexports = api: duplicate: false // 不支持重复声明接口 list:
创建接口文件
mkdir api && cd api && vi api1.js
编辑接口文件
const CNO = ;const ApiBuilder = CNOApiBuilder; // path支持RESTful语法/* eg:* add('/api1/:key',ApiBuilder.GET,(req)=>{* key = req.params.key* })* / // ApiBuilder.create('/api/') 创建一个根路径为'/api/'的建造者const api1 = ApiBuilder.create('/api/')// 添加一个path为'/api1',方法为GET的接口.add('/api1', ApiBuilder.GET, (req, res, next, cno) => { res.json({ route: api2.baseRoute });})// 添加一个path为'/api1/api2',方法为POST的接口.add('/api1/api2', ApiBuilder.POST, (req, res, next, cno) => { res.json({ route: api2.baseRoute });})// 生成cno可用的接口信息.build(); // ApiBuilder.create('/api/') 创建一个根路径为'/api/'的建造者const api2 = ApiBuilder.create('/api/')// 添加一个path为'/api2',方法为POST的接口.add('/api2', ApiBuilder.POST, (req, res, next, cno) => { res.json({ route: api2.baseRoute });})// 生成cno可用的接口信息.build(); // 只导出一个接口信息// module.exports = api1; // 同时导出两个接口信息module.exports = { api1, api2 };
在执行cno.initialize方法后,config.js所注册的接口将会添加到httpServer中。
添加默认响应头
// 编辑config.js,添加headers字段moduleexports = headers: 'Access-Control-Allow-Methods': 'POST, GET, PUT, DELETE, OPTIONS' 'Access-Control-Allow-Headers': 'X-Requested-With' 'Access-Control-Allow-Headers': 'Content-Type' 'Access-Control-Allow-Origin': 'https://chansos.com' 'Access-Control-Allow-Origin': 'https://www.chansos.com' ;
自定义启动端口
// 编辑config.js,添加port字段moduleexports = port: 3001 // 默认3000;
更多内容
开源官网
实例源码
意见反馈
邮箱(changeden520@gmail.com)
Official
Sample
Issues
Email(changeden520@gmail.com)
打赏 Donate