刚开始写node,感觉写出来的代码太丑了,可读性也不强。下面这段代码是一个简单的注册逻辑,用了Promise,希望大神拍砖,给一些风格或者是写法上的建议:
register: function(req, res) {
var sha1 = require('crypto').createHash('sha1');
var email = req.body.email;
var password = sha1.update(req.body.password).digest('hex');
var connect = mysql.connect(__dirname + '/../mysql.json', 'dbname');
var sql = 'into user(email, password) value (?, ?)';
emailAlreadExists(email).then(function() {
addUser(email, password)
.then(function(id) {
res.send(res.send(lib.genAjaxRet(0, 'success', {id: id})));
});
}, function() {
res.send(lib.genAjaxRet(10001, lib.s('EMAIL_EXISTS')))
});
}
register: (req, res) ->
sha1 = require('crypto').createHash('sha1')
email = req.body.email
password = sha1.update(req.body.password).digest('hex')
connect = mysql.connect(__dirname + '/../mysql.json', 'dbname')
sql = 'into user(email, password) value (?, ?)'
emailAlreadExists(email).then ->
addUser(email, password).then (id) ->
res.send res.send(lib.genAjaxRet(0, 'success', id: id))
->
res.send lib.genAjaxRet(10001, lib.s('EMAIL_EXISTS'))
请上 Coffee 贼船
@jysperm 这个又是 -> 又是 “.” 的, 感觉整个人都混乱了
可参考 airbnb JavaScript 编码风格
@cfddream 多谢
@jysperm 也不见得好到那去啊~
var crypto = require('crypto');
var mysql = require('mysql');
var connect = mysql.connect(__dirname + '/../mysql.json', 'dbname');
function secret(password) {
var sha1 = crypto.createHash('sha1');
var spassword = sha1.update(password).digest('hex');
return spassword;
}
function register(req, res) {
var email = req.body.email;
var password = secret(req.body.password);
var sql = 'into user(email, password) value (?, ?)';
function add() {
addUser(email, password).then(function(id) {
res.send(res.send(lib.genAjaxRet(0, 'success', {id: id})));
});
}
function exists() {
res.send(lib.genAjaxRet(10001, lib.s('EMAIL_EXISTS')));
}
emailAlreadExists(email).then(add, exists);
}
@louis-sherren 还是用Koa + co吧,写异步代码简单到和写PHP代码差不多了
@tulayang 嗯,把回调专门拿出来确实清爽得多
@andyhu 得看看文章,还不太了解, 发现这篇还不错的样子http://purplebamboo.github.io/2014/05/24/koa-source-analytics-1/
避免使用回调,用yield吧。 团队协作的代码规范见这里:http://www.amoa400.com/team-collaboration-standard/
@andyhu 我现在的网站已经用 express 搭建得差不多了,请教下直接用express + co有什么不好的地方呢?
@louis-sherren 也没什么不好,习惯用哪个就用哪个吧。如果习惯了koa,会觉得koa更方便和简洁灵活一些。不过差不了太多。koa的缺点是内核完全不带任何middleware,所有功能基本都要靠其他middleware模块来完成。目前用户贡献模块比较杂,需要逐一对比和试用。
@andyhu 了解了,多谢