zoukankan      html  css  js  c++  java
  • 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);

    运行结果:

  • 相关阅读:
    URAL 2067 Friends and Berries (推理,数学)
    URAL 2070 Interesting Numbers (找规律)
    URAL 2073 Log Files (模拟)
    URAL 2069 Hard Rock (最短路)
    URAL 2068 Game of Nuts (博弈)
    URAL 2066 Simple Expression (水题,暴力)
    URAL 2065 Different Sums (找规律)
    UVa 1640 The Counting Problem (数学,区间计数)
    UVa 1630 Folding (区间DP)
    UVa 1629 Cake slicing (记忆化搜索)
  • 原文地址:https://www.cnblogs.com/chorkiu/p/11413717.html
Copyright © 2011-2022 走看看