Node.js——运行在服务端的 JavaScript
Node.js | |
组成 |
1、引入required模块:使用require指令载入模块。 2、创建服务器:服务器可以监听客户端的请求。 3、接受请求与响应请求。服务器接收请求后返回响应数据。 |
npm (npm 命令用于从国外的服务器上下载别人做好的模块) |
1、用来下载别人模块的工具 (1)切换到项目目录下:d:\project\nodejs\src (2)安装模块:npm install 【模块名】 (3)安装的目录:nodejs/src/node_modules文件目录下。 2、发布自己模块的工具 (1)新建项目目录:nodejs/helloyap (2)新建文件:a.js+package.json (3)登陆npm:npm adduser (4)发布模块:D:\project\nodejs\helloyap>npm publish (5)邮件通知发布成功 |
cnpm (c 是 copy的意思,即复制 npm 上面的库。) (把npm 上面的库复制到 国内的服务器上。) (当需要用的时候,使用 cnpm 命令获取) |
1、用来下载别人模块的工具 (1)切换到项目目录下:d:\project\nodejs (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)事件的监听和发生应该是一个对象的方法。 |
后续再补充 | |