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

如何学习 nodejs?

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

    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   ·   实用小工具   ·   983 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:56 · PVG 06:56 · LAX 14:56 · JFK 17:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.