模块使程序代码有了结构化的管理,提高代码的可维护性以及可重用性。
必须显式的导出模块,别的地方才能访问该模块
关键字import和export就分别代表导入和导出
export:导出功能
可以导出一个单独的变量或者函数
export const name = 'zjf'
export function sayHello() {
console.log('Hello');
}
或者
function sayHello() {
console.log('Hello');
}
export sayHello;
可以一次导出多个变量和函数
const name = 'zjf'
function sayHello() {
console.log('Hello');
}
export {name, sayHello};
import:导入功能
可以从模块中导入一个或多个绑定,一定要用{}包裹(除非是默认导出default)
import {sayHello} from 'hello.js'
import {name, sayHello} from './hello.js'
//并且你可以使用导入的变量或函数
sayHello();
注意:但是不能给绑定的函数赋新值
sayHello = 'hello'; //报错
如果想导入模块的所有绑定
可以使用 * as name(自定义名,可以作为导入后整个对象的名称)
import * as example from 'hello.js';
默认导出export default和默认导入
//如果是默认导出,该绑定(函数)就会成为模块的默认代表,唯一,当模块只需要导出一个函数或类,或者重要的代码,会经常被使用
function sayHello() {
console.log('hello');
}
export default sayHello;
//默认导出不会影响到别的导出,只是导入的时候需要区别对待
export const name = 'zjf';
导入默认不需要{},可以直接使用,因为默认值已经代表了模块的任何默认函数
export const name = 'zjf'
export default sayHello() {
console.log('Hello');
}
//注意:默认值必须放在非默认值前面
import hello,{name} from './hello.js'
export和import时使用重命名,避免命名冲突
//as后面的作为导出后的名称
export {sayHello as nihao}
//as后面的作为导入后的名称
import {nihao as sayHello} from './hello.js'