视频加载失败

Nodejs的全局对象和全局变量

952 字
5 分钟
Nodejs的全局对象和全局变量

全局对象#

  • 所有模块都可以调用
    1. global:表示Node所在的全局环境,类似于浏览器中的window对象。
    • 你可以通过console.log(global);来输出一下global;
  • 1-1. global全局对象里常用的变量

      1. __dirname 存储的是在nodejs中执行javascript所在的绝对目录
      console.log(__dirname);
      //C:\Users\Gao\Documents\webstore学习文件\node
      1. __filename 文件名
      console.log(__filename);
      //C:\Users\Gao\Documents\webstore学习文件\node\global.js
    1. process 程序所执行的一些相关的内容信息的封装对象
  • 指向Node内置的process模块,允许开发者与当前进程互动。

    • 例如你在DOS或终端窗口直接输入node,就会进入NODE的命令行方式(REPL环境)。如果要退出的话,可以输入 process.exit();

    • 2-1. 和输出相关的 process.stdout/process.stderr

        1. process.stdout —> standard output —> 标准的信息输出
        1. process.stderr —> standard error —> 标准的错误输出
        • console.info和console.error这些相关的输出功能就是调用的process.stdout和process.stderr来完成的

          process.stdout.write("this is stdout");
          process.stderr.write("this is stderr");//红色的
    • 2-2. process如何去监听一些事件

        1. process.stdin.on() 监听用户输入的键盘信息
        1. process.on()监听操作系统对node发出的一些信号
    • 2-3. 如何读取输入用户的键盘输入

        1. process.stdin
        • 在使用process.stdin之前 要先对他进行一下编码设置
        process.stdin.setEncoding("utf-8");
        //这里的编码设置和平常编写网页时候的文本编码不一样
        //在这里如果想读取纯文本信息 只要把他的编码设置成utf-8就可以了 不需要去考虑类似jbk或者jb2312来区分是不是中文
        //on方法来监听用户相关的输入事件
        // process.stdin.on("data",function (data) {
        // console.log(data);
        // });
        process.stdin.on("readable",function () {
        var data=process.stdin.read();
        //回调函数没有参数 需要通过process.stdin.read来读取用户的键盘输入信息
        console.log(data);
        });
        //exit事件
        process.on("exit",function () {
        console.log("programe will exit");
        });
        //在程序正常退出的之前 会触发exit事件
        //SIGINT --> signal interrupted 信号 被中断
        //当一个信号被中断的时候就会触发SIGINT事件(cmd 中 ctrl+c会中断信号)
        process.on("SIGINT",function () {//会改变程序默认的退出行为
        console.log("programe has a sigint");
        process.exit();//让程序正常退出
        });
      1. console:指向Node内置的console模块,提供命令行环境中的标准输入、标准输出功能。

        通常是写console.log();

全局函数#

    1. 定时器函数:共有4个,分别是setTimeout(), clearTimeout(), setInterval(), clearInterval()。
    1. require:用于加载模块

全局变量:#

    1. _filename:指向当前运行的脚本文件名。
    1. _dirname:指向当前运行的脚本所在的目录

准全局变量#

  • 模块内部的局部变量,指向的对象根据模块不同而不同,但是所有模块都适用,可以看作是伪全局变量,主要为module, module.exports, exports等。

  • module变量指代当前模块。module.exports变量表示当前模块对外输出的接口,其他文件加载该模块,实际上就是读取module.exports变量。

  • module.id 模块的识别符,通常是模块的文件名。

  • module.filename 模块的文件名。

  • module.loaded 返回一个布尔值,表示模块是否已经完成加载。

  • module.parent 返回使用该模块的模块。

  • module.children 返回一个数组,表示该模块要用到的其他模块。

  • 这里需要特别指出的是,exports变量实际上是一个指向module.exports对象的链接,等同在每个模块头部,有一行这样的命令。 var exports = module.exports;

  • 这造成的结果是,在对外输出模块接口时,可以向exports对象添加方法,但是不能直接将exports变量指向一个函数: exports = function (x){ console.log(x);};

  • 上面这样的写法是无效的,因为它切断了exports与module.exports之间的链接。

  • 如果你觉得,exports与module.exports之间的区别很难分清,一个简单的处理方法,就是放弃使用exports,只使用module.exports。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
Nodejs的全局对象和全局变量
https://gaodaxiu-blog.netlify.app/posts/Nodejs的全局对象和全局变量/
作者
GaoDaXiu
发布于
2017-06-27
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
GaoDaXiu
Hello, I'm GaoDaXiu.
公告
欢迎来到我的博客!
分类
标签
最新动态
站点统计
文章
76
分类
20
标签
128
总字数
72,109
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Netlify CI
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录