node.js 基础学习笔记2
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的更多相关文章
- node.js 基础学习笔记3 -http
http模块,其中封装了一个高效的HTTP服务器和一个建议的HTTP客户端 http.server是一个基于事件的HTTP服务器 http.request则是一个HTTP客户端工具,用户向服务器发送请 ...
- node.js 基础学习笔记1
1. node -v 查看版本 node -e --js代码 node --进入编辑模式 Ctrl+C 退出编译模式 var http=require('http') http.createServe ...
- node.js 基础学习笔记3 -express
1.工作原理 当通过app.js建立的服务器时,会看到一个简单的页面.返回页面时,浏览器会向服务器发送请求.app会解析请求的路径,调用相应的逻辑,调用对应的视图模板,传递对象数值,最终生成HTML页 ...
- handlebars.js基础学习笔记
最近在帮学校做个课程网站,就有人推荐用jquery+ajax+handlebars做网站前端,刚接触发现挺高大上的,于是就把一些基础学习笔记记录下来啦. 1.引用文件: jquery.js文件下载:h ...
- 两万字Vue.js基础学习笔记
Vue.js学习笔记 目录 Vue.js学习笔记 ES6语法 1.不一样的变量声明:const和let 2.模板字符串 3.箭头函数(Arrow Functions) 4. 函数的参数默认值 5.Sp ...
- Node.js入门学习笔记(一)
先来个最常见的"Hello World!". 打开你最喜欢的编辑器(我用的是Sublime Text),创建一个helloWorld.js的文件.我们要做的就是向stdout输出& ...
- Node.js基础学习四之注册功能
前言:在Node.js学习(二)和(三)中介绍了如何在Node.js 中获取登录的用户名和密码与数据库进行验证并返回数据给客户端 需求:实现注册功能 为了区分登录和注册是两个不同的请求,在端口后面加上 ...
- 两万字Vue.js基础学习笔记(二)
Vue.js学习笔记(二) 4.模块化开发 ES6模块化的导入和导出 我们使用export指令导出了模块对外提供的接口,下面我们就可以通过import命令来加载对应的这个模块了 首先,我们需要在HTM ...
- Node.js基础学习三之登录功能
本篇介绍Node.js访问数据库并返回数据给客户端 需求基于Node.js学习(二) 数据库请下载:user.sql 1.创建user 实体类(model-user.js) function User ...
随机推荐
- Activity之间数据交流(onActivityResult的用法)
http://www.blogjava.net/mixer-a/archive/2012/03/23/375014.html http://www.cnblogs.com/linjiqin/archi ...
- C#先执行一段sql等后台操作后再提示是否后续操作confrim
应用场景:例如选择一个单据号打击打印后先去数据库检索是否有打打印过,如果有则提示,已打印,是否再打 如果没有则不提示,直接进行打印. 实现原理:多做一个隐藏按钮去实现打印功能,页面上的打印按钮则进行数 ...
- 1、java中常用名字规范
包名:多个单词组成是所有单词字母小写. 类名.接口名:所有单词首字母大写. 变量名.函数名:多单词组成时第一个单词首字母小写,从第二个单词开始首字母大写. 常量名:所有字母大写,单词之间用 “_” 连 ...
- CDN的实现原理
在描述CDN的实现原理,让我们先看传统的未加缓存服务的访问过程,以便了解CDN缓存访问方式与未加缓存访问方式的差别: 用户提交域名→浏览器对域名进行解释→得到目的主机的IP地址→根据IP地址访问发出请 ...
- PHP安装所最到的问题-解决方案
Although Drupals 7+ run smoothly on PHP 5.3, Drupal 6 still feels much better with PHP 5.2. Even tho ...
- 1 、Linux-Rhel6终端介绍-Shell提示符
1.Linux 终端介绍 tty-控制台终端: RHEL6 tty1-tty6 tty就是图形界面 从图形界面切换到字符界面: ctrl+shift+alt +F2~F6 从字符界面切换图形或字符: ...
- MysqlServer如何实现成功卸载,并成功安装
MysqlServer卸载过程如下: (1).在控制面板或者通过其他卸载工具中,卸载MysqlServer. (2).打开C:\ProgramData---这个文件是隐藏的,需显示出来.在里面找到my ...
- win7以管理员身份运行bat提示系统找不到指定的路径。
windows7“以管理员身份运行”bat提示“系统找不到指定的路径.” 使用批处理安装服务,直接双击运行没有权限,右键“以管理员身份运行”却提示“系统找不到指定的路径.”,反复查看路径是正确的. 打 ...
- javascript垃圾回收机制
js中垃圾回收的算法一般包括两种,一种是“清除标记”,另一种是“引用计数”,现在较为流行的是第一种. “引用计数”现在基本已经被抛弃,主要原因是会导致循环引用,从而导致严重的问题(ie9之前的版本DO ...
- ajax返回值给上层函数的方法。
function load_val(callback){//定义一个回调函数 $.getJSON('test.php' , function(dat){ callback(data);//将返回结果当 ...