• NodeJS2-1环境&调试----CommonJS


    CommonJS

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

    require规则

    • /表示绝对路径,./表示型对于当前文件的(相对路径)
    • 支持js,json,node拓展名,不写依次尝试,都找不到就会报错
    • 不写路径则认为build-in模块或者各级node_modules内的第三方模块

    require特性

    • module被加载的时候执行,加载后缓存(只加载一次)
    • 一旦出现某和模块被循环加载,就只输出已经执行的部分,还未执行的部分不会输出

    require特性1的例子:

    02_cusmod.js

    console.log('this is a module');
    const testVar = 100;
    function test(){
        console.log(testVar);
    }
    //对外进行两个输出
    module.exports.testVar = testVar
    module.exports.testFn = test;

    调用它的 04_cache.js

    require('./02_cusmod.js');
    require('./02_cusmod.js');

    如果不是只加载一次的话,那么运行04_cache.js控制台就会输出两次 this is module 这句话

    可是

    require特性2的例子:(日常要避免出现这种情况)

    05_modA.js

    module.exports.test = 'A';
    const modB = require('./06_modB.js')
    console.log('modA的执行结果'+modB.test);
    module.exports.test = 'AA'

    06_modB.js

    module.exports.test = 'B'
    const modA = require('./05_modA.js')
    console.log('modB的执行' + modA.test);
    module.exports.test='BB'

    07_main.js

    const modA = require('./05_modA.js')
    const modB = require('./06_modB.js')//因为modA 里面已经调用了modB,所以这里调用的modB只是从缓存里读出
    console.log(modA.test);
    console.log(modB.test);

    运行结果:

  • 相关阅读:
    CentOS7.0安装Nginx 1.7.4
    Java If ... Else
    Java 布尔运算
    Java Math
    Java 运算符
    Java 数据类型
    Java 变量
    Java 注释
    Java 基本语法
    Java 简介
  • 原文地址:https://www.cnblogs.com/chorkiu/p/11413717.html
Copyright © 2020-2023  润新知