在JavaScript中,export的意思是“导出”;JavaScript中模块内的所有声明都是本地的,利用export关键字可以导出模块,该命令可以出现在模块的任何位置,导出模块后其他JS文件就可以通过import命令加载该模块。
本教程操作环境:windows10系统、javascript1.8.5版、Dell G3电脑。
javascript中export的意思是什么
默认情况下,JavaScript中在模块内的所有声明都是本地的,外部无法访问。如果需要公开模块中部分声明的内容,并让其它模块加以使用,这个时候就需要导出功能,最简单的方式是添加export关键字导出模块。
可以导出的内容包括类、函数以及var、let和const修饰的变量。export命令可以出现在模块的任何位置,只要处于模块顶层就可以。如果处于块级作用域内,就会报错,import命令也是如此。
使用export命令定义了模块的对外接口以后,其他 JS 文件就可以通过import命令加载这个模块。
import命令具有提升效果,会提升到整个模块的头部,首先执行。由于import是静态执行,所以不能使用表达式和变量,这些只有在运行时才能得到结果的语法结构。
一、default导入导出 default import/export
每个模块仅有一个default的导出,导出内容可以是一个function、class,object等。因为这种方式被当做主要的导出内容,导入方式最为简单。
// there is no semi-colon here export default function() {} export default class {} //示例 class A extends Component{ ... } export default A; //对应的import示例。 import A from './requireTest' //default export, 输入 lodash 模块 import _ from 'lodash'; //一条import语句中,同时输入默认方法和其他变量 import _, { each } from 'lodash'; //上述代码对应的export语句 export default function (obj) { // ··· } export function each(obj, iterator, context) { // ··· } export { each as forEach };
注意:一个模块仅仅只允许导出一个default对象,实际导出的是一个default命名的变量进行重命名,等价语句如下。所以import后可以是任意变量名称,且不需要{}。
import any from './requireTest' import {default as any } from './requireTest'
二、named 导入导出
需要特别注意的是,export命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系。另外,export语句输出的接口,与其对应的值是动态绑定关系,即通过该接口,可以取到模块内部实时的值。
import命令接受一对大括号,里面指定要从其他模块导入的变量名。大括号里面的变量名,必须与被导入模块(profile.js)对外接口的名称相同。如果想为输入的变量重新取一个名字,import命令要使用as关键字,将输入的变量重命名。
import后面的from指定模块文件的位置,可以是相对路径,也可以是绝对路径,.js路径可以省略。如果只是模块名,不带有路径,那么必须有配置文件,告诉 JavaScript 引擎该模块的位置。
// profile.js //第一种export export var firstName = 'Michael'; export function f() {}; //第二种export,优先使用这种写法 var firstName = 'Michael'; export {firstName}; function f() {} export {f}; //main.js import { firstName, f } from './profile'; import { firstName as surname } from './profile';
三、重命名导入导出
export { myFunction }; // exports a function declared earlier export const foo = Math.sqrt(2); // exports a constant
import不同模块的导出内容时,必须保持命名的唯一性。此时可以用重命名来解决,包括以下两类。
//导出的时候重命名 function v1() { ... } function v2() { ... } export { v1 as streamV1, v2 as streamV2, v2 as streamLatestVersion //可以用两个不同的名称导出相同的值 }; //导入的时候重命名 // 这两个模块都会导出以`flip`命名的东西。同时导入两者,需要将其中一个的名称改掉。 import {flip as flipOmelet} from "eggs.js"; import {flip as flipHouse} from "real-estate.js";
四、export和import的复合写法
如果在一个模块之中,先输入后输出同一个模块,import语句可以与export语句写在一起。
export { foo, bar } from 'my_module'; // 等同于 import { foo, bar } from 'my_module'; export { foo, bar };
【相关推荐:javascript学习教程】
以上是javascript中export的意思是什么的详细内容。更多信息请关注PHP中文网其他相关文章!