android nodejs 超大型项目 变量类型,NodeJS 基础模块 · Android

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

Node.js 是运行在服务器端的 JavaScript 环境,服务器程序和浏览器程序相比,最大的特点是没有浏览器的安全限制了,而且,服务器程序必须能接收网络请求,读写文件,处理二进制内容,所以, Node.js 内置的常用模块就是为了实现基本的服务器功能。这些模块在浏览器环境中是无法被执行的,因为它们的底层代码是用 C/C++ 在 Node.js 运行环境中实现的。

1.1. global

JavaScript 有且仅有一个全局对象,在浏览器中,叫 window 对象。而在 Node.js 环境中,也有唯一的全局对象,但不叫 window ,而叫 global ,这个对象的属性和方法也和浏览器环境的 window 不同。进入 Node.js 交互环境,可以直接输入:> global.console

Console {

log: [Function: bound ],

info: [Function: bound ],

warn: [Function: bound ],

error: [Function: bound ],

dir: [Function: bound ],

time: [Function: bound ],

timeEnd: [Function: bound ],

trace: [Function: bound trace],

assert: [Function: bound ],

Console: [Function: Console] }

1.2. process

process 是一个全局变量,即 global 对象的属性。它用于描述当前 Node.js 进程状态的对象,提供了一个与操作系统的简单接口,它代表当前 Node.js 进程。通过 process 对象可以拿到许多有用信息。> process === global.process;

true

> process.version;

'v5.2.0'

> process.platform;

'darwin'

> process.arch;

'x64'

> process.cwd(); // 返回当前工作目录

'/Users/a284628487'

> process.chdir('/private/tmp'); // 切换当前工作目录

undefined

> process.cwd();

'/private/tmp'

JavaScript 程序是由事件驱动执行的单线程模型,Node.js 也不例外。Node.js 不断执行响应事件的 JavaScript 函数,直到没有任何响应事件的函数可以执行时,Node.js 就退出了。如果想要在下一次事件响应中执行代码,可以调用 process.nextTick() :// process.nextTick()将在下一轮事件循环中调用:

process.nextTick(function (){

console.log('nextTick callback!');

});

console.log('nextTick was set!');

用 Node 执行上面的代码打印输出是:nextTick was set!

nextTick callback!

说明传入 process.nextTick() 的函数不是立刻执行,而是要等到下一次事件循环。

Node.js 进程本身的事件是由 process 对象来处理。如果我们响应 exit 事件,就可以在程序即将退出时执行某个回调函数:// 程序即将退出时的回调函数:

process.on('exit', function (code){

console.log('about to exit with code: ' + code);

});exit当进程准备退出时触发。beforeExit当 node 清空事件循环,并且没有其他安排时触发这个事件。通常来说,当没有进程安排时 node 退出,但是 'beforeExit' 的监听器可以异步调用,这样 node 就会继续执行。uncaughtException当一个异常冒泡回到事件循环,触发这个事件。如果给异常添加了监视器,默认的操作(打印堆栈跟踪信息并退出)就不会发生。Signal 事件当进程接收到信号时就触发。信号列表详见标准的 POSIX 信号名,如 SIGINT、SIGUSR1 等。process.on('exit', function(code){

// 以下代码永远不会执行

setTimeout(function(){

console.log("该代码不会执行");

}, 0);

console.log('退出码为:', code);

});

console.log("程序执行结束");

1.3. JavaScript执行环境

有很多 JavaScript 代码既能在浏览器中执行,也能在 Node 环境执行,但有些时候,程序本身需要判断自己到底是在什么环境下执行的,常用的方式就是根据浏览器和 Node 环境提供的全局变量名称来判断:if (typeof(window) === 'undefined') {

console.log('node.js');

} else {

console.log('browser');

}

1.4. 全局对象与全局变量

global 最根本的作用是作为全局变量的宿主。按照 ECMAScript 的定义,满足以下条件的变量是全局变量:在最外层定义的变量;

全局对象的属性;

隐式定义的变量(未定义直接赋值的变量)。

当定义一个全局变量时,这个变量同时也会成为全局对象的属性,反之亦然。需要注意的是,在 Node.js 中不可能在最外层定义变量,因为所有用户代码都是属于当前模块的,而模块本身不是最外层上下文。注意:永远使用 var 定义变量以避免引入全局变量,因为全局变量会污染命名空间,提高代码的耦合风险。

1.5. __filename

__filename 表示当前正在执行的脚本的文件名。它将输出文件所在位置的绝对路径,且和命令行参数所指定的文件名不一定相同。如果在模块中,返回的值是模块文件的路径。// 输出全局变量 __filename 的值

console.log(__filename); // 输出main.js的路径

1.6. __dirname

__dirname 表示当前执行脚本所在的目录。// 输出全局变量 __dirname 的值

console.log(__dirname);

1.7. clearTimeout(t)

clearTimeout(t) 全局函数用于停止一个之前通过 setTimeout() 创建的定时器。 参数 t 是通过 setTimeout() 函数创建的计算器。function printHello(){

console.log( "Hello, World!");

}

// 两秒后执行以上函数

var t = setTimeout(printHello, 2000);

// 清除定时器

clearTimeout(t);类似的还有 setInterval(cb, ms) 和 clearInterval(t) 。

1.8. consoleconsole.log([data][, ...])向标准输出流打印字符并以换行符结束。该方法接收若干 个参数,如果只有一个参数,则输出这个参数的字符串形式。如果有多个参数,则 以类似于C 语言 printf() 命令的格式输出。console.info([data][, ...])P该命令的作用是返回信息性消息,这个命令与console.log差别并不大,除了在chrome中只会输出文字外,其余的会显示一个蓝色的惊叹号。console.error([data][, ...])输出错误消息的。控制台在出现错误时会显示是红色的叉子。console.warn([data][, ...])输出警告消息。控制台出现有黄色的惊叹号。console.dir(obj[, options])用来对一个对象进行检查(inspect),并以易于阅读和打印的格式显示。console.time(label)输出时间,表示计时开始。console.timeEnd(label)结束时间,表示计时结束。console.trace(message[, ...])当前执行的代码在堆栈中的调用路径,这个测试函数运行很有帮助,只要给想测试的函数里面加入 console.trace 就行了。console.assert(value[, message][, ...])用于判断某个表达式或变量是否为真,接手两个参数,第一个参数是表达式,第二个参数是字符串。只有当第一个参数为false,才会输出第二个参数,否则不会有任何结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值