笔者开始学习Javascript的时候,对模块不太懂,不知道怎么导入模块,导出模块,就胡乱一通试

比如 import xx from 'test.js' 不起作用,就加个括号 import {xx} from 'test.js'

反正总是靠蒙,总有一种写法是对的,其实还是没有理解,还是不懂

尤其是在当初写 www.helloworld.net 网站的时候,一遇到这种问题,就懵逼了,尤其是引入第三方库的时候

这种情况下更多,此篇文章也是为了怕以后忘记,自查用的,也希望能帮助更多的朋友,此篇文章只是针对ES6的模块相关知识

首先要知道export,import 是什么

我们知道,JS 模块导入导出,使用 import , export 这两个关键字

  • export 用于对外输出本模块
  • import 用于导入模块

也就是说使用 export 导出一个模块之后,其它文件就可以使用 import 导入相应的模块了

下面我们具体看看, import 和 export 到底怎么用?怎么导出模块(比如变量,函数,类,对象等)

1 导出单个变量

//a.js 导出一个变量,语法如下
export var site = "www.helloworld.net" //b.js 中使用import 导入上面的变量
import { site } from "/.a.js" //路径根据你的实际情况填写
console.log(site) //输出: www.helloworld.net

2 导出多个变量

上面的例子是导出单个变量,那么如何导出多个变量呢

 //a.js 中定义两个变量,并导出
var siteUrl="www.helloworld.net"
var siteName="helloworld开发者社区" //将上面的变量导出
export { siteUrl ,siteName } // b.js 中使用这两个变量
import { siteUrl , siteName } from "/.a.js" //路径根据你的实际情况填写 console.log(siteUrl) //输出: www.helloworld.net
console.log(siteName) //输出: helloworld开发者社区

3 导出函数

导出函数和导出变量一样,需要添加{ }

//a.js 中定义并导出一个函数
function sum(a, b) {
return a + b
}
//将函数sum导出
export { sum } //b.js 中导入函数并使用
import { sum } from "/.a.js" //路径根据你的实际情况填写
console.log( sum(4,6) ) //输出: 10

4 导出对象

js中一切皆对象,所以对象一定是可以导出的,并且有两种写法

4.1 第一种写法

使用 export default 关键字导出,如下

//a.js 中,定义对象并导出, 注意,使用export default 这两个关键字导出一个对象
export default {
siteUrl:'www.helloworld.net',
siteName:'helloworld开发者社区'
} //b.js 中导入并使用
import obj from './a.js' //路径根据你的实际情况填写
console.log(obj.siteUrl) //输出:www.helloworld.net
console.log(obj.siteName) //输出:helloworld开发者社区

4.2 第二种写法

同样是使用export default 关键字,如下

//a.js 中定义对象,并在最后导出
var obj = {
siteUrl:'www.helloworld.net',
siteName:'helloworld开发者社区'
} export default obj //导出对象obj //b.js 中导入并使用
import obj from './a.js' //路径根据你的实际情况填写
console.log(obj.siteUrl) //输出:www.helloworld.net
console.log(obj.siteName) //输出:helloworld开发者社区

5 导出类

导出类与上面的导出对象类似,同样是用 export default 关键字,同样有两种写法

5.1 第一种写法

//a.js 中定义一个类并直接导出
export default class Person {
//类的属性
site = "www.helloworld.net" //类的方法
show(){
console.log(this.site)
}
} //b.js 中导入并使用
//导入类
import Person from './a.js' //创建类的一个对象person
let person = new Person() //调用类的方法
person.show() //输出:www.helloworld.net

5.2 第二种写法

//a.js 中定义一个类,最后导出
class Person {
//类的属性
site = "www.helloworld.net" //类的方法
show(){
console.log(this.site)
}
} //导出这个类
export default Person //b.js 中导入并使用
//导入类
import Person from './a.js' //创建类的一个对象person
let person = new Person() //调用类的方法
person.show() //输出:www.helloworld.net

小结

下面我们简单总结一下

exportexport default的区别

  • export与export default均可用于导出常量、函数、文件、模块等
  • 可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用
  • export default后面不能跟const或let的关键词
  • export、import可以有多个,export default仅有一个。
  • 通过export方式导出,在导入时要加 { },export default则不需要
  • export具名导出xxx ,export default匿名。区别在于导入的时候,export需要一样的名称才能匹配,后者无论取什么名都可以。
  • 模块化管理中一个文件就是一个模块,export可以导出多个方法和变量,export default只能导出当前模块,一个js文件中只支持出现一个

对于 import ,export , export default ,他们的用法上面的例子已经很详细的列出了,忘记的时候,可以当作参考看看

最重要的还是要明白为什么要这么写,实在不明白记住就行了。

彻底弄懂Javascript模块导入导出的更多相关文章

  1. javascript模块导入导出

    第一次知道javascript有模块的概念通常都是使用<script>标签进行引入,不过只能在html文件上使用 增加的模块就如同php里的include.require可以使用引入的内容 ...

  2. Node.js模块导入导出

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

  3. 彻底弄懂 JavaScript 执行机制

    本文的目的就是要保证你彻底弄懂javascript的执行机制,如果读完本文还不懂,可以揍我. 不论你是javascript新手还是老鸟,不论是面试求职,还是日常开发工作,我们经常会遇到这样的情况:给定 ...

  4. 这一次,彻底弄懂 JavaScript 执行机制

    本文转自https://juejin.im/post/59e85eebf265da430d571f89#heading-4 本文的目的就是要保证你彻底弄懂javascript的执行机制,如果读完本文还 ...

  5. [vue]js模块导入导出export default

    webstrom调试未授权问题解决 分es6语法和node语法 参考 参考 - export default s1 1.仅能出现1次default 2.导入时候可以随便命名 3,导出时候不必写{} - ...

  6. [转] ES6 import/export:模块导入导出方式

    export导出语法 // default exports export default 42; export default {}; export default []; export defaul ...

  7. js模块导入/导出大全

    说明 module.exports与exports是CommonJS的规范 export与export default是es6规范 require 是 AMD规范引入方式 import是es6的一个语 ...

  8. 10分钟弄懂javascript数组

    建议阅读时间 : 10分钟 主要内容:javascript数组的基本概念.属性.方法 新建数组: var arr01 = ["a","b","c&qu ...

  9. es6 中的模块导入与nodejs 中模块的导入的异同!

    我们知道es6 的模块导入导出是通过import 和 export 来实现,而nodejs的模块导入导出是通过require 和module.exports 来实现,那么它们有什么异同吗? 请看如下: ...

  10. 023医疗项目-模块二:药品目录的导入导出-从数据库中查出数据用XSSF导出excel并存放在虚拟目录最后下载(包括调试)

    我们要实现的效果:     进入到这个页面后,输入要查询的条件,查询出药品表的数据,然后按下导出按钮 ,就会在服务器的一个目录下生成一个药品表的excel表格.  点击"导出"之后 ...

随机推荐

  1. WPF开发经验-实现自带触控键盘的TextBox

    一 引入 项目有个新需求,当点击或触碰TextBox时,基于TextBox的相对位置,弹出一个自定义的Keyboard,如下图所示: 二 KeyboardControl 先实现一个自定义的Keyboa ...

  2. 原生JavaScript

    原生JavaScript 为了方便查看. 所有的js和css代码都是嵌入式直接写在html代码中 1.js的引入方式 <!DOCTYPE html> <html lang=" ...

  3. NOI2011阿狸的打字机

    题目链接 昨天晚上yy出了一个做法后,感觉...好难打啊...,于是先回去休息.今天来打时,还是感觉细节好多,于是就打了两个小时.打完过了编译后,居然过了样例,直接交,尼玛居然过了???......还 ...

  4. 2022年整理最详细的java面试题、掌握这一套八股文、面试基础不成问题[吐血整理、纯手撸]

    这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 1.面向对象 2.JDK.JRE.JVM区别和联系 3.==和equals 4.final 5.String .Strin ...

  5. 【单片机入门】(三)应用层软件开发的单片机学习之路-----UART串口通讯和c#交互

    引言 在第一章博客中,我们讲了Arduino对Esp32的一个环境配置,以及了解到了常用的一个总线通讯协议,其中有SPI,IIC,UART等,今天我为大家带来UART串口通讯和c#串口进行通讯的一个案 ...

  6. 四、redis数据类型

    四.redis数据类型 redis可以理解成一个全局的大字典,key就是数据的唯一标识符.根据key对应的值不同,可以划分成5个基本数据类型. 1. string类型: 字符串类型,是 Redis 中 ...

  7. 【单片机入门】(四)应用层软件开发的单片机学习之路-----ESP32开发板PWM控制电机以及中断的使用

    引言 各位大佬,晚上好啊,在上一篇博客中,我们讲了什么是UART串口通讯,以及使用USB转TTL使得单片机可以和c#上位机做一个串口通讯,接下来,为大家带来PWM的概念原理,以及实际案例,使用PWM对 ...

  8. pycharm系列---django

    manage debug Python Console基本配置 DJANGO_SETTINGS_MODULE=mini_project.settings import sys import djang ...

  9. 部署grafana+telegraf+influxdb 及 配置 jmeter后端监听

    搞性能测试,可以搭建Grafana+Telegraf+InfluxDB 监控平台,监控服务器资源使用率.jmeter性能测试结果等. telegraf: 是一个用 Go 编写的代理程序,可收集系统和服 ...

  10. jvm之垃圾收集一之垃圾回收算法

    最近又重新在读深入理解java虚拟机一书,吸取第一次读完到现在已经忘记的差不都的教训,这次的学习之旅想通过博客的形式记录下自己的所学所感,以备后续继续学习备忘所用!这次先记录下垃圾收集相关知识点: 垃 ...