zoukankan      html  css  js  c++  java
  • 模块的导入导出:

    核心模块和文件模块:

              nodejs是一个js运行环境,是一个平台。nodejs基于操作系统,

                   封装了一些功能,http、tcp、udp,i/o模块、path、fs、stream等等。
              以上这些通过nodejs内置的模块,它们就称为核心模块。http、fs、path等

             文件模块:只要咱们写一个js文件,每一个文件都是模块。
             注:核心模块是nodejs内置的一些功能模块,文件模块是开发人员编写的js文件

    从模块访问到模块内部的成员:

                在nodejs中,一个文件又被称为一个模块。从一个模块访问外部模块中变量或方法
                先创建了两个模块,demo1,demo2
                在demo1中声明的变量str,方法add()
                在demo2中没有权限访问,如果要访问到的话,就要把变量或方法做成全局属性
                用到global来把str和add函数变成全局属性
                global.str = "声明变量";
                global.add = function(){console.log('函数表达式');}
                在demo2中就可以访问到str和add().

    使用exports对象:

                           // exports 这个对象的属性 是可以将模块内的方法、变量等抛出,并且在其它引入的模块中可见(可使用)
                          // demo1.js
                 exports.str = "hello";
                 exports.hello = function(){
                 console.log('你好世界');
                 }

                        // 在demo2.js中引入demo1.js文件 可以使用demo1中的变量和方法
               var demo1 = require('./demo1');
               demo1.hello();
               demo1.st      // 这里是str变量的调用 需要console.log才能看到

    将模块定以为类变量和类函数:

    // 返回一个JSON Object
    var app = {
    name: 'app',
    version: '1.0.0',
    sayName: function(name){
    console.log(this.name);
    }
    }
    module.exports = app;
    // 调用模块
    var app = require('./app.js');
    app.sayName('hello');//hello

    // 定义变量

    // 定义函数
    var func1 = function() {
    console.log("func1");
    };

    var func2 = function() {
    console.log("func2");
    };

    exports.function1 = func1;
    exports.function2 = func2;
    // 函数调用
    var functions = require("./functions");
    functions.function1();functions.function2();

      注意:

    1. module.exports 初始值为一个空对象 {}

    2. exports 是指向的 module.exports 的引用

    3. require() 返回的是 module.exports 而不是 exports

     Commonjs 中的require/ exports和ES6中的import.export区别:

    A。 CommonJs模块的重要特性是加载是执行,即脚本代码在require的时候,就会全部执行。

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

    B. ES6 模块是动态引用,如果使用 import 从一个模块加载变量,那先变量不会被缓存,

         而是成为一哥指向被加载模块引用,  需要开发者自己保证,真正取值的时候能够取得值;

    C. import/export 最终都是编译2为require/exports来执行的;
    D. CommonJs 规范规定,每个模块内部,module 变量代表当前模块,这个变量是一对像,

         它的exports属性(即 module.exports)是对外的接口,      加载某哥模块,

         其实是加载改模块的module.exports属性;

    E. export命令规定是对外的接口,必须与模块内部的变量建立一一对应关系;

           

  • 相关阅读:
    CSS 选择器及各样式引用方式
    The usage of docker image wurstmeister/kafka
    kafka connect rest api
    Kafka connect in practice(3): distributed mode mysql binlog ->kafka->hive
    jail-break-rule
    Ubuntu下把缺省的dash shell修改为bash shell
    mysql 5.7 enable binlog
    Docker CMD in detail
    记一次深度系统安装至windows系统盘提示挂载为只读模式问题
    android 监听声音变化
  • 原文地址:https://www.cnblogs.com/yjzs/p/12068813.html
Copyright © 2011-2022 走看看