当前位置: 首页 > news >正文

JavaScript-es6-新版语法-export-import

文章目录

    • 1.export
    • 2.import
    • 3.export default 命令
    • 4.总结

在JavaScript ES6中,export与export default均可用于导出常量、函数、文件、模块等。模块功能主要由两个命令构成:export和import。export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。

1.export

一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。如果你希望外部能够读取模块内部的某个变量,就必须使用export关键字输出该变量。

一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。如果你希望外部能够读取模块内部的某个变量,就必须使用export关键字输出该变量。

//a.js
export var str = "export的内容";
export var year = 2019;
export function message(sth) {return sth;
}

除了上述的写法,还有一种推荐使用的,因为这样就可以在脚本尾部,一眼看清楚输出了哪些变量。

//a.js
var str = "export的内容";
var year = 2019;
function message(sth) {return sth;
}
export {str, year, message}

通常情况下,export输出的变量就是本来的名字,但是可以使用as关键字重命名。

//a.js
var str = "export的内容";
var year = 2019;function message(sth) {return sth;
}export {str as newname1,year as newname2,message as newname3
};

2.import

使用export命令定义了模块的对外接口以后,其他 JS 文件就可以通过import命令加载这个模块。

//b.js
import { str,year, message } from './a';
//也可以分开写两次,导入的时候带花括号,将每个变量函数名写清楚

上面代码的import命令,用于加载a.js文件,引入后便可以在b.js文件中使用a.js文件中的变量、函数或类等。import命令接受一对大括号,里面指定要从其他模块导入的变量名。大括号里面的变量名,必须与被导入模块(a.js)对外接口的名称相同。
如果想为输入的变量重新取一个名字,import命令要使用as关键字,将输入的变量重命名。

//b.js
import {str as newname1,year as newname2,message as newname3
} from './a';

import后面的from指定模块文件的位置,可以是相对路径,也可以是绝对路径,.js后缀可以省略。如果只是模块名,不带有路径,那么必须有配置文件,告诉 JavaScript 引擎该模块的位置。

//import引入一个依赖包,不需要相对路径。
import axios from 'axios';
//import 引入一个自己写的js文件,是需要相对路径的。
import AppService from './appService';

3.export default 命令

export default命令用于指定模块的默认输出。显然,一个模块只能有一个默认输出,因此export default命令只能使用一次。所以,import命令后面才不用加大括号,因为只可能唯一对应export default命令。一个文件内不能有多个export default。

//a.js
const str = "export default的内容";
export default str//在另一个文件中的导入方式:
//b.js 
import StrFile from 'a';
//导入的时候没有花括号
//本质上,a.js文件的export default输出一个叫做default的变量,然后系统允许你引入的时候为它取任意名字。

4.总结

export与export default均可用于导出常量、函数、文件、模块等。
在一个文件或模块中,export、import可以有多个,export default仅有一个。
通过export方式导出,在导入时要加{ },export default则不需要,并可以起任意名称。

http://www.lryc.cn/news/190728.html

相关文章:

  • [elasticsearch]使用postman来查询数据
  • 【小程序练习】文件操作案例
  • flask框架-[实现websocket]:将socketio处理函数部分集中管理,使用类的方式来管理,集中管理socketio处理函数
  • Vue的学习补充
  • vue移动端H5调起手机发送短信(兼容ios和android)
  • spring boot RabbitMq基础教程
  • springboot vue 部署至Rocky(Centos)并自启,本文部署是若依应用
  • Mysql之增删改查
  • 【考研数学】矩阵三大关系的梳理和讨论 | 等价、相似、合同
  • 在 Amazon SageMaker 上使用 ESMFold 语言模型加速蛋白质结构预测
  • node.js知识系列(4)-每天了解一点
  • can not remove .unionfs
  • 微服务 BFF 架构设计
  • 零基础学python之元组
  • 11. SpringBoot项目中参数获取与响应
  • 4+1视图与UML
  • 没用的知识增加了,尝试用文心实现褒义词贬义词快速分类
  • AWS SAP-C02教程3--网络资源
  • 【TensorFlow2 之012】TF2.0 中的 TF 迁移学习
  • mysql面试题46:MySQL中datetime和timestamp的区别
  • 【Spring Boot】RabbitMQ消息队列 — RabbitMQ入门
  • Navicat定时任务
  • 小白必备:简单几步, 使用Cpolar+Emlog在Ubuntu上搭建个人博客网站
  • 封装 Token
  • CloudCompare 二次开发(17)——点云添加均匀分布的随机噪声
  • 研发必会-异步编程利器之CompletableFuture(含源码 中)
  • 上海亚商投顾:沪指高开高走 锂电等新能源赛道大反攻
  • 力扣第235题 二又搜索树的最近公共祖先 c++
  • 时代风口中的Web3.0基建平台,重新定义Web3.0!
  • React学习笔记 001