首先可以知道的是这是两组不同模块规范。

module.exports 是CommonJS模块规范,通过require 导入

  1. a.js:
  2. var x = 'hello'
  3. module.exports.x = x
  4. b.js:
  5. var a = require('./a.js')
  6. console.log(a.x) // hello

而Node采用CommonJS模块规范,为了方便,为每个模块提供一个exports变量,指向module.exports,相当于

  1. exports = module.exports

所以不能直接将exports变量指向一个值,因为这样等于切断了exports与module.exports的联系。


而export和export default 是属于ES6语法,通过import 导入

export有三种写法

  1. a.js
  2. // 写法一
  3. export var m = 1;
  4. // 写法二
  5. var m = 1;
  6. export {m};
  7. // 写法三
  8. var n = 1;
  9. export {n as m};
  10. b.js
  11. import {m} from 'a.js' // 注意:这里的m是用大括号{}括起来的
  12. 下面是错误写法
  13. // 报错
  14. export 2;
  15. // 报错
  16. var m = 2;
  17. export m;

注意的是export规定对外的接口,必须与模块内部的变量建立一一对应关系。

export default是为模块指定默认输出,一个模块只能有一个export default。

  1. a.js
  2. function fn() { // 输出
  3. }
  4. export default fn
  5. ==>export { fn as default}
  6. import anyName from 'a.js'; // 注意:这里可以不用大括号{}把anyName括起来,因为default是唯一的
  7. ===> import {default as anyName} from 'a.js'
  8. 下面是错误写法:
  9. // 错误
  10. export default var a = 1; // 正确: export default a = 1
  11. export 2; // 正确: export default 2

module.exports exports 和export export default的更多相关文章

  1. exports module.exports export export default之间的关系

    exports 和module.exports是CommonJS模块规范 export export default是ES6模块的规范,两者完全是不同的概念. node应用由模块组成,采用的是Comm ...

  2. NodeJS的exports、module.exports与ES6的export、export default深入详解

    前言 决定开始重新规范的学习一下node编程.但是引入模块我看到用 require的方式,再联想到咱们的ES6各种export .export default. 阿西吧,头都大了.... 头大完了,那 ...

  3. node.js module.exports & exports & module.export all in one

    node.js module.exports & exports & module.export all in one cjs const log = console.log; log ...

  4. 你可以说出export export default || model.exports exports 的区别吗(一)

    一.前言: 用模块写代码,为什么要用模块来写代码:ES6之前,在js中定义的一切,都是共享一个全局作用域的,随着web应用变得复杂,这样做会引起如:命名冲突和安全问题.于是引入了模块. 二.清楚一个概 ...

  5. ES6学习笔记<五> Module的操作——import、export、as

    import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...

  6. require、module、exports dojo中的三个特殊模块标识

    查看dojo源码过程中,发现这三个模块名并不以dojo.dijit.dojox开头,在dojo加载器中属于特殊模块名. require 这是一个上下文智能的加载器. 我们通过dojoConfig配置了 ...

  7. node基础 npm、module、exports、require

    module 模块.包:可以认为是一个代码包,package,提供特定的功能(暴露给外界接口,让外界调用) exports 输出.导出:导出模块中的各种类型的变量,以及各种方法,导出之后,才可以被外界 ...

  8. 【node】------module.exports&&exports之间的区别------【巷子】

    1.再讲module.exports 与exports之间的区别的时候我们先来回顾一下js里面的引用传递 001.引用传递 var arr = [10,20,30]; var newarr = arr ...

  9. ES6 module语法加载 import export

    export:暴露,就是把接口暴露出去 import:引入,跟字面意思一样,引入接口 export {} export function demo(){} export var demo1; 这上面的 ...

  10. Node.js & module.exports & exports

    Node.js & module.exports & exports https://www.cnblogs.com/xgqfrms/p/9493550.html exports &a ...

随机推荐

  1. [Xcode 实际操作]七、文件与数据-(6 )通过通知中心,实现监听和处理程序退出事件的功能

    目录:[Swift]Xcode实际操作 本文将演示通过通知中心,实现监听和处理程序退出事件的功能. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import U ...

  2. SpringMVC重定向传递参数

    在SpringMVC的一个controller中要把参数传到页面,只要配置视图解析器,把参数添加到Model中,在页面用el表达式就可以取到.但是,这样使用的是forward方式,浏览器的地址栏是不变 ...

  3. K-th Number

    区间第K大 题目链接 #include <stdio.h> #include <algorithm> #include <vector> #include < ...

  4. 解决import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder;报错的问题

    在项目中用到这两个Jar包,但是程序报错. Access restriction: The type BASE64Decoder is not accessible due to restrictio ...

  5. 用jQuery开发插件详解

    jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级 ...

  6. Webservice入门简单实例

    转载大神 项目目的: 程序A调用程序B中的方法C.. https://blog.csdn.net/lovebosom/article/details/51558139                  ...

  7. java-可逆加密算法

    转载大神的 https://blog.csdn.net/want_water_fish/article/details/73498692 加密算法: 1.单项加密 2.对称加密 3.非对称加密  简单 ...

  8. Java中List,Set和Map详解及其区别和使用场景(转)

    https://www.cnblogs.com/EasonJim/p/7967138.html

  9. 熔断 降级(polly)

    熔断 降级(polly) https://www.cnblogs.com/szlblog/p/9300845.html1.熔断降级的概念: 熔断:我这里有一根长度一米的钢铁,钢铁的熔点1000度(假设 ...

  10. mysql通过sql语句判断某个字段在一张表中是否存在

    应用场景: 我有一张表,表里面都是用户用来激活游戏的激活码,当用户在前端页面输入激活码时,要查询数据表中是否有这条激活码,如果有就返回"1",没有则返回"0". ...