彻底弄懂Javascript模块导入导出
笔者开始学习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
小结
下面我们简单总结一下
export
与export 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
,他们的用法上面的例子已经很详细的列出了,忘记的时候,可以当作参考看看
最重要的还是要明白为什么要这么写,实在不明白记住就行了。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Solon Java Framework 1.11.6 发布
一个更现代感的 Java 应用开发框架:更快、更小、更自由。没有 Spring,没有 Servlet,没有 JavaEE;独立的轻量生态。主框架仅 0.1 MB。 @Controller public class App { public static void main(String[] args) { Solon.start(App.class, args); } @Get @Socket @Mapping("/hello") public String hello(@Param(defaultValue = "java") String name) { return String.format("Hello %s!", name); } } 入门探索视频(用户录制): 相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 ~ 10 倍。 (更快) qps 高 2~ 3 倍。 (更高) 运行时内存节省 1/3 ~ 1/2。 (更少) 打包可以缩小到 1/2 ~ 1/10;比如,300Mb 的变成了 23Mb。 (更小) ...
- 下一篇
国产 c++ web framework “paozhu”1.0.5 正式版发布
经过大半个月测试修改,paozhu c++ web framework 正式版发布, 1.0.5 release 官方第一次发布正式版,可以用于生产环境。 易用性 超越国外各种c++ web framework,简单易用,开箱即用web生态支持,新手可以快速入门。 Paozhu(炮竹🧨)是一个全面、快速的C++ web framework 开发框架,集成mysql ORM,开发速度跟脚本语言一样,框架集成了webserver,自己原生解析http1.1、http2协议,GET、POST全部解析出来,POST几种方式都做了区分,框架自带一个OBJ微型对象,可以存放char int string float等,框架自动解析URL、POST参数到微型对象里面,使用urlpath映射到函数挂载点,使用协程、线程池、数据库链接池。 QQ群:668296235 与社区开发者探讨C++ WEB开发的乐趣 1.特性🔥🔥🔥🔥🔥 ✅ 1. 自带json 编解码不用第三方库,标准json支持 ✅ 2. 支持多域名网站 ✅ 3. 支持多域名ssl 服务端 ✅ 4. 支持http1.1、http2...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果