UNPKG

zeanium-node

Version:

Zeanium for Node.js, simple http server and custome your business.

226 lines (191 loc) 8.42 kB
# zeanium-node [![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [English Document](https://github.com/yangyxu/Zeanium-Node/blob/master/README_EN.md) ## 介绍 zeanium-node是基于[zeanium](https://github.com/yangyxu/zeanium), 是专门为nodejs开发的后端框架,提供了基础的`cache`、`cli`、`database`、`io`、`net`、`parser`、`session`、`template`. 基本的OOP使用语法请访问https://github.com/yangyxu/zeanium. ## 官方QQ群: 627104335 有任务问题可以添加qq群进行咨询 ## 相关产品 - [zeanium](https://github.com/yangyxu/zeanium): 面向对象的JavaScript底层框架 - [zeanium-react-web](https://github.com/yangyxu/zeanium-react-web): 基于zeanium和react同时支持web和wap端的前端UI框架 - [zeanium-react-native](https://github.com/yangyxu/zeanium-react-native): 基于zeanium和react native的Android/ios应用原生开发框架 ## 基础模块列表 - `cache`:有`数据库缓存`、`内存缓存`、`redis缓存`等三种cache的实现. - `cli`: 提供一系列基于zn命令行工具如`zn run`. - `db`: 提供不同数据库标准访问接口, 本框架已经提供基于mysql的实现方案, 也实现sql语句拼接及生成、mysql基于事件队列的事务机制、常见基础model实现及API操作. - `net`: 网络模块提供http、socket、web socket三种网络服务的实现接口,zeanium-node http模块是基于MVC框架. - `session`: 提供后台session管理机制, 有内存模式, 数据库模式. - `template`: 提供静态化模板引擎. ```bash $ npm install zeanium-node -g ``` Node.js 版本 >= 6.0.0. ## 功能 - 基础的http服务 - 自定义插件机制 - 框架最突出的亮点:动态开发、动态部署 >对于开发者来说这是非常重要的功能,常规的node.js开发需要借助于第三方库如forever, pm2等来守护node进程。使用我们的框架可以在不借助任何库的前提下可以动态开发和部署。如果你的工程代码发生改变,框架自身回去判断是否需要重新编译最新版本, 而且编译速度极快能看到整个编译过程. - 提供事件队列和promise来解决JavaScript异步 - 支持promise - 支持中间件 - 支持SQL事务来处理服务业务逻辑 - 支持Model, Controller继承. - 自定义model(M)&view(V)&controller(C) - 自定义http服务处理路由 - 提供静态化模板引擎 - 实现MySql数据库驱动接口 ## 文档和社区 - [官方网站/文档](https://www.zeanium.com)(正在完善中...) - [插件](https://github.com/search?q=topic%3Azn-plugin&type=Repositories): 我们提供系统开发常见的插件`zn-plugin-admin`、`zn-plugin-dbms`、`zn-plugin-wechat`、`zn-plugin-alipay`、`zn-plugin-workflow` - 官方QQ交流群: 627104335 ## 开始学习 zeanium-node是基于zeanium框架底层实现的后端框架, 提供面向对象编程的继承、封装、多态特性,同理zeanium-node也具备这些特性。想了解更多的面向对象功能请参考[zeanium](https://github.com/yangyxu/zeanium)。 db模块定义常规的数据模型和数据访问层接口 - 模型:Model、Collection、Store Model: 提供系统表结构数据模型的基类, 会对系统提交表单进行字段验证以及sql语句处理 Collection: 处理数据模型是某个具体的Model的几个对象 Store: 数据库对外统一接口 ```js //定义数据库模型 zn.define(function () { //公共数据模型 var model = zn.db.common.model; //zn.Model是定义数据库模型函数, 返回数据模型. return zn.Model("zn_rights_user", { mixins: [ model.Base //继承基础数据模型对象 ], //定义模型属性 properties: { name: { value: null, //字段值 type: ['varchar', 100], //字段数据类型 default: '' //创建表字段默认值 }, pwd: { value: null, type: ['varchar', 100], default: '' }, email: { value: null, type: ['varchar', 50], default: '' }, phone: { value: null, type: ['varchar', 20], default: '' }, address: { value: null, type: ['varchar', 250], default: '' }, avatarImg: { value: null, type: ['varchar', 100], default: '' }, lastLoginTime: { value: null, type: ['datetime'], format: "date_format({},'%Y-%c-%d %h:%i:%s')", default: null } } }); }) ``` ```js //定义控制器 zn.define(function () { return zn.Controller('user',{ methods: { init: function (args){ //构造函数 }, //定义login的接口 login: { method: 'GET/POST', //接口可接受的方法 argv: { //接口参数,如值是null则是必填参数 username: null, password: null }, value: function (request, response, chain){ this.collection('zn_rights_user') .selectOne(request.getValue()) .then(function (user){ if(user){ request.session.user = user; response.success(user); } else { response.error('Username or password is incorrect.'); } }, function (error){ response.error(error.message); }); } }, selectUsers: { method: 'GET/POST', //接口可接受的方法 argv: { //接口参数,如值是null则是必填参数 where: {} }, value: function (request, response, chain){ this.collection('zn_rights_user') .select({ fields: ['id','name'], where: request.getValue('where') }) .then(function (data){ response.success(data) }, function (error){ response.error(error.message); }); } } } }); }); ``` ## 试一下 ```sh npm install zeanium-node -g git clone https://github.com/yangyxu/zn-app-demo.git cd zn-app-demo npm install zn run ``` The terminal will show the message for http server. ## 安装项目依赖 ```sh npm install ``` ## 启动应用 系统启动默认配置是当前目录下的zn.server.config.js, 所以如果服务启动文件是这个文件名就可以直接运行zn run来启动服务。 也可以自定义启动配置文件,则需要运行zn run config:your.config.js ```sh zn run || zn run config:xxx.config.js ``` 如果您启动服务有一下内容输出到控制台则说明启动: ```text 2016-08-17 21:12:44.043 [INFO] [ Begin ] Scanning Path:../www/ 2016-08-17 21:12:44.051 [INFO] Loading Application: ../www/__zn__ 2016-08-17 21:12:44.059 [INFO] Register Project(Application): __zn__ 2016-08-17 21:12:44.060 [INFO] [ End ] Scanning Path(Application:1):../www/ 2016-08-17 21:12:44.060 [INFO] [ Begin ] Scanning Path:../bin/ 2016-08-17 21:12:44.063 [INFO] [ End ] Scanning Path(Application:0):../bin/ 2016-08-17 21:12:44.066 [INFO] http://0.0.0.0:8080 2016-08-17 21:12:44.068 [INFO] http://127.0.0.1:8080 2016-08-17 21:12:44.069 [INFO] You can press [ control + c ] to stop current zeanium server. ``` ## 文档 [http://www.zeanium.com](http://www.zeanium.com) ## The MIT License (MIT) [MIT](https://github.com/yangyxu/Zeanium-Node/blob/master/LICENSE) [downloads-image]: http://img.shields.io/npm/dm/zeanium-node.svg [npm-image]: https://img.shields.io/npm/v/zeanium-node.svg [npm-url]: https://www.npmjs.com/package/zeanium-node