记录一下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. pom.xml文件导入了坐标,也没有报错,为什么还是没有相关的jar包的?

    为什么会出现这样的错误呢?仔细想了想,赶紧去本地仓库看看jar也没有导入进来 解决问题的思路,就是把假的jar包文件删除掉,然后在IDEA上的坐标复制删除粘贴,IDEA就会重新导入jar包,这时就成功 ...

  2. Jenkins+Git+Maven+Tomcat详细安装步骤

    jenkins安装 jenkins的war包安装 以下war包的安装是直接使用war包内嵌的页面访问,也可以将war包放到tomcat的webapps下通过tomcat访问,在下面的tomcat步骤有 ...

  3. win10+aconda+pytorch

    1.需要建立项目的运行环境,每个项目应用的框架不用,所以对于每个项目分别用运行环境不会造成管理上的混乱以及应用上的冲突 2.建立项目运行环境: a.用管理员身份运行anconda prompt 创建c ...

  4. Qt5 源代码自动跳转

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/nixiaoxianggong/articl ...

  5. Oracle---视图插参数

    1.创建一个参数Package create or replace package p_view_param is -- Author  : ALANN  -- Created : 2017/12/2 ...

  6. Highcharts曲线展示数据

  7. 9 同时搜索多个index,或多个type

    搜索所有index(慎用): GET  /_search 搜一个索引下,所有type,(不指定type即可) GET /beauties/_search 搜多个索引,则多个索引间,用逗号(,)分隔开 ...

  8. 5_PHP数组_3_数组处理函数及其应用_2_数组统计函数

    以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. 一.数组统计函数 数组统计函数是指统计数组各元素的值,并对这些值进行简单分析. 1. count() 函数 该函数 ...

  9. Java File类与IO流

    File 类 java.io.File 文件和目录路径名的抽象表示形式, 对文件或目录进行操作 构造方法: File(File parent, String child) : 根据 parent 抽象 ...

  10. dom 页面位置和大小,元素的位置和大小,鼠标位置

    dom里面三种跟位置相关的元素 页面位置和大小,元素的位置和大小,鼠标位置 ①window:位置(position):(screenLeft, screenTop) [(screenX, screen ...