ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
ES6 import的优先级很高,所有的依赖模块都会在模块代码执行之前加载 ### 语法 ~~~ import defaultExport from "module-name"; import * as name from "module-name"; import { export } from "module-name"; import { export as alias } from "module-name"; import { export1 , export2 } from "module-name"; import { foo , bar } from "module-name/path/to/specific/un-exported/file"; import { export1 , export2 as alias2 , [...] } from "module-name"; import defaultExport, { export [ , [...] ] } from "module-name"; import defaultExport, * as name from "module-name"; import "module-name"; var promise = import("module-name"); ~~~ ### **1)导入整个模块的内容** 这将`myModule`插入当前作用域,其中包含来自位于`/modules/my-module.js`文件中导出的所有模块。 ~~~js import * as myModule from '/modules/my-module.js'; ~~~ 在这里,访问导出意味着使用模块名称(在这种情况下为“myModule”)作为命名空间。例如,如果上面导入的模块包含一个`doAllTheAmazingThings()`,你可以这样调用: ~~~js myModule.doAllTheAmazingThings(); ~~~ ### ** 2)导入单个导出** 给定一个名为`myExport`的对象或值,它已经从模块`my-module`导出(因为整个模块被导出)或显式地导出(使用[`export`](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/export "有两种不同的导出方式,每种方式对应于上述的一种语法:")语句),将`myExport`插入当前作用域。 ~~~js import {myExport} from '/modules/my-module.js'; ~~~ ### 3)导入多个导出 这将`foo`和`bar`插入当前作用域。 ~~~js import {foo, bar} from '/modules/my-module.js'; ~~~ ### 4)导入带有别名的导出 导入时可以重命名导出。例如,将`shortName`插入当前作用域。 ~~~js import {reallyReallyLongModuleExportName as shortName} from '/modules/my-module.js'; ~~~ ### 5)导入时重命名多个导出 使用别名导入模块的多个导出。 ~~~js import { reallyReallyLongModuleMemberName as shortName, anotherLongModuleName as short } from '/modules/my-module.js'; ~~~ ### 6)仅为副作用而导入一个模块 模块仅为副作用(中性词,无贬义含义)而导入,而不导入模块中的任何内容。 这将运行模块中的全局代码, 但实际上不导入任何值。 ~~~ import '/modules/my-module.js'; ~~~ ### 7)导入默认值 在`default`[`export`](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/export "有两种不同的导出方式,每种方式对应于上述的一种语法:")(无论是对象,函数,类等)有效时可用。然后可以使用`import`语句来导入这样的默认值。 ~~~js import myDefault from '/modules/my-module.js'; ~~~ 也可以同时将`default`语法与上述用法(命名空间导入或命名导入)一起使用。在这种情况下,`default`导入必须首先声明。 例如: ~~~js import myDefault, * as myModule from '/modules/my-module.js'; // myModule used as a namespace ~~~ 或者 ~~~js import myDefault, {foo, bar} from '/modules/my-module.js'; // specific, named imports ~~~ ~~~js //声明 function getJSON(url, callback) { let xhr = new XMLHttpRequest(); xhr.onload = function () { callback(this.responseText) }; xhr.open('GET', url, true); xhr.send(); } export function getUsefulContents(url, callback) { getJSON(url, data => callback(JSON.parse(data))); } //导入 import { getUsefulContents } from '/modules/file.js'; getUsefulContents('http://www.example.com', data => { doSomethingUseful(data); }); ~~~ 学习链接 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/import