Node.JS与 ES 6中 模块的 export 与 import

在 Node.JS中

1、Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接口, require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象。require是“运行时加载”,加载模块得到对应的对象。

2、require 不会重复加载模块,也就是说无论调用多少次 require, 获得的模块都是同一个(实例)。Node.js 与 ES6 模块输出的都是值的引用。

require获取模块的接口与其对应的值是动态绑定关系, 即通过该接口, 可以取到模块内部实时的值。

3、exports.Hello表示通过 exports 对象把 Hello 类 export,将exports.Hello指向了 Hello, 然后 在其他文件中需要通过 require('./singleobject').Hello 来获取 Hello 对象,因为require('./singleobject')就获得singleobject模块的exports对象。而exports.Hello指向了Hello。所以require('./singleobject').Hello 能够获取Hello对象。

//singleobject.js

function Hello() {
    var name;
    this.setName = function (thyName) {
        name = thyName;
    };

    this.sayHello = function () {
        console.log('Hello ' + name);
    };
};
exports.Hello = Hello;


4、module.exports = Hello; 直接将 exports对象指向Hello,那么require('./hello')就直接获得了Hello对象。

//hello.js
function Hello() {
    var name;
    this.setName = function(thyName) {
        name = thyName;
    };
    this.sayHello = function() {
        console.log('Hello ' + name);
    };
};
module.exports = Hello;
//gethello.js
var Hello = require('./hello');
hello = new Hello();
hello.setName('BYVoid');
hello.sayHello();


不可以通过对 exports 直接赋值代替对 module.exports 赋值。
exports 实际上只是一个和 module.exports 指向同一个对象的变量,
它本身会在模块执行结束后释放,但 module 不会,因此只能通过指定
module.exports 来改变访问接口。

参考:Node.js开发指南
 

在 ES 6中,

1、模块不是对象。加载模块是“编译时加载”或者静态加载, 即 ES6 可以在编译时就完成模块加载。

2、export 命令用于规定模块的对外接口, import 命令用于输入其他模块提供的功能。
3、export 命令除了输出变量, 还可以输出函数或类

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

// 报错
var m = 1 ;
export m;

通过变量 m , 还是直接输出1。1 只是一个值, 不是接口。 正确的写法:

// 写法二
var m = 1 ;
export {m};


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值