四、模块导入的写法
默认导入
在JavaScript中,可以使用import
语句的default
关键字来导入一个模块的默认导出。
例如:
// 默认导出 export default function myFunction() { // ... } // 导入默认导出 import myFunction from './my-module.js';
在导入时,如果对应的模块没有默认导出,或者使用了错误的名称,那么在运行时会出现ReferenceError
错误。
注意,一个模块只能有一个默认导出。如果一个模块中有多个默认导出,那么在导入时需要使用import
语句的as
关键字来指定要导入的默认导出。
例如:
// 默认导出 export default function myFunction() { // ... } export default class MyClass { // ... } // 导入默认导出 import myFunction from './my-module.js'; // 或者 import MyClass from './my-module.js';
在导入时,如果对应的模块没有默认导出,或者使用了错误的名称,那么在运行时会出现ReferenceError
错误。
命名导入
在JavaScript中,可以使用import
语句来命名导入模块中的成员。
例如:
// 导出成员 export function myFunction() { // ... } // 命名导入 import {myFunction} from './my-module.js';
或者:
// 导出成员 export function myFunction() { // ... } // 命名导入并重命名 import {myFunction as fn} from './my-module.js';
在导入时,如果对应的模块没有导出该成员,或者使用了错误的名称,那么在运行时会出现ReferenceError
错误。
注意,命名导入不会影响原始模块中的成员,它们在原始模块中仍然存在。
只加载模块,不导入任何东西
在JavaScript中,如果你只是想加载一个模块而不导入任何东西,你可以使用import
语句的import
关键字。这样做的好处是,你可以确保模块中的代码被执行,但是你不会在当前作用域中导入任何变量或函数。
例如:
// my-module.js export function myFunction() { console.log('Hello, world!'); } // main.js import './my-module.js'; // 执行 main.js 后,浏览器控制台会输出 'Hello, world!'
在这个例子中,我们加载了my-module.js
模块,但是并没有导入其中的任何函数或变量。因此,myFunction()
在main.js
中是不可用的。
这种方法可以用于执行模块中的代码,但不会在当前作用域中导入任何变量或函数。
将默认导入与命名导入混合使用
在JavaScript中,你可以将默认导入与命名导入混合使用。
例如:
// my-module.js export function myFunction() { console.log('Hello, world!'); } export default class MyClass { constructor() { console.log('MyClass constructor'); } } // main.js import myFunction, { MyClass } from './my-module.js'; myFunction(); // 输出 'Hello, world!' new MyClass(); // 输出 'MyClass constructor'
在这个例子中,我们首先使用import myFunction, { MyClass } from './my-module.js';将myFunction作为命名导入导入,同时将MyClass作为默认导入导入。然后我们可以直接使用myFunction()和new MyClass()。
你也可以将默认导入与命名导入的顺序交换,这不会影响导入的结果。
// main.js import { MyClass }, myFunction from './my-module.js'; myFunction(); // 输出 'Hello, world!' new MyClass(); // 输出 'MyClass constructor'
在这个例子中,我们首先使用import { MyClass }, myFunction from './my-module.js';将MyClass作为命名导入导入,同时将myFunction作为默认导入导入,然后同样可以直接使用myFunction()和new MyClass()。