0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎么导入导出Javascript模块呢

OSC开源社区 来源:OSCHINA 社区 2022-12-30 09:41 次阅读

笔者开始学习 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,他们的用法上面的例子已经很详细的列出了,忘记的时候,可以当作参考看看 最重要的还是要明白为什么要这么写,实在不明白记住就行了。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • javascript
    +关注

    关注

    0

    文章

    516

    浏览量

    53857

原文标题:彻底弄懂Javascript模块导入导出

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问怎么导入导出AD规则?

    如何导入导出AD规则?
    发表于 03-01 07:35

    INSTRUMENTS导出导入跟踪数据

    INSTRUMENTS调试工具的使用(三十二) —— 高级任务之导出导入跟踪数据(一)
    发表于 08-30 09:18

    Altium规则的导入导出

    在pcb设计的时候,有时候两个板子,甚至多个板类型相同,这时候,对其中一个已设置好的规则进行挪用;能够节省我们不少的时间与精力。下面就来和大家讲解下在AD软件中怎样对规则进行导出导入:一.规则的导出:1.选择菜单Design→
    发表于 09-03 17:15

    STM32CubeIDE如何导入/导出多核项目?

    大家好,我在 CubeIDE 中有一个双核微控制器 (STM32H755) 的项目,结构如下。我正在尝试通过导入/导出功能将其导出导入到另一个 CubeIDE,但我永远无法正确
    发表于 12-13 08:23

    Citect标签导入导出资料

    本章就Citect标签导入导出,其实包含变量标签、局部变量、趋势标签、报警定义等都可以使用该方法来实现快速定义和修改
    发表于 05-10 17:25 0次下载
    Citect标签<b class='flag-5'>导入</b><b class='flag-5'>导出</b>资料

    PCB设计:如何导入导出设计规则

    介绍如何在Altium Designer中导入导出设计规则,借鉴其他设计的优秀合理的规则设置(宝贵的设计经验)为我所用,而不需要自己手动创建。
    发表于 06-05 07:17 9583次阅读
    PCB设计:如何<b class='flag-5'>导入</b><b class='flag-5'>导出</b>设计规则

    XMC MCU 开发基础:DAVE3项目导入导出

    DAVE3 项目导入导出
    的头像 发表于 07-11 02:12 3999次阅读

    PCB技术:Altium怎么安装导入导出插件

    EDA软件中Altium Designer的兼容性是最好的,在其他EDA平台设计的原理图、PCB等文件,有时候会统一到Altium Designer平台,或者将在Altium Designer平台设计的文件导入其他平台,这种时候需要用到导入
    的头像 发表于 10-14 10:36 6478次阅读
    PCB技术:Altium怎么安装<b class='flag-5'>导入</b><b class='flag-5'>导出</b>插件

    MACSV数据库导出导入的方法

    MACSV数据库导出导入的方法(现代电源技术期末考试)-文档为MACSV数据库导出导入的方法详解文档,是一份不错的参考资料,感兴趣的可以下载看看,,,,,,,,,,,,,
    发表于 09-17 15:41 2次下载
    MACSV数据库<b class='flag-5'>导出</b>、<b class='flag-5'>导入</b>的方法

    如何写一个公用工具来进行Excel的导入导出

    日常在做后台系统的时候会很频繁的遇到Excel导入导出的问题,正好这次在做一个后台系统,就想着写一个公用工具来进行Excel的导入导出
    的头像 发表于 10-09 14:19 1479次阅读

    百万数据的导入导出解决方案

    前景 1 传统POI的的版本优缺点比较 2 使用方式哪种看情况 3 百万数据导入导出(正菜) 4 总结 前景 在项目开发中往往需要使用到数据的导入导出
    的头像 发表于 10-11 17:19 1338次阅读

    如何导入导出SCL源文件?

    如何导入导出SCL源文件?
    的头像 发表于 01-16 10:41 2220次阅读

    TIA Portal Openness导入/导出的基本原理

    可以导出某些组态数据,然后在编辑之后再将数据重新导入同一项目或不同项目中。
    的头像 发表于 06-21 11:48 3731次阅读
    TIA Portal Openness<b class='flag-5'>导入</b>/<b class='flag-5'>导出</b>的基本原理

    import模块导入方法

    import 语句的基本语法格式如下: import 模块名 # 导入一个模块 import 模块1,模块2… #
    的头像 发表于 09-11 17:31 1222次阅读

    博图的导入/导出设置介绍

    TIA Portal 设置可导出为一个文件。在导入这些设置时,将同时应用这些设置。通过该功能,可将设置发送给其他用户。与此类似,可统一设定系统设置,为多个工程组态 PC 设置统一的操作环境。
    的头像 发表于 11-27 11:45 6485次阅读
    博图的<b class='flag-5'>导入</b>/<b class='flag-5'>导出</b>设置介绍