Node.js——运行在服务端的 JavaScript

  Node.js
组成

1、引入required模块:使用require指令载入模块。

2、创建服务器:服务器可以监听客户端的请求。

3、接受请求与响应请求。服务器接收请求后返回响应数据。

npm

(npm 命令用于从国外的服务器上下载别人做好的模块)

1、用来下载别人模块的工具

(1)切换到项目目录下:d:project odejssrc

(2)安装模块:npm install 【模块名】

(3)安装的目录:nodejs/src/node_modules文件目录下。

2、发布自己模块的工具

(1)新建项目目录:nodejs/helloyap

(2)新建文件:a.js+package.json

(3)登陆npm:npm adduser

(4)发布模块:D:project odejshelloyap>npm publish

(5)邮件通知发布成功

cnpm

(c 是 copy的意思,即复制 npm 上面的库。)

(把npm 上面的库复制到 国内的服务器上。)

(当需要用的时候,使用 cnpm 命令获取)

1、用来下载别人模块的工具

(1)切换到项目目录下:d:project odejs

(2)安装模块:cnpm install 【模块名】

(3)安装的目录:nodejs/node_modules文件目录下。

repl

(交互式解释器:类似电脑系统的终端)

(在终端即控制台中输入命令,并接收系统的响应)

(1)运行命令cmd,打开控制台

(2)输入命令node,启动Node的终端

(3) 调试 Javascript 代码

 回调函数

(回调函数一般作为函数的最后一个参数出现)

(异步编程通过使用回调函数来实现)

(Node的所有API都支持回调函数)

(可以处理大量的并发请求,提高Node.js的性能)

(1)阻塞是按顺序执行,非阻塞是不按顺序执行

(2)两个任务:任务1读取文件,然后输出文件内容;任务2输出一句话。

(3)把"输出文件内容"这件事,包装成回调函数function(参数){..}。在回调函数中,输出文件内容。

(4)把任务1当成普通函数,(2)中的回调函数,作为该函数的最后一个参数出现。

 事件循环

(Node.js 单线程类似进入一个while(true)的事件循环,

直到没有事件观察者退出)

(每个异步事件,都生成一个事件观察者)

(有事件发生就调用该回调函数.)

(基本上所有的事件机制,都是用设计模式中观察者模式实现)

(1)引入events模块:var  events=require('events');

(2)创建一个eventEmitter对象:var eventEmitter=new events.EventsEmitter();

(3)绑定事件及事件的处理程序:eventEmitter.on('eventName',eventHandler);

(4)触发事件:eventEmitter.emit('eventName');

 EventEmitter

(events模块只提供了一个对象:events.EventEmitter。)

(EvenetEmitter的核心就是事件触发与事件监听功能的封装。)

(如果实例化EventEmitter对象时发生错误,就会触发error事件。)

(所有产生事件的对象,都是event.Emitter的实例。)

(EventEmitter支持若干个事件监听器。)

 1、方法

(1)addListener(event,listener):为指定事件添加一个监听器,到监听器数组的尾部。

(2)on(event,listener):为指定事件注册一个监听器。

(3)once(event,listener):为指定事件注册一个单次监听器。该监听器只会触发一次,触发后立刻解除该监听器。

(4)removeListener(event,listener):移除指定事件的监听器,监听器必须是该事件已经注册过的监听器。【此操作将会改变处于被删监听器之后的那些监听器的索引。】

(5)removeAllListener([event]):移除所有事件的监听器,如果指定事件,只移除指定事件的所有监听器。

(6)setMaxListeners(n):提高监听器的限制数量,原先超过10个就会发出警告信息。

(7)listeners(event):返回指定事件的监听数组。

(8)emit(event,[arg1],[arg2],[...]):按监听器的顺序执行每个监听器。如果事件有注册监听则返回true,否则返    回false。

2、类方法

(1)listenerCount(emitter,event):返回事件的监听器数量。

3、error事件

(1)EventEmitter定义了一个特殊的事件error,包含了错误的语义。

(2)异常时会触发error事件。

(3)EventEmitter规定如果没有响应的监听器,Node.js会把它当异常,退出程序并输出错误信息。

(4)一般要为error事件的对象设置监听器,避免程序崩溃。

4、继承EventEmitter

(1)一般不直接使用EventEmitter,而是在对象中继承它。

(2)包括fs、net、http在内的,只要是支持事件响应的核心模块都是EventEmitter的子类。

(3)事件的监听和发生应该是一个对象的方法。

后续再补充  
   
原文地址:https://www.cnblogs.com/Strugglinggirl/p/13704955.html