JavaScript 语言提供了模块这个概念,在一个文件里,如果设置导出了一些东西,我们就可以认为这个文件就是一个模块。
比如在 greeting.ts 里面,定义了一个这样的函数:
const greet = () => { console.log('您好 ~'); };
如果打算要在其它的文件里使用 greeting.ts 里面提供的 greet() 函数的功能,就可以在这个文件里导出 greet() 函数。可以这样做:
export const greet = () => { console.log('您好 ~'); };
直接在创建 greet() 函数的前面,加上一个 export。
现在假设我要在 app.ts 里,使用 greeting.ts 里面的 greet() 函数,可以像这样导入它:
import { greet } from './greeting'; // 执行导入进来的 greet 函数 greet();
导入别人提供的东西,用的是 import 关键词,先说明一下要导入的东西,然后在 from 的后面再说明一下这个东西的来源是哪里。./greeting 的意思是当前目录下面的 greeting 这个文件,这里可以省略掉文件的扩展名,比如 .ts 中 .js。
注意在说明要导入的东西的时候,把它放在了一组大括号里了:{ greet },如何导入,取决于在模块里是如何导出的。在模块里可以导出多个东西,导入它们的时候使用大括号,可以想成是在模块里把导出的某个东西取出来。
如果在 greeting.ts 里面,是这样设置的导出:
const greet = () => { console.log('您好 ~'); }; export default greet;
上面设置了模块默认导出的东西是 greet,这样在别处导入 greeting 模块的时候,可以这样做:
import greet from './greeting';
在说明要导入的东西的时候,不需要大括号了,因为 greeting 模块提供了默认的导出。所以这里的 greet 就是给 greeting 默认导出的东西起的名字,这个名字我们可以在导入的时候自己设置,比如也可以这样:
import sayHello from './greeting';
这样在 app.ts 文件里,sayHello 这个东西就是 greeting 模块默认导出的东西,也就是 greet() 这个函数。