Takk...
Node.js小教程(二)--I

由于开学期间学校放假喜怒无常,我的这篇更新就在这时开始写了~#14x

(一)(目录部分及安装和hello world):https://www.gn00.com/t-410081-1-1.html

本期容量还是比较小。。会解释前面的那个hello world并介绍一些小特性。

(关于NPM的安装我是想放到下一期)


前面的那个hello world估计会有点小迷茫,那么我就来解释下下~

先把代码贴出来:

[mw_shl_code=javascript,true]var http = require('http');

server = http.createServer(function (req, res) {

res.writeHeader(200, {"Content-Type": "text/plain"});

res.end("Hello Takk...\n");

})

server.listen(8000);

console.log("httpd start @8000");

[/mw_shl_code]

这串代码我们先来解剖一下,抛开http.createServer后面括号的那个匿名函数,我们剩下的这串代码其实就是一个创建服务器的完整的过程,是这样的:

[mw_shl_code=javascript,true]var http = require('http');

server = http.createServer( );

server.listen(8000);

console.log("httpd start @8000");[/mw_shl_code]

专业解释:

第一行: 是请求(require)node.js自带的node.js模块,并赋值给变量http。

第二行:然后我们调用了http模块提供的函数creatServer这个函数会返回一个对象,把这个对象赋给了server

第三行:我们用了这个对象的一个方法(listen),这个方法有一个参数,指定监听哪个端口;

第四行:用console.log向控制台输出了一句话httpd start @8000;

/-------------------------

童话解释:

这么一连串的到底是一个什么工作呢?打个比方吧。

Node.js有一个魔法图书馆,我们去找到(require)了'http'这本法术书,然后我们把这门书的内容抄到(=)了一本我们自己的法术书书上,并把这本书的名字也叫做http(第一行)

然后呢,然后呢我们派我们的一个小朋友server去学了http这本书里面的createServer这个魔法

也就是说,现在server这个小朋友会了http这本书中createServer里面的魔法。(第二行)

而这个魔法中有一个本领是监听,我们让这个server小朋友施展了下监听的魔咒listen(这个魔咒可以监听一个端口)

并且把这个魔咒指定了去监听(8000)这个端口(什么是端口?大概就像是一扇门吧,也就是说让server去看住了8000这扇门。);(第三行)

最后一行是电脑告诉你,我们已成功看住了了8000这个端口~

通过这么几行代码,会启动一个侦听8888端口的服务器,它不做任何别的事情,甚至连请求都不会应答。只会看着这个端口。

/------------------------

然后我们来看看那个匿名函数吧。

这个函数是作为creatServer方法的第一个也是唯一一个参数存在

也就是说在node.js里面可以使用一个函数作为另一个函数的参数

函数和其他变量一样可以传递

/--------------------------------

比如下面这个例子:

[mw_shl_code=javascript,true]

function say(word) {

console.log(word);

}//定义一个函数say,有一个叫做word的参数,这个函数的作用是把word输出

function dofunc(someFunction, value) {

someFunction(value);

}

/* 这里也定义了一个函数

我们发现这个函数的第一个参数其实是一个函数(通过后面的内容可以看出)

然后我们可以发现,这个函数的作用是将第二个参数作为第一个参数参数来运行一次

*/

dofunc(say, "Hello");

/*

最后这句话是用了dofunc函数

这个函数的第一个参数为say函数,第二个参数为一个字符串'Hello';

你可以想得到,这个等价于say('Hello')

*/

[/mw_shl_code]

/--------------------------------------

那个匿名函数的内容是:

[mw_shl_code=javascript,true]

function (req, res) {

res.writeHeader(200, {"Content-Type": "text/plain"});

res.end("Hello Takk...\n");

[/mw_shl_code]

我们可以发现,当这个函数被触发时传入了有两个参数

第一个这里取名叫做req,第二个在这里取名字叫做res

这两个都是对象,我这样取名其实是两个英文的缩写(request 和 response )

也就是说一个是请求的处理,和响应的处理(由于hello world中我只用输出内容所以没用到req)

我们用这个匿名函数干了什么呢?

[mw_shl_code=javascript,true]server = http.createServer(function (req, res) {

res.writeHeader(200, {"Content-Type": "text/plain"});

res.end("Hello Takk...\n");

})[/mw_shl_code]

这句话我来翻译下,用http的createServer方法给创建了一个服务器

这个服务器被请求时会响应

响应方法是

[mw_shl_code=javascript,true]

res.writeHeader(200, {"Content-Type": "text/plain"});

res.end("Hello Takk...\n");

[/mw_shl_code]

代表的意思是,给浏览器一个200的头文件

然后结束时给浏览器响应一句话,"Hello Takk...\n"

所以所以我们请求这个服务器时他们给我们回了这句话。。


本期的教程也许有点枯燥

不过我们解释了helloworld这个例子的源码,并且了解了下函数作为参数来传递

如果看着很迷糊呢不要紧~可以在帖子后面问,我会给大家详细解答~

我的qq是:945959236,大家可以一起学习·~

而且这些后面慢慢就懂了,现在迷糊点不是有很大的问题~

下一期我会手把手教大家建立一个网站~会让你很哟成就感,而且,相信我,你会有乐趣的。

在实践中知识就慢慢懂了~

那么这期就这样~~~66!

Takk...
期待楼主写下去
展开Biu

基叔 发表于 3 天前

支持 nodejs,期待楼主写下去

上周末有点事,开学了好多活动~

[查看全文]
基叔
支持 nodejs,期待楼主写下去
展开Biu

支持 nodejs,期待楼主写下去

[查看全文]
GRzhan
[i=s] 本帖最后由 GRzhan 于
展开Biu

本帖最后由 GRzhan 于 2013-9-11 23:06 编辑

Takk... 发表于 2013-8-31 15:48

我的这个会有点慢呢。。。。

后端的东西大概不会用nodejs,所以就跟着贴子看看了解下:)

[查看全文]
Takk...
看来似乎我在前一个教程脑补了这一个教程的内
展开Biu

GRzhan 发表于 2013-8-31 15:26

看来似乎我在前一个教程脑补了这一个教程的内容。。。

继续关注LZ的nodejs的教程 ...

我的这个会有点慢呢。。。。

[查看全文]
GRzhan
[i=s] 本帖最后由 GRzhan 于
展开Biu

本帖最后由 GRzhan 于 2013-8-31 15:27 编辑

看来似乎我在前一个教程脑补了这一个教程的内容。。。=367=

继续关注LZ的nodejs的教程

[查看全文]