您的位置:首页 > Web前端 > Node.js

四,Node.js基础知识(2)

2016-09-05 22:13 393 查看

1,定时器对象的unref与ref方法

当使用setTimeout函数指定过多少毫秒调用某个回调函数或使用setInterval函数指定每隔多少毫秒调用某个回调函数后,可以使用setTimeout或者setInterval函数返回的定时器对象的unref取消函数中指定的回调函数的调用。

ref与unref的作用正好相反。

2,与模块相关的全局函数及对象

2.1,使用require加载模块

在Node中使用require来加载模块

var foo = require("../foo.js");
//或者是
var http = require("http");


require函数使用一个参数,参数值可以为完整路径模块文件名,也可以是模块名。使用Node中提供的模块时,只需要将参数指定为模块名。

新建两个文件customeModule.js和app.js

代码分别如下:

var string = "this is custome module";
exports.string = string;


使用exports对象将string变量传递到模块外部

var customeModule = require("./customeModule.js");
console.log(customeModule.string);


在控制台中输入
node app.js
控制台输出
this is custome module


由于所有脚本文件都是一个模块文件,因此app.js脚本文件本身也是一个模块文件。又由于该文件在命令行中通过node命令直接调用运行的,因此在Node.js中把该模块程为应用程序的主模块。

有了主模块的概念,可以使用require.main来检测一个模块是否为应用程序中的主模块

var classs = require("./class");

classs.add("爱迪生",["科比","乔丹","皮蓬"])
if(classs != require.main){
console.log("classs不是一个主模块");
}


如果对于一个模块多次调用,node不会多次的执行模块内中的代码。因为模块在首次加载后将缓存在内存缓存区中,对于相同模块的多次引用得到的都是同一个模块对象。

2.2,使用require.resolve查询完整模块名

var info = require.resolve("./console.js");
console.log(info);


运行结果:

e:\WebstormProjects\Programmer\node\js\console.js


2.3,require.cache

在Node.js中,定义了一个require.cache对象,该对象缓存所有已被加载模块的缓存区。可以使用
console.log(require.cache);
表达式来查看该缓存区中的内容。需要说明的是require.cache对象具有一个键值对的结构,键名为每个模块的完整文件名,键值为各模块的对象。

console.log(require.cache);


运行结果:

{ 'e:\WebstormProjects\Programmer\node\js\index.js':
Module {
id: '.',
exports: {},
parent: null,
filename: 'e:\\WebstormProjects\\Programmer\\node\\js\\index.js',
loaded: false,
children: [],
paths:
[ 'e:\\WebstormProjects\\Programmer\\node\\js\\node_modules',
'e:\\WebstormProjects\\Programmer\\node\\node_modules',
'e:\\WebstormProjects\\Programmer\\node_modules',
'e:\\WebstormProjects\\node_modules',
'e:\\node_modules' ] } }


3,_filename变量与_dirname变量

预定义了两个变量:用于获取当前模块文件名的_filename变量与用于获取当前目录的_dirname变量。

console.log(__filename);//获取当前文件名称的完整路径名


console.log(__dirname);//获取当前文件的带有完整绝对路径的文件名


4,事件处理机制及事件环机制

4.1,EnventEmitter类



5,在Node.js中使用调试器

5.1,在命令行窗口中使用调试器

在命令行窗口中,可以使用
node debug [需要被执行的脚本文件名]
例如对以下的代码进行调试

console.log("hello ,world");
function foo(){
console.log("hello, foo");
return 100;
}
var bar = "this is a pen";
var http = require('http');
var i = foo();
console.log(i);


在Node.js中,提供基于TCP协议来访问的调试器,在使用
node debug
后出现下图情形。命令窗口出现“debugger”提示符,后跟“ok”字样,表示调试器已经可以使用。Node.js将在脚本文件的第一行可运行代码之前暂停脚本文件的执行,命令行中出现“break in”+脚本文件的完整文件名+“:”+可运行的行序号,用于标识脚本代码中的暂停位置。



如果需要继续执行当前被暂停执行的脚本,可以在“debug”命令后输入“cout”或“c” 。

需要执行下一行代码,输入next或者是n。

进入函数内部,可以输入“step”或者是“s”,程序将会暂停在函数内第一行代码之前。

在函数内部代码被逐句执行时,可以使用out或者是o立即执行完函数内剩余的所有代码。

5.2,观察变量值或表达式的执行结果

使用
whach('观察时使用的表达式')


取消观察
unwhach('观察时使用的表达式')


5.3,使用node-inspector调试工具

它是通过web网页与用户进行交互。需要在线安装

npm install -g node-inspector


在使用node-inspector调试工具进行调试时,首先在命令行中输入命令

node --dubug-brk[=port] app.js


然后,从别的命令行窗口中执行node-inspector命令来启动工具,然后下面会出现url,将url输入到浏览器的地址栏中就可以调试了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  node.js