美文网首页
Node概述

Node概述

作者: 尘满面鬓微霜 | 来源:发表于2017-03-24 00:30 被阅读0次

    node是单线程,某一个任务的后续操作,往往采用回调函数(callback)的形式进行定义。Node约定,如果某个函数需要回调函数作为参数,则回调函数是最后一个参数。另外,回调函数本身的第一个参数,约定为上一步传入的错误对象。如果没有发生错误,回调函数的第一个参数就传入null。

    全局对象和全局变量

    • 全局对象:global,process(node所属当前进程),console
    • 全局函数:setTimeout(),clearTimeout(),setInterval(),clearInterval(),require(用于加载模块),Buffer(用于操作二进制数据)
    • 全局变量:__filename(当前运行的脚本文件名),__dirname(当前运行的脚本所在的目录)
    • 伪全局变量(模块内部):module, module.exports, exports

    模块化结构

    模块即文件

    • 加载模块:require("moudle")
    • 输出模块:module.exports
    • 核心模块:http,url,fs,querystring,child_process,util,path,crypto

    异常处理

    Node是单线程运行环境,一旦抛出的异常没有被捕获,就会引起整个进程的崩溃。所以,Node的异常处理对于保证系统的稳定运行非常重要。

    • 使用throw语句抛出一个错误对象,即抛出异常。
      try…catch结构,但是,这个结构无法捕获异步运行的代码抛出的异常。因为异步操作会在下一轮事件循环中抛出异常,但是此时catch语句已经运行结束。解决方案:用setTimeout,将错误捕获放在异步操作中。
    • 回调函数
      Node采用的方法,是将错误对象作为第一个参数,传入回调函数。这样就避免了捕获代码与发生错误的代码不在同一个时间段的问题。
    • EventEmitter接口的error事件
      如果没有对error事件部署监听函数,会导致整个应用程序崩溃。

    其他异常处理方法

    • uncaughtException事件
      只要给uncaughtException配置了回调,Node进程不会异常退出,但异常发生的上下文已经丢失,无法给出异常发生的详细信息。而且,异常可能导致Node不能正常进行内存回收,出现内存泄露。所以,当uncaughtException触发后,最好记录错误日志,然后结束Node进程。
    • unhandledRejection事件
      iojs有一个unhandledRejection事件,用来监听没有捕获的Promise对象的rejected状态。
     process.on('unhandledRejection', function (err, p) {
      console.error(err.stack);
    })
    

    相关文章

      网友评论

          本文标题:Node概述

          本文链接:https://www.haomeiwen.com/subject/ztqxottx.html