nodejs所思所得
使用nodejs一年有余,细细品味走过的一年, 从一个只会嵌套callback的菜鸟,到稍许了解javascrip事件轮询,跳过很多坑,压过很多坎,一年了,总结一下node开发中的注意事项,自勉之余供大家吐槽一下:
使用middleware 定义需要重复验证工作,例如验证是登陆:
function requireLogin(req, res, next) {
if (登陆) {
next();
} else {
res.redirect();
}
}
如果代码callback嵌套超过了3层,请重构代码吧(太痛苦了),可以借用 EventProxy, async, Q
命名变量千万要拼写对单词,否则别人改你代码时候太痛苦了
使用function login (req, res, next) {} 会比直接 exports要好一些,好处见下:
//GET /login
function login(req, res, next) {
res.render("页面");
}
//POST /login
function loginAction(req, res, next) {
if (req.query.username != ‘wangdana‘) {
//可以直接渲染登陆页面错误,曾经见N个人曾在群里问怎么传递错误到前段,这样是不是很优雅
res.locals.error = ‘用户名或密码错误‘;
login(req, res, next);
}
}
. 配置文件可以放到golbal中,别每次都去 require(“./config”) require(“../config”);这样确实挺费劲的;
global.C = require("./config.json");
//配置文件无处不在
// a.js 可以直接待用C b.js 也可以直接待用C
. 时间处理,别在 new Date().getFullYear() + … ,有好用的moment,我们直接拿来吧
global.moment = require("moment"); moment("时间").fromNow(); 多么优雅呀
. DRY 这是编码规范中的一条,不要重复你的代码,如果有段代码写了两三遍,果断封装成函数吧,当然也可以自己写成模块,我在项目中很多都西都写成了模块,导入的时候发现路径短了好多,么么哒
. 单元测试,单元测试,千万要记得写哦,否则你的项目越来越大,改动下能头疼死你, 瞬间感觉提出TDD的大神也是有过我这种被改别人代码虐过千万次的经历呀!
//头等大事
describe("文件名", function() {
it ...
})
. 当然最重要的还是要理解js的事件轮询,搞懂原理。多写多看,但是不要多问,自己搞懂得可以记一生,被人说的也许就记住了几秒。
. 推荐nodejs经常配套使用东东:
bower 前段文件管理工具
grunt 自动化工具
angularjs 前段双向数据绑定框架
socket.io 实时通信
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。