Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

dapaer/NodeRocket

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

33 Commits

Repository files navigation

NodeRocket

这是一个基于express实现的二次封装框架,目的在于帮助开发人员快速搭建可使用的web应用

(框架亮点:程序员只需专注业务操作即可,其他框架自动处理,省时省力)

操作说明

准备操作

  1. 将项目克隆到本地环境(由于改项目还未封装完善,所以暂时没有放到npm仓库中)
  2. 安装babel编译器,可输入如下指令进行安装(默认系统已经配置好node环境)
    1. npm install -g babel-cli (-g 代表全局安装,由于项目使用到es6语法糖,所以需要通过babel将转为es5的代码)
    2. 设置webstorm的fileWatcher,使其可以利用刚才安装的babel自动为我们编译es6语法代码。(通过babel编译后会多出两个文件,分别是*-compiled.js、*-compiled.js.map)
  3. 将克隆下来的项目安装依赖文件
    1. 到当前项目执行npm install指令,系统自动将项目需要依赖的文件下载到node_modules文件夹中,依赖的文件(js)在package.json中有列明
  4. 安装mongodb(本项目暂时使用的是mongodb,后期会适应更多的数据库)
    1. mongodb的安装请查看官网
    2. mongodb创建用户名和密码可以查看我的博客

代码配置

打开项目根目录的sys->appConfig.json文件,配置数据库信息和appInfo信息
(appInfo信息暂时只有scanPackages,这个属性是指系统中要扫描作为主要业务提供的包)

运行代码

node app.js / supervisor app.js

如果有装supervisor的话 建议使用supervisor启动

业务编写

####1.快速创建一个模块功能 eg.以学生为例子,学生拥有姓名,性别,学号等属性

//在models中声明实体
/**
 * 学生实体类
 * Created by dapaer on 16/11/06.
 */
//获取schemaHepler工具类
const schemaHelper = require("../utils/schemaHelper");
//包装student的属性
const studentScheMa =schemaHelper.initSchema({
 name: String,
 sex:String,
 sNo:String
});
//暴露接口
exports.students = schemaHelper.model('student', studentScheMa); //	与student集合相关联
/*系统在此处为他创建5个方法(后面有更详细的操作方式)
 1 .saveEntity//保存实体
 2.findByCondition//通过条件查询
 3.findPageByCondition//通过条件分页查询
 4.queryById//通过id查询
 5.updateEntity//更新实体
 6.countByParam//根据条件统计个数
 7.deleteEntity//根据条件删除实体
*/

####2.实现CRUD操作 基于一开始在sys->appConfig.json配置好的scanPackage的文件夹中创建业务逻辑处理类(可根据个人喜好配置不同的路径,个人喜欢命名为business或service) 首先我们创建改业务操作类,并根据业务需要实现CRUD方法

/**
 * 学生业务操作类
 * Created by dapaer on 16/11/06.
 */
//引入student实体
var students = require('../models/student').students;
var service = {
	//保存实体
	saveEntity:function(req,res,param){
		students.saveEntity({
			name: param.name,
			sex:param.sex,
			sNo:param.sNo
		}).then((data)=>res.send(global.configResult(data)));
		/*es5:
			.then(function(data){
				res.send(global.configResult(data));
			});
		*/
		/*返回对象说明:返回统一调用res.send(global.configResult(xxx))
			global.configResult 会自动将传入的对象配置进一个结果对象中,
			其中包含几个属性
			1.success代表是否成功(有异常则系统自动置为false,前台可以统一控制,根据这个字段是否为false,弹出提示)
			2.message(返回操作的详细信息,一般常用于错误的时候使用,例如系统抛掷异常为空指针,success置为false,message自动置为系统错误,此时可全局控制
						若success为false,系统弹出提示框内容为message)
			3.obj传入的对象会自动被包装在obj属性中
		*/
	},
	//根据条件查询
	query:function(req,res,param){
		students.findByCondition(param).then(function(data){
			res.send(global.configResult(data));
		});
	},
 // 根据条件分页查询(系统会自动传入分页参数为第四个参数)
	queryByPage:function(req,res,param,page){
		students.findPageByCondition(param,page).then(function(data){
			res.send(global.configResult(data));
		});
	},
	//根据条件删除实体
	delete:function(req,res,param){
		students.deleteEntity(param).then(function(data){
			res.send(global.configResult(data));
		});
	},
	//根据id更新实体
	update:function(req,res,param){
		students.updateEntity({_id:param._id},{
			name: param.name,
			sex:param.sex,
			sNo:param.sNo
		}).then(function(data){
			res.send(global.configResult(data));
		});
	}
}
module.exports = service;

到此为止CRUD已经完全实现 ####3.执行方法与解惑 说明:所有的接口都是通过restful的风格,访问方式暂时固定(后期可自行设定)为/server/业务处理类的驼峰式名称!方法名 eg.调用保存实体的方法/server/studentService!saveEntity

  1. 保存实体
  2. 查询实体
  3. 根据分页条件查询实体
  4. 根据条件查询个数
  5. 更新实体
  6. 删除实体

###最后

  1. 前端的框架暂时配置的是一个ng1的框架,近期会变更为ng2。
  2. 后期会将开发一个完整的模块功能,从前端到后台到发布生产和性能调优等教程写在本人的博客,欢迎关注简书:dapaer
  3. 本框架会继续完善坚持每周都有一个迭代的版本,欢迎大家提issue,也同样环境大家fork一起开发。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /