Module和Package是Node.js最重要的支柱。

  Node.j 提供require函数来调用其他模块,而且模块都是基于文件。模块和包区别是透明的,因此常常不作区分。

  1.模块和文件一一对应。一个文件就是一个模块。文件可能是JS代码,JSON或者编译过的C/C++扩展。

   通过是require函数获取这个模块,然后使用其中的对象。

  2.

   Node.js提供exports和require两个对象。前者是模块公开的接口,

     后者用于从外部获取一个模块的接口,获取exports对象。

  3.util全局变量

    util.inherits 此方法是一个实现对象间原型继承的函数

    util.inspect 此方法是一个将任意对象转换为字符串的方法,通常用于调试和输出错误。

var util=require('util');
function Base(){
this.name='base';
this.base=;
this.sayHello=function(){
console.log('hello '+this.name+' this year is '+this.base);
};
}
Base.prototype.showName=function(){
console.log(this.name);
}
function Sub(){
this.name='sub';
} util.inherits(Sub,Base); /**个实现对象间原型继承的函数**/ var objBase=new Base();
objBase.showName();
objBase.sayHello(); console.log(objBase); var objSub=new Sub();
objSub.showName(); //objSub.sayHello();
console.log(objSub);
console.log(util.inspect(objBase,true,,true));

  4.事件驱动events

   是Node.js最重要的模板,原因是Node.js本身架构就是事件式的,而它提供了唯一的接口

   events 模板不仅用于用户代码与Node.js下层事件循环的交互,还几乎被所有模板依赖。

   (1)事件发射器

      events模块只提供一个对象。events EventEmitter。核心就是事件发射与事件监听器功能的封装。

      EventEmitter的每个事件由一个事件或若干个参数组成。支持若干个事件监听器。

      当事件发射时,注册到这个事件的监听器将被依次调用,事件参数作为回调函数传递。

var events=require('events');
var emitter=new events.EventEmitter();
emitter.on('someEvent',function(arg1,arg2){
console.log('Listener1',arg1,arg2);
});
emitter.on('someEvent',function(arg1,arg2){
console.log('Listener2',arg1,arg2);
});
emitter.emit('someEvent','marico',);

event-EventEmitter

  (2) error

    EventEmitter定义了一个特殊的事件error,包含错误的定义。我们在遇到异常的时候通常会发射error事件。

    当error事件被发射时,EventEmitter规定如果没有响应的监听器,Node.js会把它当做异常。

    我们一般要为发射error的事件对象设置监听器,避免遇到错误和整合程序崩溃。

var events=require('events');
var emitter=new events.EventEmitter();
emitter.emit('error');

event-error

  (3)继承EventEmitter

    大多数时候我们不会直接使用EventEmitter,而是在对象中继承它,只要支持事件响应的核心模块都是EventEmitter的子类。

    1.具有某个实体功能的对象实现事件的符合语义,事件的监听和发射应该是一个对象的发放。

    2.JavaScript对象机制基于原型,支持部分多重继承,继承EventEmitter不会打乱对象原有的继承关系。

  

   

node.js 基础学习笔记2的更多相关文章

  1. node.js 基础学习笔记3 -http

    http模块,其中封装了一个高效的HTTP服务器和一个建议的HTTP客户端 http.server是一个基于事件的HTTP服务器 http.request则是一个HTTP客户端工具,用户向服务器发送请 ...

  2. node.js 基础学习笔记1

    1. node -v 查看版本 node -e --js代码 node --进入编辑模式 Ctrl+C 退出编译模式 var http=require('http') http.createServe ...

  3. node.js 基础学习笔记3 -express

    1.工作原理 当通过app.js建立的服务器时,会看到一个简单的页面.返回页面时,浏览器会向服务器发送请求.app会解析请求的路径,调用相应的逻辑,调用对应的视图模板,传递对象数值,最终生成HTML页 ...

  4. handlebars.js基础学习笔记

    最近在帮学校做个课程网站,就有人推荐用jquery+ajax+handlebars做网站前端,刚接触发现挺高大上的,于是就把一些基础学习笔记记录下来啦. 1.引用文件: jquery.js文件下载:h ...

  5. 两万字Vue.js基础学习笔记

    Vue.js学习笔记 目录 Vue.js学习笔记 ES6语法 1.不一样的变量声明:const和let 2.模板字符串 3.箭头函数(Arrow Functions) 4. 函数的参数默认值 5.Sp ...

  6. Node.js入门学习笔记(一)

    先来个最常见的"Hello World!". 打开你最喜欢的编辑器(我用的是Sublime Text),创建一个helloWorld.js的文件.我们要做的就是向stdout输出& ...

  7. Node.js基础学习四之注册功能

    前言:在Node.js学习(二)和(三)中介绍了如何在Node.js 中获取登录的用户名和密码与数据库进行验证并返回数据给客户端 需求:实现注册功能 为了区分登录和注册是两个不同的请求,在端口后面加上 ...

  8. 两万字Vue.js基础学习笔记(二)

    Vue.js学习笔记(二) 4.模块化开发 ES6模块化的导入和导出 我们使用export指令导出了模块对外提供的接口,下面我们就可以通过import命令来加载对应的这个模块了 首先,我们需要在HTM ...

  9. Node.js基础学习三之登录功能

    本篇介绍Node.js访问数据库并返回数据给客户端 需求基于Node.js学习(二) 数据库请下载:user.sql 1.创建user 实体类(model-user.js) function User ...

随机推荐

  1. Mysql分区简述

    1. 数据量大的时候 mysql分表非常常用,但是mysql还可以分区. 2. 分区就是把同一张表放在不同的磁盘文件上, 当查询的时候首先定位是哪个分区(查询的时候一定要用到分区的key) 3. 分区 ...

  2. SpringMVC学习系列(5) 之 数据绑定-2

    在系列(4)中我们介绍了如何用@RequestParam来绑定数据,下面我们来看一下其它几个数据绑定注解的使用方法. 1.@PathVariable 用来绑定URL模板变量值,这个我们已经在系列(3) ...

  3. 利用WCF的双工通讯实现一个简单的心跳监控系统 z

    利用WCF的双工通讯实现一个简单的心跳监控系统 http://www.cnblogs.com/zuowj/p/5761011.html 何为心跳监控系统? 故名思义,就是监控某个或某些个程序的运行状态 ...

  4. eclipse 3.7 配置svn

    1.首先需要安装SVN客户端TortoisSVN.地址:http://tortoisesvn.net/ 2.eclipse低版本的需要安装Subversive Revision Graph,地址:ht ...

  5. javascript里for循环的一些事情

    今天在给一个学妹调她的代码BUG时,她的问题就是在一个for循环里不清楚流程的具体流向,所以导致了页面怎么调都是有问题,嗯确实你如果不清楚语句流向很轻易就会出问题,所以说for循环不会用或者说用的不恰 ...

  6. AX Dynamic 2012 SSRS autorepot中取当前公司名、打印时间、打印页码

    1.  ssrs---取公司名称 =Microsoft.Dynamics.Framework.Reports.DataMethodUtility.PostDataMethodEvaluation(Mi ...

  7. Chap4: question: 19 - 28

    19. 二叉树的镜像(递归) 即:交换所有节点的左右子树.从下往上 或 从上往下 都可以. #include <iostream> #include <string> usin ...

  8. 2.Median of Two Sorted Arrays (两个排序数组的中位数)

    要求:Median of Two Sorted Arrays (求两个排序数组的中位数) 分析:1. 两个数组含有的数字总数为偶数或奇数两种情况.2. 有数组可能为空. 解决方法: 1.排序法 时间复 ...

  9. Protractor

    官网地址:http://www.protractortest.org/ 1. 预备环境 protractor 是一个 Node.js 程序,为了运行 protractor ,你首先需要 Node 环境 ...

  10. Discuz开源论坛本地部署自动生成数据库

    这个版本可能比较有点老,但是万变不离其宗,再新的版本都是在已有的基础上更新的,所以掌握方法是最重要的! 先上几张安装成功后的图 (安装成功的论坛首页) (后台管理登录页) 下面说一下安装步骤 第一步: ...