25:module.exports exports 和 require import

   当module.exports 指向新的对象时,exports 断开了与 module.exports 的引用,module.exports 指向了新的内存块,而 exports 还是指向原来的内存块。
因此,在不是很清楚两者关系的时候,请采用module.exports来暴露接口,而尽量不采用exports暴露接口。

具体参考:
module.exports和exports的区别

module.exports 使用:

area.js:

function getAreaInfo(callBack){
  var str = [
      {
        "code": "110000",
        "sheng": "11",
        "di": "00",
        "xian": "00",
        "name": "北京市",
        "level": 1
      }]
      callBack(str);
}

//相同getAreaInfo 名称可以 es6可以只写一个
module.exports = {
    getAreaInfo:getAreaInfo
}
或
module.exports = {
    getAreaInfo
}

model.js:

var area = require('../utils/area.js')

area.getAreaInfo(function (arr) {
        areaInfo = arr;
        //获取省份数据
        getProvinceData();

});  

exports的使用在下一遍博客 第26
exports的使用在下一遍博客 第26

import和require的区别:

   ES6标准发布后,module成为标准,标准使用是以export指令导出接口,以import引入模块。但是在我们一贯的node模块中,我们依然采用的是CommonJS规范,使用require引入模块,使用module.exports导出接口。

require:

它相当于module.exports的传送门,module.exports后面的内容是什么,require的结果就是什么,对象、数字、字符串、函数……再把require的结果赋值给某个变量,相当于把require和module.exports进行平行空间的位置重叠。

require理论上可以运用在代码的任何地方,甚至不需要赋值给某个变量之后再使用。

import:
import它是编译时的(require是运行时的),它必须放在文件开头,而且使用格式也是确定的,不容置疑。它不会将整个模块运行后赋值给某个变量,而是只选择import的接口进行编译,这样在性能上比require好很多。require是赋值过程,import是解构过程

require 和 import的区别:

require引入基础数据类型时,属于复制该变量

require引入复杂数据类型时,数据浅拷贝该对象

出现模块之间的循环引用时,会输出已经执行的模块,而未执行的模块不输出

CommonJS模块默认export的是一个对象,即使导出的是基础数据类型

require中 exports 和 module.exports 的区别:

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

exports 是指向的 module.exports 的引用

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

即 module.exports 指向新的对象时,exports 断开了与 module.exports 的引用,那么通过 exports = module.exports 让 exports 重新指向 module.exports 即可。

   一般使用是exports ,import 和 module.exports require但是小程序目前还是用 module.exports 和 require比较好

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值