{"success":true,"data":{"id":"5433d5e4e737cbe96dcef312","author_id":"504c28a2e2b845157708cb61","tab":"share","content":"<div class=\"markdown-text\"><p>GitHub repo 地址：<a href=\"https://github.com/alsotang/node-lessons\">https://github.com/alsotang/node-lessons</a></p>\n<p>如果大家认为漏了哪些初学者应会的内容，可以在此留言，或者开个 issue 给我（!!推荐）。</p>\n<hr>\n<h1>《Node.js 包教不包会》 – by alsotang</h1>\n<h1>为何写作此课程</h1>\n<p>在 CNode(<a href=\"https://cnodejs.org/\">https://cnodejs.org/</a>) 混了那么久，解答了不少 Node.js 初学者们的问题。回头想想，那些问题所需要的思路都不难，但大部分人由于练手机会少，所以在遇到问题的时候很无措。国内唯一一本排的上号的 Node.js 书是 @朴灵(<a href=\"https://github.com/JacksonTian\">https://github.com/JacksonTian</a>) 的 《深入浅出Node.js》(<a href=\"http://book.douban.com/subject/25768396/\">http://book.douban.com/subject/25768396/</a> )，但这本书离实战还是比较远的。</p>\n<p>这个课程是希望提供更多的 Node.js 实战机会，通过每一节精心安排的课程目标，让 Node.js 的初学者们可以循序渐进地，有目的有挑战地开展 Node.js 的学习。</p>\n<p>更多 Node.js 入门资料请前往：<a href=\"https://cnodejs.org/getstart\">https://cnodejs.org/getstart</a></p>\n<h1>课程列表</h1>\n<ul>\n<li>Lesson 0: <a href=\"https://github.com/alsotang/node-lessons/tree/master/lesson0\">《搭建 Node.js 开发环境》</a></li>\n<li>Lesson 1: <a href=\"https://github.com/alsotang/node-lessons/tree/master/lesson1\">《一个最简单的 express 应用》</a></li>\n<li>Lesson 2: <a href=\"https://github.com/alsotang/node-lessons/tree/master/lesson2\">《学习使用外部模块》</a></li>\n<li>Lesson 3: <a href=\"https://github.com/alsotang/node-lessons/tree/master/lesson3\">《使用 superagent 与 cheerio 完成简单爬虫》</a></li>\n<li>Lesson 4: <a href=\"https://github.com/alsotang/node-lessons/tree/master/lesson4\">《使用 eventproxy 控制并发》</a></li>\n<li>Lesson 5: <a href=\"https://github.com/alsotang/node-lessons/tree/master/lesson5\">《使用 async 控制并发》</a></li>\n<li>Lesson 6: <a href=\"https://github.com/alsotang/node-lessons/tree/master/lesson6\">《测试用例：mocha，should，istanbul》</a></li>\n<li>Lesson 7: 《测试用例：supertest》</li>\n<li>Lesson 8: 《Mongodb 与 Mongoose 的使用》</li>\n<li>Lesson 9: 《一个简单的 blog》</li>\n</ul>\n<h1>License</h1>\n<p>MIT</p>\n</div>","title":"一个面向 Node.js 初学者的系列课程：node-lessons","last_reply_at":"2025-10-15T01:53:07.125Z","good":true,"top":false,"reply_count":108,"visit_count":394839,"create_at":"2014-10-07T12:00:36.270Z","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"replies":[{"id":"5433d866e737cbe96dcef313","author":{"loginname":"leapon","avatar_url":"https://avatars1.githubusercontent.com/u/4295945?v=3&s=120"},"content":"<div class=\"markdown-text\"><p>我喜欢你的写作风格</p>\n</div>","ups":["5404a4120256839f712590f3","50f3b267df9e9fcc58452224","56ce9a441739f76e1a05d3e1","5697a7c169d67aff5a8353db","57bfb35b100afbbc0dcc53c4","5822a40fb71596cc386783e8","550959b33135610a365b01e2","590c2ed552c3650e042a7fd9","59c08e438812ce51127a8fd1","5acebb703edb2aff6be85723","5b43ded4fb9e84ec69cc1943","67544fb3257f2941383f9f66"],"create_at":"2014-10-07T12:11:18.981Z","reply_id":null,"is_uped":false},{"id":"5433e51ce737cbe96dcef315","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>[[[<a href=\"/user/leapon\">@leapon</a>](/user/leapon)](/user/leapon)](/user/leapon) 原来你喜欢扯淡式风格</p>\n</div>","ups":["50f5a8dadf9e9fcc58635898","51ed5627f4963ade0ea60395","590c2ed552c3650e042a7fd9","59c08e438812ce51127a8fd1","5a3e6abfd92f2f5b185ad176","5acebb703edb2aff6be85723"],"create_at":"2014-10-07T13:05:32.158Z","reply_id":"5433d866e737cbe96dcef313","is_uped":false},{"id":"5433f893e737cbe96dcef31f","author":{"loginname":"Pana","avatar_url":"https://avatars0.githubusercontent.com/u/552081?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>不错呀, 楼主继续哟, 将来就是一本书了</p>\n</div>","ups":["5a3e6abfd92f2f5b185ad176"],"create_at":"2014-10-07T14:28:35.184Z","reply_id":null,"is_uped":false},{"id":"54340970e737cbe96dcef32c","author":{"loginname":"think2011","avatar_url":"https://avatars1.githubusercontent.com/u/3961388?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>非常感谢，我会学的，我会学的，我会仔细仔细的学的。：D</p>\n</div>","ups":[],"create_at":"2014-10-07T15:40:32.916Z","reply_id":null,"is_uped":false},{"id":"54340e24e737cbe96dcef32e","author":{"loginname":"think2011","avatar_url":"https://avatars1.githubusercontent.com/u/3961388?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><img src=\"//static.cnodejs.org/FqEiClQn3O4jdq8Vy4DTb1d_oWXy\" alt=\"屏幕快照 2014-10-07 23.58.26.png\"></p>\n<p>太郁闷了，Lesson 0 就出问题了，让我 <code>trying to update</code> 但是我不知道怎么做，我尝试进入 <code>~/.nvm</code>，再执行 <code>install.sh</code> 一样的结果。</p>\n</div>","ups":[],"create_at":"2014-10-07T16:00:36.045Z","reply_id":null,"is_uped":false},{"id":"54341143e737cbe96dcef330","author":{"loginname":"klamtlne","avatar_url":"https://avatars3.githubusercontent.com/u/8141958?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>略屌，先顶</p>\n</div>","ups":[],"create_at":"2014-10-07T16:13:55.871Z","reply_id":null,"is_uped":false},{"id":"54341627e737cbe96dcef332","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/think2011\">@think2011</a> 需要 source 一下，教程下面的答疑应该有涉及这方面。</p>\n</div>","ups":[],"create_at":"2014-10-07T16:34:47.933Z","reply_id":"54340e24e737cbe96dcef32e","is_uped":false},{"id":"54341a57e737cbe96dcef336","author":{"loginname":"think2011","avatar_url":"https://avatars1.githubusercontent.com/u/3961388?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/alsotang\">@alsotang</a> 哦，刚开始上手OS X，还不太明白。</p>\n<p>Lesson 6 关于测试方面的内容很有帮助，期待后续的教程！</p>\n</div>","ups":[],"create_at":"2014-10-07T16:52:39.916Z","reply_id":"54341627e737cbe96dcef332","is_uped":false},{"id":"54348542e737cbe96dcef33b","author":{"loginname":"ty4z2008","avatar_url":"https://avatars0.githubusercontent.com/u/1913756?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>good job 太棒了</p>\n</div>","ups":[],"create_at":"2014-10-08T00:28:50.151Z","reply_id":null,"is_uped":false},{"id":"54349a58e737cbe96dcef34b","author":{"loginname":"zhyihui1986","avatar_url":"https://avatars.githubusercontent.com/u/4401837?v=3&s=120"},"content":"<div class=\"markdown-text\"><p>感谢分享！</p>\n</div>","ups":[],"create_at":"2014-10-08T01:58:48.458Z","reply_id":null,"is_uped":false},{"id":"54349cfee737cbe96dcef351","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/songtanjichuan\">@songtanjichuan</a> 还没写啊。。。</p>\n</div>","ups":[],"create_at":"2014-10-08T02:10:06.852Z","reply_id":"54349c95e737cbe96dcef34f","is_uped":false},{"id":"54349fb4e737cbe96dcef357","author":{"loginname":"yaochun","avatar_url":"//gravatar.com/avatar/0163d735779c0e0f54ccba7b66ea735c?size=48"},"content":"<div class=\"markdown-text\"><p>赞一个~</p>\n</div>","ups":[],"create_at":"2014-10-08T02:21:40.671Z","reply_id":null,"is_uped":false},{"id":"5434a36ce737cbe96dcef35d","author":{"loginname":"friskit-china","avatar_url":"https://avatars.githubusercontent.com/u/2494883?v=2&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/think2011\">@think2011</a> nvm在安装完之后，会在profile文件里头添加上自己的export信息，在unix系统中，多个环境变量配置文件可能会互相冲突（优先级）。</p>\n<p>如果你曾经装过例如homebrew等修改过环境变量的程序之后，可能会创建.bashrc文件，然后把环境变量写入到这个文件中。\n但是nvm会将自己的信息添加到.profile中，unix默认设置下，如果有bashrc就不再加载profile了，所以你去把profile里头的东西复制到bashrc里头就行。</p>\n<p>中心思想就是：mac下的nonlogin-shell和login=-shell的两个配置文件profile、bashrc是不共存的，除非你在其中一个配置文件中source了另一个配置文件，否则这两个配置文件只会有一个被执行，检查一下你的目录看看里头如果有多个配置文件就可能有问题了</p>\n<p>（上述文件名啥的早就忘了可能会说错，意思就是这个意思）</p>\n</div>","ups":["51cfccdd73c638f3708c58d8"],"create_at":"2014-10-08T02:37:32.006Z","reply_id":"54340e24e737cbe96dcef32e","is_uped":false},{"id":"5434a7fe5a68db8073c4a22e","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/friskit-china\">@friskit-china</a> <a href=\"/user/think2011\">@think2011</a> 我在 .bash_profile 中 source 了 .profile</p>\n</div>","ups":["51cfccdd73c638f3708c58d8"],"create_at":"2014-10-08T02:57:02.640Z","reply_id":"5434a36ce737cbe96dcef35d","is_uped":false},{"id":"5434deb55a68db8073c4a281","author":{"loginname":"XadillaX","avatar_url":"https://avatars.githubusercontent.com/u/2842176?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>发 Mac 了好幸福 QAQ</p>\n</div>","ups":[],"create_at":"2014-10-08T06:50:29.051Z","reply_id":null,"is_uped":false},{"id":"5434df795a68db8073c4a283","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/xadillax\">@xadillax</a> 来阿里照样有！</p>\n</div>","ups":[],"create_at":"2014-10-08T06:53:45.104Z","reply_id":"5434deb55a68db8073c4a281","is_uped":false},{"id":"54351dbe9a5a282178cef6ec","author":{"loginname":"xhuiinit","avatar_url":"https://avatars.githubusercontent.com/u/4319124?v=2&s=120"},"content":"<div class=\"markdown-text\"><p>npm install superagent --save   出错   npm ERR! cb() never called!安装出错了</p>\n</div>","ups":[],"create_at":"2014-10-08T11:19:26.164Z","reply_id":null,"is_uped":false},{"id":"5435dfeb9a5a282178cef727","author":{"loginname":"LL101SS","avatar_url":"https://avatars.githubusercontent.com/u/4715352?v=3&s=120"},"content":"<div class=\"markdown-text\"><p>nice</p>\n</div>","ups":[],"create_at":"2014-10-09T01:07:55.727Z","reply_id":null,"is_uped":false},{"id":"54362dd19a5a282178cef783","author":{"loginname":"DevinXian","avatar_url":"https://avatars.githubusercontent.com/u/5300023?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>唉，格了正版window8，是时候装个centOS了！学起学起</p>\n</div>","ups":[],"create_at":"2014-10-09T06:40:17.043Z","reply_id":null,"is_uped":false},{"id":"543634239a5a282178cef78a","author":{"loginname":"akin520","avatar_url":"https://avatars.githubusercontent.com/u/1317859?v=3&s=120"},"content":"<div class=\"markdown-text\"><p>WIN也可以安装NODE.JS呀</p>\n</div>","ups":[],"create_at":"2014-10-09T07:07:15.087Z","reply_id":null,"is_uped":false},{"id":"54364b719a5a282178cef7b1","author":{"loginname":"hwoarangzk","avatar_url":"https://avatars0.githubusercontent.com/u/4715246?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>我自己写了个简单的爬虫，用到了cheerio，但是如果目标网页是非utf8的话，拿到的中文全是乱码，这个怎么解决呢？我没有用superagent，就是用的node的http.get，谢谢</p>\n</div>","ups":[],"create_at":"2014-10-09T08:46:41.510Z","reply_id":null,"is_uped":false},{"id":"54364d4e9a5a282178cef7b5","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/hwoarangzk\">@hwoarangzk</a> 建议用 superagent 配合 superagentparse 使用。如果坚持使用 http.get 的话，concat buffer 的时候使用 bufferhelper，转换编码使用 iconv-lite</p>\n</div>","ups":[],"create_at":"2014-10-09T08:54:38.257Z","reply_id":"54364b719a5a282178cef7b1","is_uped":false},{"id":"543653d99a5a282178cef7bd","author":{"loginname":"hwoarangzk","avatar_url":"https://avatars0.githubusercontent.com/u/4715246?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>嗯，刚才用iconv的时候，没注意第一个参数必须是个buffer，我之前用的是字符串，怪不得一直不成功，后来改成用buffer就好了</p>\n</div>","ups":[],"create_at":"2014-10-09T09:22:33.732Z","reply_id":null,"is_uped":false},{"id":"543686739a5a282178cef7f2","author":{"loginname":"DoubleSpout","avatar_url":"https://avatars0.githubusercontent.com/u/971370?v=3&s=120"},"content":"<div class=\"markdown-text\"><p>进来从头再学一遍，教程真是简明扼要，收获不少啊~\n我就是在windows下开发node.js的哇，哈哈哈哈~</p>\n</div>","ups":[],"create_at":"2014-10-09T12:58:27.013Z","reply_id":null,"is_uped":false},{"id":"54369a7d9a5a282178cef7fe","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/snoopy\">@snoopy</a> 大神真看得起这种入门教程啊！看来以后要更认真对待了，同行 review 什么的最可怕了。</p>\n</div>","ups":[],"create_at":"2014-10-09T14:23:57.349Z","reply_id":"543686739a5a282178cef7f2","is_uped":false},{"id":"5436b7c49a5a282178cef818","author":{"loginname":"adminparry","avatar_url":"https://avatars0.githubusercontent.com/u/7668616?v=3&s=120"},"content":"<div class=\"markdown-text\"><p>我猜楼主是搞java的</p>\n</div>","ups":[],"create_at":"2014-10-09T16:28:52.441Z","reply_id":null,"is_uped":false},{"id":"5436b98e9a5a282178cef81a","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/adminparry\">@adminparry</a> 能不能猜我是搞 ruby 的谢谢！</p>\n</div>","ups":[],"create_at":"2014-10-09T16:36:30.464Z","reply_id":"5436b7c49a5a282178cef818","is_uped":false},{"id":"54373ceed73c7ebc269adb1a","author":{"loginname":"magicdawn","avatar_url":"https://avatars.githubusercontent.com/u/4067115?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>mac吊炸天…</p>\n</div>","ups":[],"create_at":"2014-10-10T01:57:02.783Z","reply_id":null,"is_uped":false},{"id":"54376f1ed73c7ebc269adb50","author":{"loginname":"ychow","avatar_url":"https://avatars.githubusercontent.com/u/6530996?v=2&s=120"},"content":"<div class=\"markdown-text\"><p>为啥win下没讲</p>\n</div>","ups":["5c05d774d3b8ab334e8da4a7"],"create_at":"2014-10-10T05:31:10.327Z","reply_id":null,"is_uped":false},{"id":"5437749cd73c7ebc269adb56","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/ychow\">@ychow</a> win 下时不时有不兼容的问题，所以放弃了。</p>\n</div>","ups":[],"create_at":"2014-10-10T05:54:36.914Z","reply_id":"54376f1ed73c7ebc269adb50","is_uped":false},{"id":"5438174da220049637e41934","author":{"loginname":"kunl","avatar_url":"https://avatars2.githubusercontent.com/u/2870324?v=3&s=120"},"content":"<div class=\"markdown-text\"><p>坐等mongo，实现自己的小想法。</p>\n</div>","ups":[],"create_at":"2014-10-10T17:28:45.385Z","reply_id":null,"is_uped":false},{"id":"5438e1980a81cb4c4881c304","author":{"loginname":"tolerious","avatar_url":"https://avatars0.githubusercontent.com/u/2922120?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>必须顶！</p>\n</div>","ups":[],"create_at":"2014-10-11T07:51:52.870Z","reply_id":null,"is_uped":false},{"id":"543ba11e6732efc86e5d104f","author":{"loginname":"liveinjs","avatar_url":"https://avatars.githubusercontent.com/u/3499785?v=3&s=120"},"content":"<div class=\"markdown-text\"><p>这类的课程完全是浪费时间，\n学javasript 入门一下 + 实战 + 加各类编程思想，程序设计书籍足矣。\n不断实践、思考、改进，不断编码实现。\n时间的积累，代码量的积累一上来，自然而然豁然开朗。</p>\n</div>","ups":[],"create_at":"2014-10-13T09:53:34.735Z","reply_id":null,"is_uped":false},{"id":"543bb2406732efc86e5d1054","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/liveinjs\">@liveinjs</a> 好像也有点道理，呵呵</p>\n</div>","ups":[],"create_at":"2014-10-13T11:06:40.837Z","reply_id":"543ba11e6732efc86e5d104f","is_uped":false},{"id":"543c9d1091eadb0f73aa3439","author":{"loginname":"pockry","avatar_url":"https://avatars2.githubusercontent.com/u/3449270?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/liveinjs\">@liveinjs</a>  不同意你的说法。对项目作者自己，是一个整理自身所学的过程，能够查漏补缺，增强理解。对于读者，一是step by  step的教程有助于减少入门的挫折感，二是作为例程可以在自己的项目里复用，三是学习思路和一些模块的用法。同时作为公开项目，可以众包建设、可以不断改进。这种模式可以说是一石多鸟，必将大行其道，取代现有的计算机类书籍。 <a href=\"/user/alsotang\">@alsotang</a>  加油~</p>\n</div>","ups":[],"create_at":"2014-10-14T03:48:32.199Z","reply_id":"543ba11e6732efc86e5d104f","is_uped":false},{"id":"543cb60291eadb0f73aa3464","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/pockry\">@pockry</a> …至少我是喜欢这种做题的方式…</p>\n</div>","ups":[],"create_at":"2014-10-14T05:34:58.600Z","reply_id":"543c9d1091eadb0f73aa3439","is_uped":false},{"id":"543d220691eadb0f73aa3506","author":{"loginname":"soliury","avatar_url":"https://avatars0.githubusercontent.com/u/5032079?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/alsotang\">@alsotang</a> 我也挺喜欢，看起来不太费劲，但是，小心，别把蛋扯碎了。。。。。。</p>\n<p>BTW, BDD是不是也是TDD的一种？ 查了不少资料，说BDD是TDD的变种，但是实际驱动开发的时候，是不是也和TDD一样，先写测试。只不过两者关注点不一样，是不是呀？</p>\n</div>","ups":[],"create_at":"2014-10-14T13:15:50.254Z","reply_id":"5433e51ce737cbe96dcef315","is_uped":false},{"id":"543d288591eadb0f73aa3512","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/soliury\">@soliury</a> 对，关注点不一样，bdd 看问题的层面更高一点。tdd 被认为更倾向于测接口，而 bdd 被认为要模拟用户的行为来测试。</p>\n<p>了解一下就好了。</p>\n</div>","ups":[],"create_at":"2014-10-14T13:43:33.448Z","reply_id":"543d220691eadb0f73aa3506","is_uped":false},{"id":"543d2cf791eadb0f73aa351b","author":{"loginname":"soliury","avatar_url":"https://avatars0.githubusercontent.com/u/5032079?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/alsotang\">@alsotang</a> 嗯嗯。 那nodeclub的测试是BDD类型的？should.js好像就是BDD的断言库。</p>\n</div>","ups":["59e85623d081ecfd360d871d"],"create_at":"2014-10-14T14:02:31.057Z","reply_id":"543d288591eadb0f73aa3512","is_uped":false},{"id":"543d3d6d91eadb0f73aa3535","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/soliury\">@soliury</a> should.js 是 bdd 的类型库，assert 就比较像 tdd 的了。不过是哪种不重要，主要是测试用例覆盖齐不齐。</p>\n</div>","ups":[],"create_at":"2014-10-14T15:12:45.881Z","reply_id":"543d2cf791eadb0f73aa351b","is_uped":false},{"id":"54408fe36ab98d6c509e0123","author":{"loginname":"tonyte","avatar_url":"https://avatars2.githubusercontent.com/u/6263815?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/liveinjs\">@liveinjs</a> 整理这些课程也并不简单，每个人的基础不一样，学习方法也不一样，你不能用 “这类的课程完全是浪费时间” 一句话说写，也给自己留点余地，感谢\n<a href=\"/user/alsotang\">@alsotang</a> 的分享</p>\n</div>","ups":[],"create_at":"2014-10-17T03:41:23.243Z","reply_id":"543ba11e6732efc86e5d104f","is_uped":false},{"id":"5441da366ab98d6c509e01fe","author":{"loginname":"fish","avatar_url":"//gravatar.com/avatar/d24fc5b1c6b84dae95dd23ba1c7ebbcb?size=48"},"content":"<div class=\"markdown-text\"><p>观众还是一边倒， <a href=\"/user/liveinjs\">@liveinjs</a>  要加油了，看了一下你的repos， <a href=\"https://github.com/liveinjs/myfn\">https://github.com/liveinjs/myfn</a>   <code>abtest,js</code> 视乎得改个名。\n也不是找茬，纯粹好奇就过去瞄了一眼。\n想说，贡献代码、文档是一件积极美好的事情，在否定美好的时候，请带来更美好的！\n和<a href=\"/user/alsotang\">@alsotang</a> 私下沟通过，他不是要做21天精通node.js,  而是用node.js 来串讲web开发这件事。\n教程还在不断完善中， <code>talking or laughing is cheap, show me the code</code></p>\n</div>","ups":[],"create_at":"2014-10-18T03:10:46.540Z","reply_id":null,"is_uped":false},{"id":"54426db377ae2641089ac66a","author":{"loginname":"liuzhengming","avatar_url":"https://avatars2.githubusercontent.com/u/1285555?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>死等<code>Lesson 8: 《Mongodb 与 Mongoose 的使用》</code></p>\n</div>","ups":[],"create_at":"2014-10-18T13:40:03.684Z","reply_id":null,"is_uped":false},{"id":"5442786e77ae2641089ac672","author":{"loginname":"Ricardo-Li","avatar_url":"https://avatars3.githubusercontent.com/u/7337097?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/liuzhengming\">@liuzhengming</a> 额，这个lesson计划可能是我写，这么看来还是 <a href=\"/user/alsotang\">@alsotang</a> 来写比较好</p>\n</div>","ups":[],"create_at":"2014-10-18T14:25:50.580Z","reply_id":"54426db377ae2641089ac66a","is_uped":false},{"id":"5442820977ae2641089ac677","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/Ricardo-Li\">@Ricardo-Li</a> 你写，我帮你修订。</p>\n</div>","ups":[],"create_at":"2014-10-18T15:06:49.513Z","reply_id":"5442786e77ae2641089ac672","is_uped":false},{"id":"544290b477ae2641089ac67d","author":{"loginname":"gotolnc","avatar_url":"https://avatars3.githubusercontent.com/u/3211945?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>express 4.xx后变化很大，node 代码14年开始的代码简直全变化了，这可能是12年开始的node学习的一个分水岭阶段。</p>\n</div>","ups":[],"create_at":"2014-10-18T16:09:24.195Z","reply_id":null,"is_uped":false},{"id":"544291d977ae2641089ac67f","author":{"loginname":"gotolnc","avatar_url":"https://avatars3.githubusercontent.com/u/3211945?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>急需一个 express 4.xx +mysql 这种例子应用，哪里能找到呢</p>\n</div>","ups":[],"create_at":"2014-10-18T16:14:17.506Z","reply_id":null,"is_uped":false},{"id":"5442b53777ae2641089ac68d","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/gotolnc\">@gotolnc</a> mysql 的使用没有什么特殊的地方啊，express 用好了就 ok 了。</p>\n</div>","ups":[],"create_at":"2014-10-18T18:45:11.809Z","reply_id":"544291d977ae2641089ac67f","is_uped":false},{"id":"5443188b77ae2641089ac694","author":{"loginname":"liuzhengming","avatar_url":"https://avatars2.githubusercontent.com/u/1285555?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/Ricardo-Li\">@Ricardo-Li</a> 期待，期待…</p>\n</div>","ups":[],"create_at":"2014-10-19T01:48:59.179Z","reply_id":"5442786e77ae2641089ac672","is_uped":false},{"id":"5444121c4ca29a4d4c08c2f1","author":{"loginname":"gotolnc","avatar_url":"https://avatars3.githubusercontent.com/u/3211945?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/alsotang\">@alsotang</a> 现在网上全是express 4以前的例子，哪里有最新的例子想看一下，发现3的例子基本上不能运行</p>\n</div>","ups":[],"create_at":"2014-10-19T19:33:48.713Z","reply_id":"5442b53777ae2641089ac68d","is_uped":false},{"id":"5444c8359657d9ab12567d97","author":{"loginname":"fengliner","avatar_url":"https://avatars.githubusercontent.com/u/6862756?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>恩，不错，赞一个，希望noder越来越多</p>\n</div>","ups":[],"create_at":"2014-10-20T08:30:45.194Z","reply_id":null,"is_uped":false},{"id":"5445ea90649ac9220757b747","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/songtanjichuan\">@songtanjichuan</a> 写东西也累的啊…周末…</p>\n</div>","ups":[],"create_at":"2014-10-21T05:09:36.465Z","reply_id":"5445b43e9657d9ab12567e54","is_uped":false},{"id":"5445f8ea649ac9220757b76c","author":{"loginname":"node007","avatar_url":"https://avatars.githubusercontent.com/u/9318070?v=3&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/klamtlne\">@klamtlne</a> 学习啦</p>\n</div>","ups":[],"create_at":"2014-10-21T06:10:50.959Z","reply_id":"54341143e737cbe96dcef330","is_uped":false},{"id":"54461349649ac9220757b794","author":{"loginname":"aaronluo","avatar_url":"https://avatars.githubusercontent.com/u/4112923?v=3&s=120"},"content":"<div class=\"markdown-text\"><p>短小精悍，但是每章看起来都很充实！</p>\n</div>","ups":[],"create_at":"2014-10-21T08:03:21.070Z","reply_id":null,"is_uped":false},{"id":"544778da649ac9220757b919","author":{"loginname":"mexiQQ","avatar_url":"https://avatars0.githubusercontent.com/u/6386781?v=3&s=120"},"content":"<div class=\"markdown-text\"><p>好东西，找机会玩一下</p>\n</div>","ups":[],"create_at":"2014-10-22T09:28:58.724Z","reply_id":null,"is_uped":false},{"id":"5447a19a7a48e1f907397faf","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/mexiQQ\">@mexiQQ</a> 一起来搞搞社区呗：）</p>\n</div>","ups":[],"create_at":"2014-10-22T12:22:50.271Z","reply_id":"544778da649ac9220757b919","is_uped":false},{"id":"5448caa90db243142305fdbf","author":{"loginname":"borisyu","avatar_url":"https://avatars.githubusercontent.com/u/3347703?v=4&s=120"},"content":"<div class=\"markdown-text\"><ol>\n<li>nodejs + mysql</li>\n<li>http（server和client）、request模块</li>\n</ol>\n</div>","ups":[],"create_at":"2014-10-23T09:30:17.716Z","reply_id":null,"is_uped":false},{"id":"544933160db243142305fe34","author":{"loginname":"noctiomg","avatar_url":"https://avatars.githubusercontent.com/u/6418374?v=2&s=120"},"content":"<div class=\"markdown-text\"><p>把学生会的事情忙完一定好好跟你学，，\n之前看的是教程是 <a href=\"https://github.com/nswbmw/N-blog/wiki/_pages\">这个</a>\n感觉你讲的更详细呢，好评</p>\n</div>","ups":[],"create_at":"2014-10-23T16:55:50.542Z","reply_id":null,"is_uped":false},{"id":"54493d170db243142305fe3d","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/noctiomg\">@noctiomg</a> 都是好教程：）</p>\n</div>","ups":[],"create_at":"2014-10-23T17:38:31.892Z","reply_id":"544933160db243142305fe34","is_uped":false},{"id":"545083821cd45acd2e6622ce","author":{"loginname":"fenode","avatar_url":"https://avatars.githubusercontent.com/u/8039138?v=3&s=120"},"content":"<div class=\"markdown-text\"><p>用windows，第一课就卡住了：（</p>\n</div>","ups":[],"create_at":"2014-10-29T06:04:50.373Z","reply_id":null,"is_uped":false},{"id":"54509d63d0c2f0fe2f533949","author":{"loginname":"fenode","avatar_url":"https://avatars.githubusercontent.com/u/8039138?v=3&s=120"},"content":"<div class=\"markdown-text\"><p><img src=\"http://img.itc.cn/photo/jZofGs195Cj\" alt>\n只要安装0.8.17版本，怎么还自动安装了1.2.0版本？</p>\n</div>","ups":[],"create_at":"2014-10-29T07:55:15.598Z","reply_id":null,"is_uped":false},{"id":"5450a05cd0c2f0fe2f53394d","author":{"loginname":"fenode","avatar_url":"https://avatars.githubusercontent.com/u/8039138?v=3&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/gotolnc\">@gotolnc</a> 之前都白学了，要重新学？</p>\n</div>","ups":[],"create_at":"2014-10-29T08:07:56.006Z","reply_id":"544290b477ae2641089ac67d","is_uped":false},{"id":"5450b65ad0c2f0fe2f533998","author":{"loginname":"abruzzihraig","avatar_url":"https://avatars.githubusercontent.com/u/3356523?v=3&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/fenode\">@fenode</a> nvm ls-remote是什么？ 不能直接nvm install v0.10.32么？</p>\n</div>","ups":[],"create_at":"2014-10-29T09:41:46.776Z","reply_id":"5450a05cd0c2f0fe2f53394d","is_uped":false},{"id":"5450cdf1d0c2f0fe2f5339b4","author":{"loginname":"yorkie","avatar_url":"https://avatars.githubusercontent.com/u/1935767?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/alsotang\">@alsotang</a> <a href=\"https://github.com/alsotang/node-lessons/tree/master/lesson6\">https://github.com/alsotang/node-lessons/tree/master/lesson6</a> 介绍一下<code>istanbul</code>的ignore语法会更全面一些，我觉得可以在：</p>\n<pre class=\"prettyprint\"><code>其实这覆盖率是 100% 的，24 25 两行没法测。\n</code></pre><p>这里展开讲解，我中文不行，就不提PR了 哈哈（我这也算半同行review了哈）</p>\n</div>","ups":[],"create_at":"2014-10-29T11:22:25.779Z","reply_id":null,"is_uped":false},{"id":"5450cf71d0c2f0fe2f5339bf","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/yorkie\">@yorkie</a> 这个也太细节了吧</p>\n</div>","ups":[],"create_at":"2014-10-29T11:28:49.714Z","reply_id":"5450cdf1d0c2f0fe2f5339b4","is_uped":false},{"id":"5450d0a1d0c2f0fe2f5339c3","author":{"loginname":"yorkie","avatar_url":"https://avatars.githubusercontent.com/u/1935767?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/alsotang\">@alsotang</a> 哈哈 我个人比较强迫症，但是“没法”两个字会给读者一种无能为力的赶脚，或者给个原文链接做拓展可好</p>\n</div>","ups":[],"create_at":"2014-10-29T11:33:53.059Z","reply_id":"5450cf71d0c2f0fe2f5339bf","is_uped":false},{"id":"5451b88ad0c2f0fe2f533a44","author":{"loginname":"noke007","avatar_url":"https://avatars.githubusercontent.com/u/7910688?v=2&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/alsotang\">@alsotang</a>  你好，在学习到  Lesson 4: 《使用 eventproxy 控制并发》 ，有问题，</p>\n<p>topicUrls.forEach(function (topicUrl) {</p>\n<pre class=\"prettyprint\"><code>  console.log(topicUrl);\n\n  superagent.get(topicUrl)\n    .end(function (err, res) {\n\t\n\t\n\tconsole.log(topicUrl);\n\t\n\t\n      console.log(&#x27;fetch &#x27; + topicUrl + &#x27; successful&#x27;);\n      ep.emit(&#x27;topic_html&#x27;, [topicUrl, res.text]);\n    });\n});\n\n发现这段代码\n两个console.log(topicUrl); 出来的 url 不一样，导致 抓取的数据不对，\n</code></pre></div>","ups":[],"create_at":"2014-10-30T04:03:22.090Z","reply_id":null,"is_uped":false},{"id":"545223fdd0c2f0fe2f533ab7","author":{"loginname":"lgqlee","avatar_url":"https://avatars0.githubusercontent.com/u/6489372?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>拥有一个能用的例子来供学习，这种感觉真是幸福(^o^)/~</p>\n</div>","ups":[],"create_at":"2014-10-30T11:41:49.091Z","reply_id":null,"is_uped":false},{"id":"54583dc76537f4d52c414e68","author":{"loginname":"ihqn","avatar_url":"https://avatars.githubusercontent.com/u/4971364?v=3&s=120"},"content":"<div class=\"markdown-text\"><p>课说得很清楚哦！很好懂。不过。\n第五课有一些不是很明白。\nvar fetchUrl = function(url, callback){\nvar delay = parseInt((Math.random() * 10000000) % 2000, 10);\n\tconcurrencyCount++;\n\tconsole.log(‘现在的并发数是’, concurrencyCount, ‘，正在抓取的是’, url, ‘，耗时’ + delay + ‘毫秒’)</p>\n<pre class=\"prettyprint\"><code>setTimeout(function(){\n\tconcurrencyCount--;\n\tcallback(null, url + &#x27;html content&#x27;);\n},delay)\n</code></pre><p>}\n定时器里的不是很明白。</p>\n</div>","ups":[],"create_at":"2014-11-04T02:45:27.987Z","reply_id":null,"is_uped":false},{"id":"5458deb36537f4d52c414f33","author":{"loginname":"eeandrew","avatar_url":"https://avatars.githubusercontent.com/u/7982269?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/ihqn\">@ihqn</a>\nsetTimeout用来模拟一个一步操作。</p>\n<pre class=\"prettyprint language-js\"><code>setTimeout(function(){\n   &#x2F;&#x2F;concurrencyCount是一个计数器，用来统计现在有多少个异步操作在执行。这里把计数器减一，是因为定时器到点了，那么模拟的这个异步操作就算是\n   &#x2F;&#x2F;执行完了，所以呢把这个计数器减掉一\n    concurrencyCount--;\n\t&#x2F;&#x2F;定时器到点，执行我们定义的回调函数。function(err,data)，因为没有错误发生，所以将err设为null.\n    callback(null, url + &#x27;html content&#x27;);\n},delay)\n</code></pre></div>","ups":[],"create_at":"2014-11-04T14:12:03.811Z","reply_id":null,"is_uped":false},{"id":"545f6af060c7cf8708aa9420","author":{"loginname":"mexiQQ","avatar_url":"https://avatars0.githubusercontent.com/u/6386781?v=3&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/alsotang\">@alsotang</a> 汗，最近忙着找实习工作，今天刚刚安顿下来，好啊，你不嫌弃我渣的话</p>\n</div>","ups":[],"create_at":"2014-11-09T13:24:00.337Z","reply_id":"54493d170db243142305fe3d","is_uped":false},{"id":"545f6c8d60c7cf8708aa9424","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/mexiQQ\">@mexiQQ</a> 实习找到哪里了？</p>\n</div>","ups":[],"create_at":"2014-11-09T13:30:53.536Z","reply_id":"545f6af060c7cf8708aa9420","is_uped":false},{"id":"545f6d7760c7cf8708aa9427","author":{"loginname":"mexiQQ","avatar_url":"https://avatars0.githubusercontent.com/u/6386781?v=3&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/alsotang\">@alsotang</a> segmentFault</p>\n</div>","ups":[],"create_at":"2014-11-09T13:34:47.999Z","reply_id":"545f6c8d60c7cf8708aa9424","is_uped":false},{"id":"546030710994da5e12d853f2","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/mexiQQ\">@mexiQQ</a> 也在杭州啊</p>\n</div>","ups":[],"create_at":"2014-11-10T03:26:41.194Z","reply_id":"545f6d7760c7cf8708aa9427","is_uped":false},{"id":"54604f810994da5e12d8541b","author":{"loginname":"mexiQQ","avatar_url":"https://avatars0.githubusercontent.com/u/6386781?v=3&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/alsotang\">@alsotang</a> 对啊对啊Y(^_^)Y约吗？</p>\n</div>","ups":[],"create_at":"2014-11-10T05:39:13.162Z","reply_id":"546030710994da5e12d853f2","is_uped":false},{"id":"546057bf0994da5e12d8542b","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/mexiQQ\">@mexiQQ</a> … <a href=\"/user/Ricardo-Li\">@Ricardo-Li</a> 举报</p>\n</div>","ups":[],"create_at":"2014-11-10T06:14:23.833Z","reply_id":"54604f810994da5e12d8541b","is_uped":false},{"id":"54607023789ab1f8158e1ba5","author":{"loginname":"mexiQQ","avatar_url":"https://avatars0.githubusercontent.com/u/6386781?v=3&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/alsotang\">@alsotang</a> 管理员，这回复该删了</p>\n</div>","ups":[],"create_at":"2014-11-10T07:58:27.819Z","reply_id":"546057bf0994da5e12d8542b","is_uped":false},{"id":"546e8d1ac4922d383a82974a","author":{"loginname":"HawkingChan","avatar_url":"https://avatars2.githubusercontent.com/u/6712722?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>做lesson4的练习时， <img src=\"//static.cnodejs.org/Fn4rCeRCAiZqBbOvJUj1in10w16A\" alt=\"error.jpg\">,使用url.resolve这个方法，提示参数必须为\n字符串，但我这个确实字符串啊，求教什么原因啊</p>\n</div>","ups":["5528ea68831bc33a414106df"],"create_at":"2014-11-21T00:53:46.405Z","reply_id":null,"is_uped":false},{"id":"5525bfc4cafb495830a9fb5f","author":{"loginname":"i5ting","avatar_url":"https://avatars.githubusercontent.com/u/3118295?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>继续写啊</p>\n</div>","ups":[],"create_at":"2015-04-08T23:54:44.259Z","reply_id":null,"is_uped":false},{"id":"552605f59fdd6d3b01b41ad9","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/i5ting\">@i5ting</a> 太监了。。。</p>\n</div>","ups":[],"create_at":"2015-04-09T04:54:13.649Z","reply_id":"5525bfc4cafb495830a9fb5f","is_uped":false},{"id":"552614d29fdd6d3b01b41ae6","author":{"loginname":"CocaCola183","avatar_url":"https://avatars1.githubusercontent.com/u/8912876?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>顶一个</p>\n</div>","ups":["5528ea68831bc33a414106df"],"create_at":"2015-04-09T05:57:38.222Z","reply_id":null,"is_uped":false},{"id":"5528eaa7831bc33a414106e2","author":{"loginname":"yugasun","avatar_url":"https://avatars0.githubusercontent.com/u/8536173?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>还不错，先收录了\n自豪地采用 <a href=\"https://github.com/lanceli/cnodejs-ionic\">CNodeJS ionic</a></p>\n</div>","ups":[],"create_at":"2015-04-11T09:34:31.464Z","reply_id":null,"is_uped":false},{"id":"57625f65e8689e7906af7463","author":{"loginname":"liuxiong332","avatar_url":"https://avatars.githubusercontent.com/u/3992532?v=3&s=120"},"content":"<div class=\"markdown-text\"><p>流弊</p>\n</div>","ups":[],"create_at":"2016-06-16T08:12:21.224Z","reply_id":"5433d866e737cbe96dcef313","is_uped":false},{"id":"5ae14d8ca86ec1f308ec2578","author":{"loginname":"iceonion","avatar_url":"https://avatars.githubusercontent.com/u/21992755?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>#你的计划呢 三年了</p>\n</div>","ups":[],"create_at":"2018-04-26T03:54:52.199Z","reply_id":null,"is_uped":false},{"id":"5ae1accdc5debbc0086fc99b","author":{"loginname":"songyi199111","avatar_url":"https://avatars1.githubusercontent.com/u/13469073?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>哈哈哈</p>\n</div>","ups":[],"create_at":"2018-04-26T10:41:17.273Z","reply_id":"5433d5e4e737cbe96dcef312","is_uped":false},{"id":"5ae358a81b02288048bd0abc","author":{"loginname":"alsotang","avatar_url":"https://avatars.githubusercontent.com/u/1147375?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/iceonion\">@iceonion</a> 放弃了。。。</p>\n</div>","ups":[],"create_at":"2018-04-27T17:06:48.198Z","reply_id":"5ae14d8ca86ec1f308ec2578","is_uped":false},{"id":"5ae58fbbadea947348e75f20","author":{"loginname":"iceonion","avatar_url":"https://avatars.githubusercontent.com/u/21992755?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/alsotang\">@alsotang</a> 男人  怎么可以随随便便就放弃呢  雄起。。雄起。。雄起</p>\n</div>","ups":[],"create_at":"2018-04-29T09:26:19.706Z","reply_id":null,"is_uped":false},{"id":"5ae80ebaadea947348e75f78","author":{"loginname":"wenxingjun","avatar_url":"https://avatars0.githubusercontent.com/u/14936396?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>谢谢楼主<br>\n☆ 来自微信小程序 <a href=\"https://github.com/strawbreey/mpvue-cnode\">cnode助手</a></p>\n</div>","ups":[],"create_at":"2018-05-01T06:52:42.445Z","reply_id":null,"is_uped":false},{"id":"5ae80ebd39a81e4548f45890","author":{"loginname":"wenxingjun","avatar_url":"https://avatars0.githubusercontent.com/u/14936396?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>☆ 来自微信小程序 <a href=\"https://github.com/strawbreey/mpvue-cnode\">cnode助手</a></p>\n</div>","ups":[],"create_at":"2018-05-01T06:52:45.110Z","reply_id":null,"is_uped":false},{"id":"5ae80ec31b02288048bd0b5d","author":{"loginname":"wenxingjun","avatar_url":"https://avatars0.githubusercontent.com/u/14936396?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>谢谢<br>\n☆ 来自微信小程序 <a href=\"https://github.com/strawbreey/mpvue-cnode\">cnode助手</a></p>\n</div>","ups":[],"create_at":"2018-05-01T06:52:51.575Z","reply_id":null,"is_uped":false},{"id":"5bba2e269545eaf107b9c8cd","author":{"loginname":"BM0124","avatar_url":"https://avatars2.githubusercontent.com/u/43837102?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/alsotang\">@alsotang</a> 请教，做lesson4的挑战题取积分的时候，遇到一个难点，不知道怎样用superagent里面取到的变量取修改外面的全局变量，代码（部分）如下：</p>\n<pre class=\"prettyprint\"><code>    var topicUrl = topicPair[0];\n    var topicHtml = topicPair[1];\n    var $ = cheerio.load(topicHtml);\n\t&#x2F;&#x2F;取评论人的积分\n\t var authorUrl = url.resolve(cnodeUrl,$(&#x27;.dark.reply_author&#x27;).eq(0).attr(&#x27;href&#x27;));\n\t let score1 =0;\n\t superagent.get(authorUrl)\n\t .end(function (err, sres) {\n\t \t&#x2F;&#x2F; 常规的错误处理\n\t \tif (err) {\n\t \treturn next(err);\n\t \t}\n\t  const $2 = cheerio.load(sres.text);\n\t  score1 = $2(&#x27;.unstyled .big&#x27;).eq(0).text().trim();\n\t  console.log(&quot;In ,score1:&quot;+score1);\t\t  \n\t})\n\treturn ({\n      title: $(&#x27;.topic_full_title&#x27;).text().trim(),\n      href: topicUrl,\n      comment1: $(&#x27;.reply_content&#x27;).eq(0).text().trim(),\n\t  author1: $(&#x27;.dark.reply_author&#x27;).eq(0).text().trim(),\n\t  score1: score1\n    });\n\tsuperagent里面的score1已经取到积分了，但没办法传出来。。。谢谢</code></pre></div>","ups":[],"create_at":"2018-10-07T16:02:46.555Z","reply_id":null,"is_uped":false},{"id":"5ccff34a776fb66e0d17282f","author":{"loginname":"AsherSun","avatar_url":"https://avatars2.githubusercontent.com/u/28916706?v=4&s=120"},"content":"<div class=\"markdown-text\"><p>mark ，收藏</p>\n</div>","ups":[],"create_at":"2019-05-06T08:41:46.476Z","reply_id":null,"is_uped":false},{"id":"5cf9de5795fcc914aa266da8","author":{"loginname":"Luxiaosong","avatar_url":"https://avatars2.githubusercontent.com/u/18702209?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/magicdawn\">@magicdawn</a> win也不错</p>\n</div>","ups":[],"create_at":"2019-06-07T03:47:35.344Z","reply_id":"54373ceed73c7ebc269adb1a","is_uped":false},{"id":"611a28bbbaed4e40c8b83618","author":{"loginname":"luo1234560","avatar_url":"https://avatars1.githubusercontent.com/u/39403431?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/alsotang\">@alsotang</a> 同志，能帮我解封一个账户不</p>\n</div>","ups":[],"create_at":"2021-08-16T08:58:35.810Z","reply_id":"5433e51ce737cbe96dcef315","is_uped":false},{"id":"611a296abaed4e8e93b83625","author":{"loginname":"luo1234560","avatar_url":"https://avatars1.githubusercontent.com/u/39403431?v=4&s=120"},"content":"<div class=\"markdown-text\"><p><a href=\"/user/1103132201\">@1103132201</a> 闫春阳？九江学院？</p>\n</div>","ups":[],"create_at":"2021-08-16T09:01:30.683Z","reply_id":"6102590ea5d29d55c12d3343","is_uped":false},{"id":"67583196257f2958063fa05b","author":{"loginname":"gdf715","avatar_url":"//gravatar.com/avatar/51c48e920520f59759e9f0e2e9145afc?size=48"},"content":"<div class=\"markdown-text\"><p>写得很好</p>\n</div>","ups":[],"create_at":"2024-12-10T12:18:30.236Z","reply_id":null,"is_uped":false},{"id":"67dd5e0c2b5f058199345598","author":{"loginname":"zyh123","avatar_url":"//gravatar.com/avatar/43a56cf936116adb822ecf12c1b4d8a0?size=48"},"content":"<div class=\"markdown-text\"><p>点赞</p>\n</div>","ups":[],"create_at":"2025-03-21T12:39:40.608Z","reply_id":null,"is_uped":false},{"id":"682a2ecf982e401583722c68","author":{"loginname":"sayhello","avatar_url":"//gravatar.com/avatar/96fa3d96ad3d81a9d692426a351641e6?size=48"},"content":"<div class=\"markdown-text\"><p><img src=\"//static.cnodejs.org/Fs7cxSwvemPOfcTrkLPBBqeqGs1q\" alt=\"wq6.jpg\"></p>\n</div>","ups":[],"create_at":"2025-05-18T19:02:39.327Z","reply_id":null,"is_uped":false},{"id":"68eefe83f135769508083e9d","author":{"loginname":"lunhong88","avatar_url":"//gravatar.com/avatar/d2ac2e188dad1779da0b3614d9fa23eb?size=48"},"content":"<div class=\"markdown-text\"><p>写得很好，点赞</p>\n</div>","ups":[],"create_at":"2025-10-15T01:53:07.121Z","reply_id":null,"is_uped":false}],"is_collect":false}}