Nodejs第二课

使用外部模块

目标

建立一个新的项目,实现在浏览器中访问http://localhost:3000/?q=yutiya
输出yutiya的md5值

简介 package.json

该文件包含了项目的依赖等各种信息,当在项目文件夹下执行npm install会自动读取该文件,安装依赖到node_modules文件夹下,最后运行就可以跑起来了

1
2
$ mkdir lesson2 && cd lesson2
$ npm init

终端会提示输入信息,可以全部回车,然后使用编辑器打开,就能看到对应的键值了
init的目的就是为了生成package.json

执行$ npm install express utility --save
会自动在json文件中添加依赖项,类似下面这样

1
2
3
4
"dependencies": {
"express": "^4.13.1",
"utility": "^1.4.0"
}

node_modules也会有对应的文件内容产生噢

Nodejs第三课

使用superagent和cheerio完成简单爬虫

  • 使用superagent抓取网页
  • 使用cheerio分析网页

课程内容

Node.js 异步特性特别厉害,想要学习,利用爬虫的场景比较适合.

原文中介绍了爬github有rate limit限制,作者是菜鸟,不懂,所以也爬了Node.js开源社区CNode社区

使用了三个依赖,分别是express、superagent和cheerio

superagent是一个http方面的库,可以发起get或post请求
cheerio大家可以理解为Node.js版的jQuery,使用方式和jQuery一样
两者均为链式操作,用起来特别爽

走你:

1
2
3
4
$ npm init  // 初始化
$ npm install <packeagename> --save
$ touch app.js
$ vi app.js

第一步我们尝试打印出superagent发出的get请求的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var superagent = require('superagent');
var cheerio = require('cheerio');
var express = require('express');
var app = express();
app.get('/', function(req, res, next){
superagent.get('https://cnodejs.org')
.end(function(err, sres){
if (err) {
return next(err);
}
res.send(sres);
})
});
app.listen(3000, function(req, res){
console.log('app is running at port 3000');
});

Nodejs第四课

使用eventproxy控制并发

目标

输出CNode社区社区首页的所有主题的标题,链接和第一条评论,以 json 的格式。原文地址:lesson4

示例:

1
2
3
4
5
6
7
8
9
10
11
12
[
{
"title": "【公告】发招聘帖的同学留意一下这里",
"href": "http://cnodejs.org/topic/541ed2d05e28155f24676a12",
"comment1": "呵呵呵呵"
},
{
"title": "发布一款 Sublime Text 下的 JavaScript 语法高亮插件",
"href": "http://cnodejs.org/topic/54207e2efffeb6de3d61f68f",
"comment1": "沙发!"
}
]

挑战

输出帖子的作者,以及他在cnode社区的积分值,这里和原文不同,作者看错了,不过也算挑战
示例:

1
2
3
4
5
6
7
8
9
10
[
{
"title": "【公告】发招聘帖的同学留意一下这里",
"href": "http://cnodejs.org/topic/541ed2d05e28155f24676a12",
"comment1": "呵呵呵呵",
"author1": "auser",
"score1": 80
},
...
]

原文: 以上文目标为基础,输出 comment1 的作者,以及他在 cnode 社区的积分值。
就一个地方不同,我过后会修改代码附上

Nodejs第一课

nodejs lesson1

Mac下:
sudo npm install -g express-generator@3 (express3)
sudo npm install -g express-generator (express4)

下面的学习均按照express3进行

创建express项目:

1
2
3
4
$ express -e nodejs-demo
$ cd nodejs-demo
$ npm install
$ vi app.js

app.js:

1
2
3
4
5
6
7
8
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send('Hello World');
});
app.listen(3000, function(){
console.log('app is listening at port 3000');
});

执行$ node app.js
访问localhost:3000,可以看到打印的Hello World!.

URL

我们熟悉的url其实是这个样子:
<scheme>://<user>:<password>@<host>:<port>/<url-path>

ftp:
ftp://账号:密码@主机/目录或文件

现在的使用的url精简成了这样:
<scheme>://<host>:<port>/<url-path>

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×