• node.js global object,util and so on


     1 核心模块主要内容:
     2     全局对象
     3     常用工具
     4     事件机制
     5     文件系统访问
     6     http服务器和客户端
     7 
     8 global object 9     所有的全局变量(除了global本身外)都是global object 的属性(attribute)
    10 
    11 global object,global variable
    12     
    13     global的根本作用就最为全局变量的宿主:
    14 what  is global variable?:
    15     在最外层定义的
    16     全局对象的属性
    17     隐式定义的变量(未定义直接赋值的变量)
    18 
    19 Notice: 在Node.js中,你不可能在最外层定义变量,因为所有的用户代码都是当前模块的,二模块本身不是最外层上下文
    20 
    21 var 声明的不是全局变量
    22 
    23 process ->global variable //Desc the  current of node.js process status
    24     process.argv是命令行参数数组,第一个元素是node,第二个是脚本文件名,第三个是参数
    25 
    26     //for example
    27     /*
    28     *author:e路相扶
    29     *filename argv.js
    30     */
    31     console.log(process.argv);
    32      $ node argv.js 1990 name=eself --v 'zhangjun'
    33 
    34     output:
    35         ['node','/home/argv.js','name=eself','--v','zhangjun'];
    36 
    37     process.stdout是标准的输出流,
    38     process.stdout.write()函数提供了更底层的接口
    39     process.stdin是标准的输入流,初始时,她是被暂停的,要想从标准输入读取数据,必须恢复流,并且手动编写流的事件响应函数
    40     
    41     /*
    42     *author:e路相扶
    43     *filename stdin.js
    44     */
    45     process.stdin.resume();
    46     process.stdin.on('data',function(data)){
    47         process.stdout.write('read from console :'+ data.toStrin());
    48     }
    49 
    50     process.nextTick(callback)的功能是为事件循环设置一项任务,node.js会在事件循环响应时调用callback
    51     node.js的一个编程原则是尽量缩短每个事件的执行时间,process.nickTick()提供了这样的工具
     1 /*
     2     *author:e路相扶
     3     *filename nextTick.js
     4     */
     5 
     6 
     7     function doSomething(args,callback){
     8         somethingComplicated(args);
     9         process.nextTick(callback);
    10     }
    11     doSomething(function onEnd(){
    12         compute();
    13     });
    14 -----------------------------------------
    15 Notice :不要使用setTimeout(fn,0)代替process.nextTick(callback),前者比后者的效率要低很多
    16 
    17 process还有很多成员,详细地址查看 http://nodejs.org/api/process.html
    18 
    19 console :
    20     console用于提供控制台标准的输出,
    21     console.log(variable),如果一个参数,则输出这个参数的字符串形式,多个参数,则参照c的printf()命令的格式
    22     //js中也有这个,比alert()测试好用--个人感觉
    23     console.error() :the same as console.log() 只是像标准错误流输出
    24     console.trace()向标准错误流输出当前的调用栈
    25 
    26 Util://提供常用函数的集合
    27     util.inherits(constructor,superConstructor)是一个实现对象间原型继承的函数
    28     /*
    29     *author:e路相扶
    30     *filename util.js
    31     */
    32 
    33     var util=require('util');
    34     function Base(){
    35         this.name='base';
    36         this.base='1990';
    37         this.sayHello=function(){
    38             console.log('Hello '+this.name);
    39         }
    40     }
    41     Base.prototype.showName=function(){
    42         console.log(this.name);
    43     }
    44     function sub(){
    45         this.name='sub';
    46     }
    47     util.inherits(sub,Base);
    48     var objBase=new Base();
    49     objBase.showName();// base
    50     objBase.sayHello();//hello base
    51     console.log(objBase);//{name:'base',base:1991,sayHello:[function]} sub {name:'sub'}
     1 util.inspect(object,[showHidden],[depth],[colors]) 是一个将任意对象转换为字符串的方法,通常用于调试和错误输出
     2     object:将要转换的对象
     3     showHidden:如果是true,将会输出更多隐藏信息
     4     depth:表示最大递归层数,不指定默认为递归2层,指定为null表示不限递归层数,完整便利对象
     5     color:true输出格式将会以ANSI颜色编码
     6 util.inspect并不会简单地直接把对象转换为字符串,即使该对象定义了toString方法也不会调用。
     7     /*
     8     *author:e路相扶
     9     *filename inspect.js
    10     */
    11 var util=require('util');
    12 function Person(){
    13     this.name='e路相扶';
    14     this.toString=function(){
    15         return this.name;
    16     }
    17 }
    18 var obj=new Person();
    19 console.log(util.inspect(obj));
    20 console.log(util.inspect(obj,true));
    21 
    22 output:
    23     {name:'e路相扶',toString:[function]}
    24     {toString:
    25       {[function]
    26         [prototype]:{[constructor]:[Circular]},
    27         [caller]:null,
    28         [length]:0,
    29         [name]:'',
    30         [arguments]:null},
    31         name:'e路相扶'
    32     }
    33 
    34 除了上面几个函数,util.isArray(),util.isRegExp(),util.isDate(),util.isError(),util.format(),
    35 util.debug()等我们可以在http://nodejs.org/api/util.html 了解详细内容
    36 
    37 event-driven events:
    38     events 是Node.js最重要的模块,没有之一,Node.js本身架构就是事件式的
    39     事件发射器:
    40     events模块只能提供一个对象,events.EventEmitter
    41     events.EventEmitter核心就是事件发射与事件监听功能的封装,EventEmitter的每个事件就是由一个事件名和
    42     若干个参数组成,事件名是一个字符串,通常表达一定的语义。对于每个事件,EventEmitter支持若干个事件监听器
    43     当事件发射时,注册到这个事件的事件监听器被一次调用,事件参数为回调函数参数传递
    44 /*
    45     *author:e路相扶
    46     *filename events.js
    47     */
    48     var events=require('events');
    49     var emitter=new events.EventEmitter();
    50     emitter.on('someEvent',function(arg1,arg2){
    51         console.log('listener1',arg1,arg2);
    52     });
    53     emitter.on('someEvent',function(arg1,arg2){
    54         console.log('listener2',arg1,arg2);
    55     });
    56     emitter.emit('someEvent','e路相扶',1990);
    57 
    58     output:
    59         listener1 e路相扶 1990
    60         listener2 e路相扶 1990
    
    
    
    
    
  • 相关阅读:
    VC combobox
    myitoa()函数
    什么是虚拟显示
    一些itoa()函数
    C语言运算符优先级
    一些小问题
    return 语句会发生的错误
    Sizeof与Strlen的区别与联系
    用异或运算符实现不用第三个临时变量交换两个变量的值
    字符串化运算符#
  • 原文地址:https://www.cnblogs.com/zhangjun516/p/3173812.html
Copyright © 2020-2023  润新知