• 请不要在回答技术问题时复制粘贴 AI 生成的内容
shiren1118
V2EX  ›  程序员

如何学习 nodejs?

  •  2
     
  •   shiren1118 · May 27, 2015 · 5856 views
    This topic created in 4028 days ago, the information mentioned may be changed or developed.

    nodejs是比较简单的,只有你有前端js基础,那就按照我的办法来吧!一周足矣

    推荐技术栈

    • express 4.x (express最新版本,初学者先别去碰koa)
    • mongoose(mongodb)
    • bluebird(Promise/A+实现)
    • jade(视图层模板)
    • mocha(测试)
    • node-inspector(调试)

    https://github.com/i5ting/express-starter

    了解http协议,尤其是表单和ajax传值,在req里如何接收

    • 绝对地址和相对地址
    • querystring
    • url 和 uri
    • http status code
    • http verbs
    • req取参数的3种方法
    • 3种不同类型的post
    • 命令行玩法
    • supertest用法
    • what is rest?

    http://i5ting.github.io/node-http/

    了解db相关操作,先以mongoose为主

    • crud(增删改查)
    • 了解分页
    • 了解关系(1对1,1对多)在mongoose里如何实现
    • 了解statics方法和methods的区别
    • 了解pre和post的差别
    • 了解mongoose的插件机制
    • 了解mvc里m的作用,以及什么样的代码该放到模型里
    • 了解索引优化
    • 了解mongodb的部署

    了解Promise/A+规范,合理规避回调陷阱

    • 了解的node的异步
    • 了解异步的恶心
    • 了解异步基本场景,比如waterfall这样的路程使用async如何处理
    • 了解q和bluebird用法(如果有angularjs经验,推荐q,其他只推荐bluebird)
    • 了解bluebird的promisifyAll用法
    • 了解如何重构流程,以及代码的可读性

    使用tdd/bdd测试,最小化问题

    测试的好处,这里就不说了,但是有一点是要说的,node的调试比较难,往往不如写测试来的快,推荐学习一下

    • 理解最小问题思想,培养程序员该有的强大的内心
    • mocha的基本用法
    • 理解assert/should/expect等断言的用法
    • 理解测试生命周期
    • 理解done回调
    • 理解如何模拟数据
    • 理解http下的supertest测试
    • 理解测试覆盖率
    • 理解基于gulp自动化测试方法

    如果有兴趣,可以去了解更多bdd/tdd内容,甚至是cucumber.js

    你无论如何都要会的:调试

    调试有3种方法

    • node debug(太挫了,如果不是c,了解adb之类的人不推荐用)
    • node-inspector(推荐4※)
    • tdd/bdd(推荐5※)

    更多内容和视频见

    https://cnodejs.org/topic/5463f6e872f405c829029f7e

    欢迎关注我的公众号 [node全栈]

    node全栈.png

    24 replies    2015-05-27 17:18:12 +08:00
    CoderUndefined
        1
    CoderUndefined  
       May 27, 2015
    lion9527
        2
    lion9527  
       May 27, 2015
    这种标题,能先把语文学好吗?
    66beta
        3
    66beta  
       May 27, 2015
    手握cnode作者的书,打算去U2B看看视频算了
    BuilderQiu
        4
    BuilderQiu  
       May 27, 2015
    感觉像自问自答系列...
    airyland
        5
    airyland  
       May 27, 2015
    好烦这种标题,i5ting同学。
    shiren1118
        6
    shiren1118  
    OP
       May 27, 2015
    @lion9527
    @66beta
    @BuilderQiu
    @airyland

    哈哈,主要是写文章,给我现在的小弟们看,顺便也就发出来了

    如果大家不喜欢,觉得内容没意义,我就不发了
    FIDO
        7
    FIDO  
       May 27, 2015
    ES6的原生Promise和bluebird比较选哪个比较好?
    FIDO
        8
    FIDO  
       May 27, 2015
    其实我感觉最有效的学习方式就是在github上找点优秀的项目 慢慢看代码,最好能找到几个比较好的seed项目,直接写点东西出来。
    ChefIsAwesome
        9
    ChefIsAwesome  
       May 27, 2015
    promise 解决不了 callback 的问题。要创建一个 promise,就必须写个 callback。只不过 then 这个语法看上去好看而已。
    FIDO
        10
    FIDO  
       May 27, 2015
    @ChefIsAwesome 可以尝试下 CO + Generator + Promise
    shiren1118
        11
    shiren1118  
    OP
       May 27, 2015
    @FIDO 目前是bluebird好一些,还比较方便,不过以后iojs以及其他es6会用的更多,当然bb也会更新的
    shiren1118
        12
    shiren1118  
    OP
       May 27, 2015
    @ChefIsAwesome 逻辑是可以处理清楚的
    shiren1118
        13
    shiren1118  
    OP
       May 27, 2015
    @FIDO 这是一篇写给初学者的,所以没敢加koa,co这些,怕玩死很多人
    Wangxf
        14
    Wangxf  
       May 27, 2015
    谢谢楼主,已收藏
    catoncat
        15
    catoncat  
       May 27, 2015
    感谢分享,已经关注,期待更好的内容
    ZhaoMiing
        16
    ZhaoMiing  
       May 27, 2015
    jacob
        17
    jacob  
       May 27, 2015
    @lion9527 tbag,我建议你直接送死算了
    hahasong
        18
    hahasong  
       May 27, 2015
    自问自答标题当
    learnshare
        19
    learnshare  
       May 27, 2015
    “一周足矣” 欠揍
    gamexg
        20
    gamexg  
       May 27, 2015
    被标题坑了的路过...
    主要还是用 python ,nodejs 只用在 socket.io 里面,还是直接调用python代码。
    shiren1118
        21
    shiren1118  
    OP
       May 27, 2015
    @learnshare 我带的小弟都是从前端转得,一周上面的5点都学的差不多,可以正常上手干活,并没有虚假

    能干活,而不是专家
    shiren1118
        22
    shiren1118  
    OP
       May 27, 2015
    @gamexg 如果你真的了解nodejs,看看我说的是不是标题党,有木有干货
    zonghua
        23
    zonghua  
       May 27, 2015 via iPhone
    @shiren1118 一周?他做前端也是很有经验的吧?
    shiren1118
        24
    shiren1118  
    OP
       May 27, 2015
    @zonghua 是的,做了2年前端,js基本无障碍
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3022 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 72ms · UTC 09:02 · PVG 17:02 · LAX 02:02 · JFK 05:02
    ♥ Do have faith in what you're doing.