
由于开学期间学校放假喜怒无常,我的这篇更新就在这时开始写了~#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!
本帖最后由 GRzhan 于 2013-8-31 15:27 编辑
看来似乎我在前一个教程脑补了这一个教程的内容。。。=367=
继续关注LZ的nodejs的教程
[查看全文]