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 实时通信

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。