美文网首页
环境 & 调试

环境 & 调试

作者: bby365 | 来源:发表于2018-06-09 16:52 被阅读0次

    Nodejs 环境

    学习3个部分知识:

    • CommonJs
    • global
    • process

    CommonJS

    • 每一个文件都是一个模块,有自己的作用域
    • 在模块内部module变量代表模块本身
    • module.exports 属性代表模块对外接口

    执行下面代码:

    //index.js
    console.log('bby365')
    

    nodejs帮我们执行的代码如下:

    // exports 与 modules.exports 的快捷方式
    /*
      exprots.test = 1000  会正确导出
      exports  = {test :100} 不会导出 ,因为此时exports是另外一个对象了,和modules.exports 没有了任何关系
      理解两者的区别:对象的引用
    */
    const extports = modules.exports
    (function(exports, require, module, __filename, __dirname){
        console.log('bby365')
    })
    

    require规则

    1. /表示绝对路径, ./ 表示相对当前文件
    2. 不写扩展名 ,会依次 .js .json .node
    3. 如果是直接写模块名,先从bulid-in 模块里找,然后在从node_modules文件夹里找第三方的模块

    require()一个模块,实际上是执行了这个模块,module.exports 相当于返回值返回。
    module被加载,其实是被执行,加载后会缓存:第二次不会再执行,会直接拿缓存中的结果


    global

    • CommonJs
    • Buffer、process、console
    • 定时器 timer
      setTimeout, setInterval, setImmediate, clearTimeout, clearInterval, clearImmediate

    自定义全局变量的方法:

    // 01.js
    const testVar = 1000; // testVar 并不会成为全局变量,因为每一个模块都会有作用域
    global.testVar2 = 500;
    // index.js  
    const mod = require('01.js')
    console.log(mod.testVar)
    console.log(testVar2) 
    

    process

    常用属性和事件

    // argv, argv0, execArgv, execPath
    /*
    argv : 外部启用node命令时,可以传递参数。常用属性,argv[2]之后,表示外部传递的参数。
    其他3个属性不常用,注意下execArgv属性的区别
    */
    const {argv, argv0, execArgv, execPath} = process
    
    argv.forEach(item =>{
        console.log(item)
    })
    
    console.log('argv0:  ' + argv0);
    console.log('execArgv:  ' + execArgv);
    console.log('execPath: ' + execPath);
    
    // env : 返回用户环境信息的对象
    // process.cwd()  : 返回 进程当前工作目录,翻译成人话:执行文件的目录
    // setImmediate() 和  process.nextTick() 的区别; 一般选择 setImmediate()
    setImmediate((name) =>{
        console.log(name)
    },"bby");
    process.nextTick(() =>{
        console.log('365')
    });
    // output:
    // 365
    // bby
    

    相关文章

      网友评论

          本文标题:环境 & 调试

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