default导入导出default import/export的方法是什么?

2022-01-12 16:57:52

来源:php中文网

在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后可以是任意变量名称,且不需要{}。

1

2

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';

三、重命名导入导出

1

2

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语句写在一起。

关键词: default import export 导入导出 方法