寫在最前面:
只是測試,有些凌亂!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 資源包不少,坑也不少,是好事也是壞事,有的時候去琢磨配置一個包的時間就能寫兩個一樣能完成任務的類了!