核心模块主要内容:
全局对象
常用工具
事件机制
文件系统访问
http服务器和客户端 global object:
所有的全局变量(除了global本身外)都是global object 的属性(attribute) global object,global variable global的根本作用就最为全局变量的宿主:
what is global variable?:
在最外层定义的
全局对象的属性
隐式定义的变量(未定义直接赋值的变量) Notice: 在Node.js中,你不可能在最外层定义变量,因为所有的用户代码都是当前模块的,二模块本身不是最外层上下文 var 声明的不是全局变量 process ->global variable //Desc the current of node.js process status
process.argv是命令行参数数组,第一个元素是node,第二个是脚本文件名,第三个是参数 //for example
/*
*author:e路相扶
*filename argv.js
*/
console.log(process.argv);
$ node argv.js name=eself --v 'zhangjun' output:
['node','/home/argv.js','name=eself','--v','zhangjun']; process.stdout是标准的输出流,
process.stdout.write()函数提供了更底层的接口
process.stdin是标准的输入流,初始时,她是被暂停的,要想从标准输入读取数据,必须恢复流,并且手动编写流的事件响应函数 /*
*author:e路相扶
*filename stdin.js
*/
process.stdin.resume();
process.stdin.on('data',function(data)){
process.stdout.write('read from console :'+ data.toStrin());
} process.nextTick(callback)的功能是为事件循环设置一项任务,node.js会在事件循环响应时调用callback
node.js的一个编程原则是尽量缩短每个事件的执行时间,process.nickTick()提供了这样的工具
 /*
*author:e路相扶
*filename nextTick.js
*/ function doSomething(args,callback){
somethingComplicated(args);
process.nextTick(callback);
}
doSomething(function onEnd(){
compute();
});
-----------------------------------------
Notice :不要使用setTimeout(fn,)代替process.nextTick(callback),前者比后者的效率要低很多 process还有很多成员,详细地址查看 http://nodejs.org/api/process.html console :
console用于提供控制台标准的输出,
console.log(variable),如果一个参数,则输出这个参数的字符串形式,多个参数,则参照c的printf()命令的格式
//js中也有这个,比alert()测试好用--个人感觉
console.error() :the same as console.log() 只是像标准错误流输出
console.trace()向标准错误流输出当前的调用栈 Util://提供常用函数的集合
util.inherits(constructor,superConstructor)是一个实现对象间原型继承的函数
/*
*author:e路相扶
*filename util.js
*/ var util=require('util');
function Base(){
this.name='base';
this.base='';
this.sayHello=function(){
console.log('Hello '+this.name);
}
}
Base.prototype.showName=function(){
console.log(this.name);
}
function sub(){
this.name='sub';
}
util.inherits(sub,Base);
var objBase=new Base();
objBase.showName();// base
objBase.sayHello();//hello base
console.log(objBase);//{name:'base',base:1991,sayHello:[function]} sub {name:'sub'}
 util.inspect(object,[showHidden],[depth],[colors]) 是一个将任意对象转换为字符串的方法,通常用于调试和错误输出
object:将要转换的对象
showHidden:如果是true,将会输出更多隐藏信息
depth:表示最大递归层数,不指定默认为递归2层,指定为null表示不限递归层数,完整便利对象
color:true输出格式将会以ANSI颜色编码
util.inspect并不会简单地直接把对象转换为字符串,即使该对象定义了toString方法也不会调用。
/*
*author:e路相扶
*filename inspect.js
*/
var util=require('util');
function Person(){
this.name='e路相扶';
this.toString=function(){
return this.name;
}
}
var obj=new Person();
console.log(util.inspect(obj));
console.log(util.inspect(obj,true)); output:
{name:'e路相扶',toString:[function]}
{toString:
{[function]
[prototype]:{[constructor]:[Circular]},
[caller]:null,
[length]:,
[name]:'',
[arguments]:null},
name:'e路相扶'
} 除了上面几个函数,util.isArray(),util.isRegExp(),util.isDate(),util.isError(),util.format(),
util.debug()等我们可以在http://nodejs.org/api/util.html 了解详细内容 event-driven events:
events 是Node.js最重要的模块,没有之一,Node.js本身架构就是事件式的
事件发射器:
events模块只能提供一个对象,events.EventEmitter
events.EventEmitter核心就是事件发射与事件监听功能的封装,EventEmitter的每个事件就是由一个事件名和
若干个参数组成,事件名是一个字符串,通常表达一定的语义。对于每个事件,EventEmitter支持若干个事件监听器
当事件发射时,注册到这个事件的事件监听器被一次调用,事件参数为回调函数参数传递
/*
*author:e路相扶
*filename events.js
*/
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','e路相扶',); output:
listener1 e路相扶
listener2 e路相扶


node.js global object,util and so on的更多相关文章

  1. Node.js:常用工具util

    概要:本篇博客的主要内容是介绍node.js的常用工具util. 1.util.inherits util.inherits(constructor,superConstructor)是一个实现对象间 ...

  2. java结合node.js非对称加密,实现密文登录传参——让前后端分离的项目更安全

    前言   在参考互联网大厂的登录.订单.提现这类对安全性操作要求较高的场景操作时发现,传输的都是密文.而为了目前项目安全,我自己负责的项目也需要这方面的技术.由于,我当前的项目是使用了前后端分离技术, ...

  3. Node.js 常用工具 (util.inherits)

    util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.inherits util.inherits(constructor ...

  4. Node.js+Web TWAIN,实现Web文档扫描和图像上传

      目录(?)[+] 通过Dynamic Web TWAIN SDK和Node.js的组合,只需要几行代码就可以实现在浏览器中控制扫描仪,获取图像后上传到远程服务器. 原文:Document Imag ...

  5. The Node.js Event Loop, Timers, and process.nextTick() Node.js事件循环,定时器和process.nextTick()

    个人翻译 原文:https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/ The Node.js Event Loop, Ti ...

  6. 关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用

    关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用   工作环境:window下 在一切的最开始,安装node.js (中文站,更新比较慢http://nodejs.cn/) ...

  7. GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟。

    GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟. 支持输出多种格式 GitBook支 ...

  8. 打算写一个《重学Node.js》系列,希望大家多多支持

    先放上链接吧,项目已经开始2周了:https://github.com/hellozhangran/happy-egg-server 想法 现在是2019年11月24日,还有人要开始学习Node.js ...

  9. 你不知道的Node.js性能优化,读了之后水平直线上升

    本文由云+社区发表 "当我第一次知道要这篇文章的时候,其实我是拒绝的,因为我觉得,你不能叫我写马上就写,我要有干货才行,写一些老生常谈的然后加上好多特技,那个 Node.js 性能啊好像 D ...

随机推荐

  1. 论坛:一对一关联映射/单向关联/两个类间,可以有两个(多个)关联关系/content为大文本类型/

    >>单向:只写一端的映射属性,另一端不写(有一端用不着);双向:两端都写映射属性 >>一对一关联有两类:一类基于主键的(一般不使用),一类基于外键的(重点学习): 外键:是一个 ...

  2. 对象回收过程?线程池执行过程? map原理?集合类关系?synchronized 和 volatile ? 同一个类的方法事务传播控制还有作用吗?java 锁

    1.  对象回收过程? 可达性分析算法: 如果一个对象从 GC Roots 不可达时,则证明此对象不可用. 通过一系列称为GC ROOTS的对象作为起点,从这些起点往下搜索,搜索走过的路径 称为引用链 ...

  3. 使用adb shell 模拟点击事件

    针对问题[appium无法点击到某一内容,需要使用adb去执行点击事件] 需要命令: adb shell adb devices input [input可以实现的功能]: 输入文本信息:input ...

  4. Peter的烟(水题测试2017082401&洛谷1150)

    题目链接:Peter的烟 这道题基本做法很水,不解释. #include<bits/stdc++.h> using namespace std; int main(){ int n,k; ...

  5. PHP字符串函数运用小案例

    $str = 'ZenD_CONTRollER_FronT'; //转换为Zend_Controller_Front //1.全部转换为小写 $str1 = strtolower($str); //2 ...

  6. Django之auth模块用户认证模块

    一.Auth模块 1)auth模块是什么.登录后台使用的账号密码,则就是使用的auth模块创建的表 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站 ...

  7. 前端html的简单认识

    一.html 超文本标记语言 hypertext markup language 二.html的结构 三.html标签格式 1.标签由<>把关键字括起来 2.标签通常是成对出现的 , eg ...

  8. idea如何将项目以eclipse保存

    会生成 提交到svn     eclipse 导入 首先使用TortoiseSVN下载要导入的项目 导入 已经存在的maven 项目       clean install -DskipTests t ...

  9. 2018.12.15 spoj Longest Common Substring II(后缀自动机)

    传送门 后缀自动机基础题. 给出10个串求最长公共子串. 我们对其中一个建一个samsamsam,然后用剩下九个去更新范围即可. 代码: #include<bits/stdc++.h> # ...

  10. Booksim的运行

    1.下载flex和bison解压到/home/cp/booksim2-master/src; 2.进入flex.bison的目录下分别执行: ./configure make make install ...