export的几种用法
记录一下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的几种用法的更多相关文章
- [Vuex系列] - 细说state的几种用法
state 存放的是一个对象,存放了全部的应用层级的状态,主要是存放我们日常使用的组件之间传递的变量. 我们今天重点讲解下state的几种用法,至于如何从头开始创建Vuex项目,请看我写的第一个文章. ...
- using 的三种用法
using 有哪三种用法? 1)引入命名空间. 2)给命名空间或者类型起别名. 3)划定作用域.自动释放资源,使用该方法的类型必须实现了 System.IDisposable接口,当对象脱离作用域之后 ...
- c++ operator操作符的两种用法:重载和隐式类型转换,string转其他基本数据类型的简洁实现string_cast
C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换.对于操作符的重载,许多人都不陌生,但是估计不少人都不太熟悉operator的第二种用法,即自定义对象类型的隐式 ...
- Wix 安装部署教程(十五) --CustomAction的七种用法
在WIX中,CustomAction用来在安装过程中执行自定义行为.比如注册.修改文件.触发其他可执行文件等.这一节主要是介绍一下CustomAction的7种用法. 在此之前要了解InstallEx ...
- Android Intent的几种用法全面总结
Android Intent的几种用法全面总结 Intent, 用法 Intent应该算是Android中特有的东西.你可以在Intent中指定程序要执行的动作(比如:view,edit,dial), ...
- Js闭包常见三种用法
Js闭包特性源于内部函数可以将外部函数的活动对象保存在自己的作用域链上,所以使内部函数的可以将外部函数的活动对象占为己有,可以在外部函数销毁时依然存有外部函数内的活动对象内容,这样做的好处是可 ...
- operator 的两种用法
C++,有时它的确是个耐玩的东东,就比如operator,它有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换).1.操作符 ...
- Service的两种用法及其生命周期
先来一点基础知识: Service 是android的四大组件之一,与Activity同属于一个级别,它是运行在后台进行服务的组件(例如在后台播放的音乐,播放音乐的同时并不影响其他操作).Servic ...
- C#中this的 四种 用法
C#中的this用法,相信大家应该有用过,但你用过几种?以下是个人总结的this几种用法,欢迎大家拍砖,废话少说,直接列出用法及相关代码. this用法1:限定被相似的名称隐藏的成员 /// < ...
随机推荐
- Spring Cloud Alibaba学习笔记(18) - Spring Cloud Gateway 内置的过滤器工厂
参考:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.1.0.RELEASE/single/spring-clou ...
- Spring Boot异步发送邮件和请求拦截器配置
用户登录流程图: 在spring拦截器中进行鉴权操作: 控制器的拦截: import com.mooc.house.common.model.User; import org.springframew ...
- Maven 的依赖范围
Maven 在编译项目主代码的时候需要使用一套 classpath,在编译和执行测试的时候会使用另外一套 classpath.最后,实际运行 Maven 项目的时候,又会使用一套 classpath. ...
- 15天入门RT-Thread之第一天
今天开始学习jiezhi15天的RT-Thread入门系列课程 感谢RT-Thread提供的免费课程,终于可以系统入门RT-Thread ,感兴趣的同学可以关注RT-Thread官方公众号,获取最新的 ...
- Referer和空Referer
参考CSDN 原文:https://blog.csdn.net/hxl188/article/details/38964743 Referer和空Referer 最近公司有个接口需要针对几个域名加白名 ...
- LeetCode算法01 Valid Parentheses
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
- 小程序canvas绘制倒计时
如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 效果展示: //广告倒计时 advTimeCountDown:function(advTime ...
- TableCache设置过小造成MyISAM频繁损坏 与 把table_cache适当调小mysql能更快地工作
来源: 前些天说了一下如何修复损坏的MyISAM表,可惜只会修复并不能脱离被动的境地,只有查明了故障原因才会一劳永逸. 如果数据库服务非正常关闭(比如说进程被杀,服务器断电等等),并且此时恰好正在更新 ...
- flask-sqlalchemy用法详解
一. 安装 $ pip install flask-sqlalchemy 二. 配置 配置选项列表 : 选项 说明 SQLALCHEMY_DATABASE_URI 用于连接的数据库 URI .例如:s ...
- [daily][qemu][kvm] 使用qemu/kvm模拟numa节点
qemu的配置参数又复杂又难用,man手册写的也是非常对付,很多信息都没有. 而且,竟然遗弃掉旧的配置,换用新的配置.不过这也是好事,说明它在发展,我是欢迎的. 唯一的问题是,要经常跟着它一起更新配置 ...