zoukankan      html  css  js  c++  java
  • commonJS规范中模块自带的属性

    在 node 中,模块分为 核心模块其他模块(也可以叫自定义模块,用户写的,或者从npm上下载下来的模块)

    • 核心模块指的就是 node 提供的模块,如 fs、http 等模块。

      • 核心模块是直接通过node源码直接编译成二进制文件
      • 在node进程启动时,部分核心模块就直接加载在内存中了,比如 console,是不需要引入的
      • 核心模块加载速度是最快的
    • 自定义模块就是用户自己写的或者加载第三方的模块

    在使用commonJS规范的node模块中,每个模块中都自带了5个属性。
    分别是 module,exports,require,__filename,__dirname 这5个。

    // app.js
        console.log(module);        // 输出 module 对象
    
        console.log(exports);       // 输出 exports 对象
        
        console.log(require);      // 这是一个函数 
        
        console.log(__filename);   //  当前模块所在路径 + 当前模块
        
        console.log(__dirname);   //  当前模块所在的路径
    
        node app.js   # 通过 node 运行 app.js
    

    module对象的属性

    #  console.log(module); 的输出
    Module {
      id: '.',                          # 当前模块id
      exports: {},                      # 表示当前模块暴露给外部的对象
      parent: null,                     # 表示调用当前模块的模块
      filename: 'F:\common\app.js',   # 当前模块的绝对路径
      loaded: false,                    # 布尔值,表示当前模块是否被完全加载
      children: [],                     # 表示当前模块调用的模块
      paths: [ 'F:\common\node_modules', 'F:\node_modules' ] 
    }
    

    module的加载过程

    1. 通过计算获取模块的绝对路径
    2. 判断是否存在缓存,如果有,加载缓存
    3. 判断是否是核心模块
    4. 生成模块的实例,存进缓存
    5. 加载模块
    6. 输出模块的exports属性

    参考: 《深入浅出Node.js》作者:朴灵 第二章 模块机制

    开发工具
  • 相关阅读:
    MySQL索引优化入门
    优雅实现订单关闭及定时器的使用
    web.xml详解
    多个Tomcat之间实现Session共享
    tomcat8.0 基本参数调优配置
    tomcat部署会碰到的问题
    Centos7以上的版本 mysql 无法启动,无法停止问题
    tomcat 重启报错unregister mbean error javax.management.InstanceNotFoundException
    日线做多,15min做空的情况收集
    葛兰碧均线法则
  • 原文地址:https://www.cnblogs.com/cisbest/p/13516559.html
Copyright © 2011-2022 走看看