精品 一个面向 Node.js 初学者的系列课程:node-lessons
发布于 11 年前 作者 alsotang 389741 次预览 最后一次回复是 3 个月前 来自 分享
GitHub repo 地址:https://github.com/alsotang/node-lessons
如果大家认为漏了哪些初学者应会的内容,可以在此留言,或者开个 issue 给我(!!推荐)。
《Node.js 包教不包会》 – by alsotang
为何写作此课程
在 CNode(https://cnodejs.org/) 混了那么久,解答了不少 Node.js 初学者们的问题。回头想想,那些问题所需要的思路都不难,但大部分人由于练手机会少,所以在遇到问题的时候很无措。国内唯一一本排的上号的 Node.js 书是 @朴灵(https://github.com/JacksonTian) 的 《深入浅出Node.js》(http://book.douban.com/subject/25768396/ ),但这本书离实战还是比较远的。
这个课程是希望提供更多的 Node.js 实战机会,通过每一节精心安排的课程目标,让 Node.js 的初学者们可以循序渐进地,有目的有挑战地开展 Node.js 的学习。
更多 Node.js 入门资料请前往:https://cnodejs.org/getstart
课程列表
- Lesson 0: 《搭建 Node.js 开发环境》
- Lesson 1: 《一个最简单的 express 应用》
- Lesson 2: 《学习使用外部模块》
- Lesson 3: 《使用 superagent 与 cheerio 完成简单爬虫》
- Lesson 4: 《使用 eventproxy 控制并发》
- Lesson 5: 《使用 async 控制并发》
- Lesson 6: 《测试用例:mocha,should,istanbul》
- Lesson 7: 《测试用例:supertest》
- Lesson 8: 《Mongodb 与 Mongoose 的使用》
- Lesson 9: 《一个简单的 blog》
License
MIT
108 回复
我喜欢你的写作风格
[[[@leapon](/user/leapon)](/user/leapon)](/user/leapon) 原来你喜欢扯淡式风格
不错呀, 楼主继续哟, 将来就是一本书了
非常感谢,我会学的,我会学的,我会仔细仔细的学的。:D
太郁闷了,Lesson 0 就出问题了,让我
trying to update但是我不知道怎么做,我尝试进入~/.nvm,再执行install.sh一样的结果。略屌,先顶
@think2011 需要 source 一下,教程下面的答疑应该有涉及这方面。
@alsotang 哦,刚开始上手OS X,还不太明白。
Lesson 6 关于测试方面的内容很有帮助,期待后续的教程!
good job 太棒了
感谢分享!
@songtanjichuan 还没写啊。。。
赞一个~
@think2011 nvm在安装完之后,会在profile文件里头添加上自己的export信息,在unix系统中,多个环境变量配置文件可能会互相冲突(优先级)。
如果你曾经装过例如homebrew等修改过环境变量的程序之后,可能会创建.bashrc文件,然后把环境变量写入到这个文件中。 但是nvm会将自己的信息添加到.profile中,unix默认设置下,如果有bashrc就不再加载profile了,所以你去把profile里头的东西复制到bashrc里头就行。
中心思想就是:mac下的nonlogin-shell和login=-shell的两个配置文件profile、bashrc是不共存的,除非你在其中一个配置文件中source了另一个配置文件,否则这两个配置文件只会有一个被执行,检查一下你的目录看看里头如果有多个配置文件就可能有问题了
(上述文件名啥的早就忘了可能会说错,意思就是这个意思)
@friskit-china @think2011 我在 .bash_profile 中 source 了 .profile
发 Mac 了好幸福 QAQ
@xadillax 来阿里照样有!
npm install superagent --save 出错 npm ERR! cb() never called!安装出错了
nice
唉,格了正版window8,是时候装个centOS了!学起学起
WIN也可以安装NODE.JS呀
我自己写了个简单的爬虫,用到了cheerio,但是如果目标网页是非utf8的话,拿到的中文全是乱码,这个怎么解决呢?我没有用superagent,就是用的node的http.get,谢谢
@hwoarangzk 建议用 superagent 配合 superagentparse 使用。如果坚持使用 http.get 的话,concat buffer 的时候使用 bufferhelper,转换编码使用 iconv-lite
嗯,刚才用iconv的时候,没注意第一个参数必须是个buffer,我之前用的是字符串,怪不得一直不成功,后来改成用buffer就好了
进来从头再学一遍,教程真是简明扼要,收获不少啊~ 我就是在windows下开发node.js的哇,哈哈哈哈~
@snoopy 大神真看得起这种入门教程啊!看来以后要更认真对待了,同行 review 什么的最可怕了。
我猜楼主是搞java的
@adminparry 能不能猜我是搞 ruby 的谢谢!
mac吊炸天…
为啥win下没讲
@ychow win 下时不时有不兼容的问题,所以放弃了。
坐等mongo,实现自己的小想法。
必须顶!
这类的课程完全是浪费时间, 学javasript 入门一下 + 实战 + 加各类编程思想,程序设计书籍足矣。 不断实践、思考、改进,不断编码实现。 时间的积累,代码量的积累一上来,自然而然豁然开朗。
@liveinjs 好像也有点道理,呵呵
@liveinjs 不同意你的说法。对项目作者自己,是一个整理自身所学的过程,能够查漏补缺,增强理解。对于读者,一是step by step的教程有助于减少入门的挫折感,二是作为例程可以在自己的项目里复用,三是学习思路和一些模块的用法。同时作为公开项目,可以众包建设、可以不断改进。这种模式可以说是一石多鸟,必将大行其道,取代现有的计算机类书籍。 @alsotang 加油~
@pockry …至少我是喜欢这种做题的方式…
@alsotang 我也挺喜欢,看起来不太费劲,但是,小心,别把蛋扯碎了。。。。。。
BTW, BDD是不是也是TDD的一种? 查了不少资料,说BDD是TDD的变种,但是实际驱动开发的时候,是不是也和TDD一样,先写测试。只不过两者关注点不一样,是不是呀?
@soliury 对,关注点不一样,bdd 看问题的层面更高一点。tdd 被认为更倾向于测接口,而 bdd 被认为要模拟用户的行为来测试。
了解一下就好了。
@alsotang 嗯嗯。 那nodeclub的测试是BDD类型的?should.js好像就是BDD的断言库。
@soliury should.js 是 bdd 的类型库,assert 就比较像 tdd 的了。不过是哪种不重要,主要是测试用例覆盖齐不齐。
@liveinjs 整理这些课程也并不简单,每个人的基础不一样,学习方法也不一样,你不能用 “这类的课程完全是浪费时间” 一句话说写,也给自己留点余地,感谢 @alsotang 的分享
观众还是一边倒, @liveinjs 要加油了,看了一下你的repos, https://github.com/liveinjs/myfn
abtest,js视乎得改个名。 也不是找茬,纯粹好奇就过去瞄了一眼。 想说,贡献代码、文档是一件积极美好的事情,在否定美好的时候,请带来更美好的! 和@alsotang 私下沟通过,他不是要做21天精通node.js, 而是用node.js 来串讲web开发这件事。 教程还在不断完善中,talking or laughing is cheap, show me the code死等
Lesson 8: 《Mongodb 与 Mongoose 的使用》@liuzhengming 额,这个lesson计划可能是我写,这么看来还是 @alsotang 来写比较好
@Ricardo-Li 你写,我帮你修订。
express 4.xx后变化很大,node 代码14年开始的代码简直全变化了,这可能是12年开始的node学习的一个分水岭阶段。
急需一个 express 4.xx +mysql 这种例子应用,哪里能找到呢
@gotolnc mysql 的使用没有什么特殊的地方啊,express 用好了就 ok 了。
@Ricardo-Li 期待,期待…
@alsotang 现在网上全是express 4以前的例子,哪里有最新的例子想看一下,发现3的例子基本上不能运行
恩,不错,赞一个,希望noder越来越多
@songtanjichuan 写东西也累的啊…周末…
@klamtlne 学习啦
短小精悍,但是每章看起来都很充实!
好东西,找机会玩一下
@mexiQQ 一起来搞搞社区呗:)
把学生会的事情忙完一定好好跟你学,, 之前看的是教程是 这个 感觉你讲的更详细呢,好评
@noctiomg 都是好教程:)
用windows,第一课就卡住了:(
@gotolnc 之前都白学了,要重新学?
@fenode nvm ls-remote是什么? 不能直接nvm install v0.10.32么?
@alsotang https://github.com/alsotang/node-lessons/tree/master/lesson6 介绍一下
istanbul的ignore语法会更全面一些,我觉得可以在:这里展开讲解,我中文不行,就不提PR了 哈哈(我这也算半同行review了哈)
@yorkie 这个也太细节了吧
@alsotang 哈哈 我个人比较强迫症,但是“没法”两个字会给读者一种无能为力的赶脚,或者给个原文链接做拓展可好
@alsotang 你好,在学习到 Lesson 4: 《使用 eventproxy 控制并发》 ,有问题,
topicUrls.forEach(function (topicUrl) {
拥有一个能用的例子来供学习,这种感觉真是幸福(^o^)/~
课说得很清楚哦!很好懂。不过。 第五课有一些不是很明白。 var fetchUrl = function(url, callback){ var delay = parseInt((Math.random() * 10000000) % 2000, 10); concurrencyCount++; console.log(‘现在的并发数是’, concurrencyCount, ‘,正在抓取的是’, url, ‘,耗时’ + delay + ‘毫秒’)
} 定时器里的不是很明白。
@ihqn setTimeout用来模拟一个一步操作。
@alsotang 汗,最近忙着找实习工作,今天刚刚安顿下来,好啊,你不嫌弃我渣的话
@mexiQQ 实习找到哪里了?
@alsotang segmentFault
@mexiQQ 也在杭州啊
@alsotang 对啊对啊Y(^_^)Y约吗?
@mexiQQ … @Ricardo-Li 举报
@alsotang 管理员,这回复该删了
做lesson4的练习时,
,使用url.resolve这个方法,提示参数必须为
字符串,但我这个确实字符串啊,求教什么原因啊
继续写啊
@i5ting 太监了。。。
顶一个
还不错,先收录了 自豪地采用 CNodeJS ionic
流弊
#你的计划呢 三年了
哈哈哈
@iceonion 放弃了。。。
@alsotang 男人 怎么可以随随便便就放弃呢 雄起。。雄起。。雄起
谢谢楼主
☆ 来自微信小程序 cnode助手
☆ 来自微信小程序 cnode助手
谢谢
☆ 来自微信小程序 cnode助手
@alsotang 请教,做lesson4的挑战题取积分的时候,遇到一个难点,不知道怎样用superagent里面取到的变量取修改外面的全局变量,代码(部分)如下:
mark ,收藏
@magicdawn win也不错
@alsotang 同志,能帮我解封一个账户不
@1103132201 闫春阳?九江学院?
写得很好
点赞
写得很好,点赞