从上一篇的官方API文档开始,
http.createServer([requestListener]) # Returns a new instance of http.Server. The requestListener is a function which is automatically added to the 'request' event.
两个注意点:
- function: requestListener 是一个方法
- event:有一个叫做request的“事件”
简单介绍 事件 event:
nodejs基于google的V8引擎(很高端啊,不明觉厉的样子),先不用管高大上的原理,当前只需要知道以下东西即可:
设想一个场景来理解“事件”:
事件:有人对你打招呼“hello”
事件结果:你听到了“hello”
var events = require('events'); //nodejs 有一个叫做event的模块,引入它,就能启用"事件"了 var myEvent = new events.EventEmitter(); //event模块下有个叫做EventEmitter的类,把它new出来,或者直接背出来! function sayHello(str) //一个自定义方法,这里是事件的结果 { console.log("你听到有人对你说'" +str + "'"); } myEvent.on("打招呼", sayHello); //定义一个事件,叫做"打招呼",并且为这个事件注册一个方法,即上面定义到sayHello方法 //myEvent.emit("打招呼", "hello"); //触发这个"打招呼"事件
保存为event.js后,可以执行 node event.js,看到控制台没有输出
然后取消最后一行行首的注释,再执行node event.js,看到控制台输出了
你听到有人对你说'hello'
也就是说,“打招呼” 这个事件被触发,并且执行了这个事件对应的方法 sayHello,并且按照这个sayHello方法的定义,传入了参数值 'hello'
注意,可以为同一个事件,注册多个方法,当事件触发时,会根据注册顺序依次执行
event简单介绍完毕
回到官方文档:
实际上就是nodejs的http模块,有一个叫做'request'的事件,createServer的参数,[requestListener], 就是一个方法,会自动注册到'request'这个事件下,
当'request'事件触发时,会自动执行之前注册这个方法,并给这个方法传递参数
那么问题来了,学挖掘机哪家强 这个方法的参数是什么,
在API文档https://nodejs.org/api/http.html#http_event_request页面,搜索叫做request的事件,
找到event: 'request',现在知道这个[requestListener]应该怎么传入了,function (request, response) { }其中
request
和response
分别是什么类型也写明了
如何看懂文档的这个问题基本解决,有些其他的api也要自己挖一挖才能理解
简单介绍 回调函数callback:
javascript是个弱类型语言,并且function本身也是一个对象,这意味着,function可以作为参数,传递给另一个function
如下例子:
function a1(callback){ //方法a1接收一个叫做callback的参数 console.log("i am function1"); callback(); //方法a1将callback参数当作方法进行执行 } function a2(){ console.log("i am function2"); } a1(a2); //方法a2作为参数传递给了方法a1
保存为callback.js,执行 node callback.js
输出如下:
i am function1
i am function2
可以看到方法a1和a2都被执行了
收工,明天继续