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

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

a.js:
var x = 'hello'
module.exports.x = x b.js:
var a = require('./a.js')
console.log(a.x) // hello

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

exports = module.exports

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


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

export有三种写法

a.js
// 写法一
export var m = 1; // 写法二
var m = 1;
export {m}; // 写法三
var n = 1;
export {n as m}; b.js
import {m} from 'a.js' // 注意:这里的m是用大括号{}括起来的 下面是错误写法
// 报错
export 2; // 报错
var m = 2;
export m;

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

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

a.js
function fn() { // 输出 }
export default fn
==>export { fn as default} import anyName from 'a.js'; // 注意:这里可以不用大括号{}把anyName括起来,因为default是唯一的
===> import {default as anyName} from 'a.js' 下面是错误写法:
// 错误
export default var a = 1; // 正确: export default a = 1
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. 前端三部曲之Html -- 1(html的基本结构和常见的meta标签的作用)

    一个H5页面的基本结构是什么 我么在编辑器中输入html:5可以得到 <!DOCTYPE html> <!-- 声明文档类型 --> <html lang="e ...

  2. IT兄弟连 JavaWeb教程 使用Servlet实现在页面中显示随机数

    在com.xdl.servlet包下定义RandomServlet类并HttpServlet类,在该类中生成随机数并发送给客户端.RandomServlet类详细代码如下: package com.x ...

  3. 剑指Offer的学习笔记(C#篇)-- 跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 一 . 解题思路. 由题目可知,青蛙一次可以跳一阶或者两阶.假设台阶为 ...

  4. 为产品接入微信支付解决方案(公司&个人)

    微信支付个人及公司的区别 H5支付:主要实现的效果是在非微信内网页中点击支付,拉起微信APP内的微信支付进行付款. APP支付:主要实现的效果是在APP内部点击支付,拉起微信APP内的微信支付进行付款 ...

  5. PJzhang:安全小课堂-安全软件为什么很重要,看这里!

    猫宁!!! 参考链接: http://www.360.cn/webzhuanti/mianyigongju.html https://www.freebuf.com/fevents/204100.ht ...

  6. iOS 技术支持

    iOS 技术支持网址:有问题或建议请留言. 邮箱地址:odeyrossskudder4266848@mail.com iOS program design & system consultat ...

  7. Maven - StackOverflowError

    问题与分析 今天发现服务器上的Jenkins在集成项目时报错,报错原因如下: error compiling: java.lang.StackOverflowError -> [Help 1] ...

  8. spring 3.2.7 applicationContext.xml

    <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.s ...

  9. 分布式Job系统Hangfire

    开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务   项目介绍: Hangfire:是一个开源的job调度系统,支持分布式JOB!! Hangfire.HttpJob 是我针对 ...

  10. js和jq中常见的各种位置距离之offsetLeft和position().left的区别(四)

    offsetLeft:元素的边框的外边缘距离与已定位的父容器(offsetparent)的左边距离(不包括元素的边框和父容器的边框).position().left:使用position().left ...