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. Linux服务器删除乱码文件和文件夹的方法

    Linux服务器删除乱码文件和文件夹的方法 首页进入乱码文件所在文件夹由于php大势所趋,所以接触Linux服务器的机会越来越多.不同于Windows服务器,Linux服务器只支持数字.英文等字符,对 ...

  2. 让浏览器全面兼容WebP图片格式

    WebP格式 WebP是Google推出的一种图片格式,它基于VP8编码,可对图像大幅压缩.与JPEG相同,WebP也是一种有损压缩,但在画质相同的情况下,WebP格式比JPEG图像小40%. Wik ...

  3. iOS-获取通讯录联系人信息

    头文件 #import <AddressBook/AddressBook.h> #import <AddressBookUI/AddressBookUI.h> 授权 关于通讯录 ...

  4. 洛谷 [P1024]一元三次方程求解

    一道水题然而坑点很多. #include <iostream> #include <cstdio> #include <algorithm> #include &l ...

  5. BZOJ 4698: Sdoi2008 Sandy的卡片 [后缀自动机]

    4698: Sdoi2008 Sandy的卡片 题意:差分后就是多个串LCS SAM+map大法好 模板打错 智力-2 #include <iostream> #include <c ...

  6. BZOJ 4216: Pig [分块]

    传送门 询问区间和...内存3M 分块前缀和... 我连swap都是这么l=l^r , r=l^r , l=l^r写的.... #include <cstdio> typedef long ...

  7. Oracle的order by的中文排序问题

    Oracle 中查询结果按照某个中文字段或者英文字母(包括 符号)排序,并不会得到我们预期的结果,因为对于中文与英文字母及符号,Oracle实际是按照其对应的ASCII码值排序的! 可以看到按照中文村 ...

  8. 【转】JavaScript的三种消息框alert,confirm,prompt

    1. alert是弹出警告框,在文本里面加入\n就可以换行.2. confirm弹出确认框,会返回布尔值,通过这个值可以判断点击时确认还是取消.true表示点击了确认,false表示点击了取消.3. ...

  9. OPP面向对象的介绍及使用

    概述 面向过程与面向对象面向过程:专注于如何去解决一个问题的过程,编程特点是用一个个函数去实现过程操作,没有类与对象的概念面向对象:专注于有哪一个对象实体去解决这个问题,编程特点是:出现了一个个的类, ...

  10. Bootstrap+Vue.js 练习入门一

    一. 效果如下图所示,输入用户名和年龄,点击添加,数据会自动添加到下面的用户信息表内.当没有数据时,用户信息表显示:暂无数据……,当有数据时,显示 删除全部 按钮,这里为了方便快捷,我没有做删除按钮的 ...