如何学习 nodejs? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
shiren1118
V2EX    程序员

如何学习 nodejs?

  •  2
     
  •   shiren1118 2015-05-27 09:21:57 +08:00 5302 次点击
    这是一个创建于 3788 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 条回复    2015-05-27 17:18:12 +08:00
    raopeize
        1
    raopeize  
       2015-05-27 09:30:15 +08:00
    lion9527
        2
    lion9527  
       2015-05-27 09:35:47 +08:00
    这种标题,能先把语文学好吗?
    66beta
        3
    66beta  
       2015-05-27 09:39:04 +08:00
    手握cnode作者的书,打算去U2B看看视频算了
    BuilderQiu
        4
    BuilderQiu  
       2015-05-27 09:48:38 +08:00
    感觉像自问自答系列...
    airyland
        5
    airyland  
       2015-05-27 09:58:26 +08:00
    好烦这种标题,i5ting同学。
    shiren1118
        6
    shiren1118  
    OP
       2015-05-27 10:09:40 +08:00
    @lion9527
    @66beta
    @BuilderQiu
    @airyland

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

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

    能干活,而不是专家
    shiren1118
        22
    shiren1118  
    OP
       2015-05-27 16:42:19 +08:00
    @gamexg 如果你真的了解nodejs,看看我说的是不是标题党,有木有干货
    zonghua
        23
    zonghua  
       2015-05-27 17:11:57 +08:00 via iPhone
    @shiren1118 一周?他做前端也是很有经验的吧?
    shiren1118
        24
    shiren1118  
    OP
       2015-05-27 17:18:12 +08:00
    @zonghua 是的,做了2年前端,js基本无障碍
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1100 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 23:20 PVG 07:20 LAX 16:20 JFK 19:20
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86