zoukankan      html  css  js  c++  java
  • 模块的初始化

    Node 应用由模块组成,采用 CommonJS 模块规范。

    每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。

    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;

    模块的初始化:

    1、引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。

    require规则:

    1、/ 表示绝对路径,./ 表示相对于当前文件的

    2、支持js、json、node拓展,不写依次尝试

    3、不写路径则认为是build_in模块或者各级node_modules内的第三方模块

    调用我们自定义的模块02_cusmod.js,新建一个

    03_require.js

    const mod=require('./02_cusmod');
    
    console.log(mod.testVar);
    
    mod.testFn();

    结果显示:

    发现第一句被打印出来,由此我们知道当加载一个模块的时候所有的语句都会被打印出来

    require特性

    1、moudle被加载的时候执行,加载后缓存;

    加载后缓存:只加载一次,就被存放在内存中去,下一次使用时就直接拿来用;

    例如:

    结果只显示一行,并没有显示两行

    2、一旦出现某一个模块被循环加载,就只输出已经执行的部分,还未执行的部分不会输出

    例如:

    创建05_modA.js

    module.exports.test='A';
    
    const modB=require('./05_modB');
    
    console.log('模块A:',modB.test);
    
    module.exports.test='AA';

    创建05_modB.js

    module.exports.test='B';
    
    const modA=require('./05_modA');
    
    console.log('模块B:',modA.test);
    
    module.exports.test='BB';

    创建05_mod.js调用模块A和B:

    const modA=require('./05_modA');
    
    
    const modB=require('./05_modB');
    
    
    console.log(modA.test);
    console.log(modB.test);

    最终显示的结果:

    当注释了这一句const modB=require('./05_modB');显示的结果仍然时如此,因为执行了一次以及被缓存了:
     
  • 相关阅读:
    打印出从1到最大的n位十进制数
    排序算法--(二)
    排序算法 (-)
    两个栈实现一个队列
    C++ 模板类解析
    根据先序遍历中序遍历重建二叉树
    格式化时间
    用js实现冒泡排序
    接口和抽象类的区别
    解析json
  • 原文地址:https://www.cnblogs.com/jiguiyan/p/10752731.html
Copyright © 2011-2022 走看看