1、module.exports 

module变量代表当前模块。这个变量是一个对象,module对象会创建一个叫exports的属性,这个属性的默认值是一个空的对象:

module.exports = {};

例子:app.js

module.exports.Name="我是电脑";
module.exports.Say=function(){
console.log("我可以干任何事情");
} //上边这段代码就相当于一个对象 {
"Name":" 我是电脑",
"Say" :function(){
  console.log("我可以干任何事情");
   }
}

require方法用于加载模块。

var req=require("./app.js");

req.Name      //这个值是 "我是电脑"
req.Say() //这个是直接调用Say方法,打印出来 "我可以干任何事情"

2、exports 与 module.exports的关系

Node为每个模块提供一个exports变量,指向module.exports。可以通俗的理解为:

var exports = module.exports;

//两个是相等的关系,但又不是绝对相当的关系
例如:
1.module.exports可以直接导出一个匿名函数或者一个值
module.exports=function(){
var a="Hello World"
return a;
}
但是exports是不可以的,因为这样等于切断了exports与module.exports的联系。
exports=function(){ //这样写法是错误的
var a="Hello World" //这样写法是错误的
return a; //这样写法是错误的
} //这样写法是错误的

3、export和export default的区别

export是es6引出的语法,用于导出模块中的变量,对象,函数,类。对应的导入关键字是import。

二者的区别有以下几点:

  • export default在一个模块中只能有一个,当然也可以没有。export在一个模块中可以有多个。
  • export default的对象、变量、函数、类,可以没有名字。export的必须有名字。
  • export default对应的import和export有所区别
1.export写法
//./aap.js
var name="我是电脑";
var say=function(){
console.log("我可以干很多事");
}
export {name,say}; //也可以直接一个一个的export但是必须得有名字
export const a=1;
export function data(){
  return data;
} //其他页面引入时必须这样
import {name,say} from "./app.js" 2.export default
//app.js
//可以没有函数名字
export default function(){
  return data;
}
//这里export不能这样导出
export default const a=12;
//应该这样导出
const a=12;
export default a
 
 
//其他页面引入时必须这样
import data from "./app.js"
 
总结:可以看到用export defaultimport语句不需要使用大括号;用export,对应的import语句需要使用大括号,一个模块只能有一个默认输出,所以export default只能使用一次。

Node.js模块导出module.exports 和 exports,Es6模块导出export 和export default的区别的更多相关文章

  1. Node.js学习笔记(2):基本模块

    Node.js学习笔记(2):基本模块 模块 引入模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在No ...

  2. Node.js 蚕食计划(二)—— 使用 http 模块搭建 Web 服务器

    Node.js 开发的目的就是为了用 JavaScript 编写 Web 服务器程序 这次就来介绍用 http 模块搭建服务器 一.项目构建 每个 Node 程序都可以看作一个模块,而每个模块都应该有 ...

  3. Node.js Cannot find Module xxx 的问题

    不知道为什么第一天Node.js干的挺顺利的,回公司后就干的一点都不顺利,主要原因还是公司的网络的问题,使用的受限制的代理,不能直接使用NPM从远程下载模块,唉. node.js的模块加载顺序首先是从 ...

  4. 用node.js写一个简单爬虫,并将数据导出为 excel 文件

    引子 最近折腾node,最开始像无头苍蝇一样到处找资料,然而多数没什么卵用,都在瞎比比.在一阵瞎搞后,我来分享一下初步学习node的三个过程: 1 撸一遍NODE入门,对其有个基本的了解: 2 撸一遍 ...

  5. node.js平台下Express的session与cookie模块包的配置

    首先下载两个模块包 session模块包:用于保持登录状态或保持会话状态等. npm install express-session --save-dev cookie模块包:用于解析cookie. ...

  6. Node.js学习笔记(5)——关于child_process模块

    child_process是node一个比较重要的模块,通过它可以实现创建多线程,来利用多核CPU. 这个模块提供了四个创建子进程的函数. spawn.exec.execFile.fork. spaw ...

  7. (转)Node.js module.exports与exports

    本文转自Node.js module.exports与exports 作者: chemdemo 折腾Node.js有些日子了,下面将陆陆续续记录下使用Node.js的一些细节. 熟悉Node.js的童 ...

  8. Node.js模块导入导出

    这篇文章本来是想模块导入导出和事件循环一起写的,但是感觉一起写的话会太长了,所以就分开两篇文章写吧.下一篇会重点介绍一下js中的事件循环,js代码到底是以何种顺序去执行的呢?我相信你看懂了事件循环再去 ...

  9. Node.js学习笔记(二):模块

    模块是 Node.js 应用程序的基本组成部分,文件和模块是一一对应的.一个 Node.js 文件就是一个模块,这个文件可能是 JavaScript 代码.JSON 或者编译过的 C/C++ 扩展. ...

  10. Node.js 模块

    稳定性: 5 - 锁定 Node 有简单的模块加载系统.在 Node 里,文件和模块是一一对应的.下面例子里,foo.js 加载同一个文件夹里的 circle.js 模块. foo.js 内容: va ...

随机推荐

  1. matlab文件读写处理实例(二)——textread批量读取文件

    问题:对文件夹下所有文件进行批量读取,跳过文件头部分,读取每个文件数据部分的7,8,9列,保存到变量并且输出到文件. 数据: 文件夹11m\

  2. 缓存之ehcache

    1.EhCache缓存框架简介 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. 我们使用EhCache缓存框架主要是为 ...

  3. 关于css选择器的一些细节

    1.如何区分一个html标签的不同样式 使用标签名.类名的方式解决 如果希望特别强调其中的某一个或几个元素,处理的方案有三个: 1.id选择器 2.class选择器 3.层级选择器 看下面的代码: & ...

  4. ImageMagick命令行工具

    [ convert | identify | mogrify | composite | montage | compare | display | animate | import |conjure ...

  5. 第一个 HTML5Plus 移动应用

    什么是 HTML5Plus 移动应用 HTML5 Plus移动App,简称5+App,是一种基于HTML.JS.CSS编写的运行于手机端的App,这种App可以通过扩展的JS API任意调用手机的原生 ...

  6. 【OCR技术系列之三】大批量生成文字训练集

    放假了,终于可以继续可以静下心写一写OCR方面的东西.上次谈到文字的切割,今天打算总结一下我们怎么得到用于训练的文字数据集.如果是想训练一个手写体识别的模型,用一些前人收集好的手写文字集就好了,比如中 ...

  7. 【AIX】AIX内存机制

    [AIX]AIX内存机制 1  虚拟内存 虚拟内存是物理内存和交换空间(Paging Space)组合形成的虚拟内存空间, 通过虚拟的地址空间映射到物理内存或者 Paging Space. 在 AIX ...

  8. 使用react-router实现单页面应用路由

    这是Webpack+React系列配置过程记录的第二篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...

  9. 六、BeautifulSoup4------自动登录网站(手动版)

    每天一个小实例:(按照教学视频上自动登录的网站,很容易就成功了.自已练习登录别的网站,问题不断) 这个自己分析登录boss直聘.我用了一下午的时间,而且还是手动输入验证码,自动识别输入验证码的还没成功 ...

  10. java中的foreach用法及总结

    增强for(part1:part2){part3}; part2中是一个数组对象,或者是带有泛性的集合. part1定义了一个局部变量,这个局部变量的类型与part2中的对象元素的类型是一致的. pa ...