写在最前面:
只是测试,有些凌乱!php
这几天开始写密记的后台,处处随意看来看 node 和js的语法,感受乱糟糟的,什么 mean 架构,什么js 什么 es6,真是一团乱麻,习惯了面向对象,忽然让我有些无从下手,还好我之前作 php 和 c的时候有些面向过程的经验,扣来扣去也能测试几个简单的接口,可是像我这有点自虐倾向的人仍是不太满意,决定仍是用 面向对象来的方式来写吧。 发现es6 好像有class的概念,因此就决定用在node测试一下,看看是否凑效!
1. 新建一个test.js 文件,代码以下:node
呵呵 打印一下发现没问题 好像能够new 真的能够new,好激动!es6
.
2. 那就把这个类改形成一个通用的 response 类吧!
通过几回测试发现仍是这样比较靠谱!express
/** * @authors lpn (lpn@lpn.com) * @date 2017-01-16 13:59:27 * @version V0.0.1 */ class BaseResult{ constructor(code,msg,data){ this.code = code; this.msg = msg; this.data = data; } setCode(code){ this.code = code; } getCode(){ return this.code; } setMsg(msg){ this.msg = msg; } getMsg(){ return this.msg; } setData(data){ this.data = data; } getData(){ return this.data; } getRes(){ return {'code':this.code,'msg':this.msg,'data':this.data}; } } module.exports = { // 通用 SUCCESS : new BaseResult(0,'成功',{}), FAILED : new BaseResult(1,'失败',{}), //用户 USER_PASSWORD_ERROR : new BaseResult(101,'用户名或密码错误',{}), USER_CAPTCHA_ERROR : new BaseResult(102,'验证码错误',{}) }
.
3. 而后加 express 试试请求结果怎么样,新建mainTest.js,上代码json
/** * @authors lpn (lpn@lpn.com) * @date 2017-01-16 21:43:06 * @version V0.0.1 */ var express = require('express'); var app = express(); app.listen(5000); console.log('Server listening on 5000'); var BaseResult = require('./test'); BaseResult.SUCCESS.setData({a:10,b:[{c:20,d:30},{e:40,f:50}]}); app.get('/',function(req,res){ res.send(BaseResult.SUCCESS); }); //BaseResult.USER_PASSWORD_ERROR.setData(); app.post('/user',function(req,res){ res.send(BaseResult.USER_PASSWORD_ERROR); })
拿 posotman 请求 有结果,呵呵 有点意思,好像又回到了从前
架构
.
4. 其实这里有好几个让我迷惑的地方:app
res.send 和 res.json 我测试过他们的返回结果是同样的,估计是express对返回数据处理的时候,发现是对象就会用json 封装,是String res.send会直接返回textpost
在代码中也许有人看到有个 getRes方法,其实最开始我是担忧直接返回对象会被解析错误,可是后来测试的时候发现那个是不必的,没想到nodejs还挺聪明的!测试
.
5. soso 接着测试 类的继承ui
建立个 Base.js 上代码
/** * @authors lpn (lpn@lpn.com) * @date 2017-01-16 23:56:50 * @version V0.0.1 */ class Base{ constructor(arg1,arg2){ this.arg1 = arg1; this.arg2 = arg2; } save(){ console.log('Parent Saving..... '+this.arg1); } update(){ console.log('Parent Updating!!!! '+this.arg2); } } class User extends Base{ constructor(arg1,arg2,arg3){ super(arg1,arg2); this.arg3 = arg3; } remove(){ console.log('Child Removing!!!! '+this.arg3); } update(){ console.log('Child Updating ... '+this.arg3); } } user = new User('小明','老王','lpn'); user.save(); user.update(); user.remove();
看看打印结果,跟想要的同样
既然能这么玩,那就方便多啦!
. 6. 总结:node 资源包不少,坑也不少,是好事也是坏事,有的时候去琢磨配置一个包的时间就能写两个一样能完成任务的类了!