zoukankan      html  css  js  c++  java
  • 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=2012;
        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,2,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',1991);
    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不会打乱对象原有的继承关系。

          

        

  • 相关阅读:
    不为人知easy-mock-cli
    javascript设计模式之适配器模式
    js --装饰者模式
    使用策略模式封装拦截器
    js --桥接模式
    深入理解面向对象 -- 基于 JavaScript 实现
    设计模式 -- 观察者模式
    敏捷开发
    从技术走向管理
    Vue Cli安装以及使用
  • 原文地址:https://www.cnblogs.com/xianrongbin/p/4756039.html
Copyright © 2011-2022 走看看