记录一下import和export的几种写法。

1.ES6的导入和导出

0.入口文件为index.js,引用add-content.js的内容

1.  export default 方式,直接导出变量

add-content.js的内容如下

 function write() {
document.write('Hello World')
} var app = {}
app.write = write export default app;

index.js引用要这样写

 import app from './add-content'
app.write()

2.  export  { } 方式,适合同时导出多个变量

add-content.js的内容如下

 function write() {
document.write('Hello World')
} var app = {}
app.write = write export {
app
}

index.js引用要加上引号,如下

 import { app } from './add-content'
app.write();

3. export与变量声明的简写方式

add-content.js的内容如下

 function write() {
document.write('Hello World')
} export var app = {
write: write
}

index.js引用要加上引号,如下

 import { app } from './add-content'
app.write();

2.nodejs的导入和导出

0.入口文件为index.js,引用mock.js的内容

1.mock.js中使用module.exports方式导出

 module.exports = {
name: 'mock.js',
message: 'hello world'
}

index.js引用要这样写

 let mock = require('./mock')
console.info(mock.name)

2.mock.js中直接使用exports导出

 exports.name = 'mock'
exports.message = 'hello world'

index.js引用要这样写

 let mock = require('./mock')
console.info(mock.name)
console.info(mock.message)

其原理是将exports指向了module.exports,而module.exports在初始化时是一个空对象。

相当于在导出的文件里面添加了如下代码:

 var module = {
exports: {}
}
var exports = module.exports

3.导出时容易出现的两个错误

3.1 给exports赋值,如下

 exports = {
name: 'mock'
}

由第2部分知:exports是指向了module.exports,如果重新给exports赋值,它会指向新对象,而module.exports还是空对象。

3.2 module.exports和exports混用

 exports.name = 'mock'
exports.message = 'hello world' module.exports = {
getName () {
return 'get name function'
}
}

由于对module.exports进行了赋值,所以exports方式添加的属性就会丢失,即访问不到name和message属性。

个人建议使用module.exports = { ... } 导出会比较清晰。

备忘~

export的几种用法的更多相关文章

  1. [Vuex系列] - 细说state的几种用法

    state 存放的是一个对象,存放了全部的应用层级的状态,主要是存放我们日常使用的组件之间传递的变量. 我们今天重点讲解下state的几种用法,至于如何从头开始创建Vuex项目,请看我写的第一个文章. ...

  2. using 的三种用法

    using 有哪三种用法? 1)引入命名空间. 2)给命名空间或者类型起别名. 3)划定作用域.自动释放资源,使用该方法的类型必须实现了 System.IDisposable接口,当对象脱离作用域之后 ...

  3. c++ operator操作符的两种用法:重载和隐式类型转换,string转其他基本数据类型的简洁实现string_cast

    C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换.对于操作符的重载,许多人都不陌生,但是估计不少人都不太熟悉operator的第二种用法,即自定义对象类型的隐式 ...

  4. Wix 安装部署教程(十五) --CustomAction的七种用法

    在WIX中,CustomAction用来在安装过程中执行自定义行为.比如注册.修改文件.触发其他可执行文件等.这一节主要是介绍一下CustomAction的7种用法. 在此之前要了解InstallEx ...

  5. Android Intent的几种用法全面总结

    Android Intent的几种用法全面总结 Intent, 用法 Intent应该算是Android中特有的东西.你可以在Intent中指定程序要执行的动作(比如:view,edit,dial), ...

  6. Js闭包常见三种用法

        Js闭包特性源于内部函数可以将外部函数的活动对象保存在自己的作用域链上,所以使内部函数的可以将外部函数的活动对象占为己有,可以在外部函数销毁时依然存有外部函数内的活动对象内容,这样做的好处是可 ...

  7. operator 的两种用法

    C++,有时它的确是个耐玩的东东,就比如operator,它有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换).1.操作符 ...

  8. Service的两种用法及其生命周期

    先来一点基础知识: Service 是android的四大组件之一,与Activity同属于一个级别,它是运行在后台进行服务的组件(例如在后台播放的音乐,播放音乐的同时并不影响其他操作).Servic ...

  9. C#中this的 四种 用法

    C#中的this用法,相信大家应该有用过,但你用过几种?以下是个人总结的this几种用法,欢迎大家拍砖,废话少说,直接列出用法及相关代码. this用法1:限定被相似的名称隐藏的成员 /// < ...

随机推荐

  1. Javascript获取JSON对象长度

  2. Python基础系列讲解-自动控制windows桌面

    原链接:https://zhuanlan.zhihu.com/p/73001806 在使用PC时与PC交互的主要途径是看屏幕显示.听声音,点击鼠标和敲键盘等等.在自动化办公的趋势下,繁琐的工作可以让程 ...

  3. mabatis缓存

    一级缓存 public static SqlSession getSqlSession() { String resource = "mybatis-config.xml"; In ...

  4. java之hibernate之crud

    这篇文章主要讲解: 1>.对Hibernate使用的一些简单封装: · 2>.在单元测试中,使用Hibernate的封装的工具进行增删改查的测试 1.目录结构展示 2.代码展示 2.0 配 ...

  5. Ubuntu18.04 GitLab仓库服务器搭建

    首先安装必须的一些服务 sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificates sudo apt ...

  6. Java字节流文件复制

    1.字节流 在 Java 中,文件的复制使用字节输入流和字节输出流实现,java.io 包有 InputStream 和 OutputStream 这两个顶层抽象类规范了读写文件所需的核心 API. ...

  7. 【转载】C#中ToArray方法将List集合转换为对应的数组

    在C#的List集合操作中,可以使用List集合自带的ToArray方法来将List集合转换为对应的Array数组元素.ToArray方法的签名为T[] ToArray(),存在于命名空间System ...

  8. 第三章:JavaScript选择元素

    我们使用jQuery时,很常用的套路是“两步”第一步:选取元素第二步:对选中的元素执行需要的操作这一章我们重点研究第一步,如何使用jQuery选取元素以及对选取的结果进行“各种筛选”以满足我们的需求. ...

  9. 【Python】单例模式

    单例 class MusicPlayer(object): instance = None def __new__(cls, *args, **kwargs): if cls.instance is ...

  10. 【scala】scala安装测试

    下载安装scala:scala-2.13.1.tgz 解压: [hadoop@hadoop01 ~]$ tar -zxvf scala-2.13.1.tgz 查看目录: [hadoop@hadoop0 ...