JS所有代码共享一个全局作用域,而模块则是自动运行在严格模式下的代码,其创建的代码不会添加到全局作用域中,仅存在模块的顶级作用域中,使用的话必须导出部分的代码供访问,也可以从其他的模块引入
模块标识符
以/开始表示从根目录开始
以./开始从当前目录
以../开始表示从父目录开始
其他URL格式
所有的模块引进必须用以上的方法,尤其不能直接引入,如:import 'module.js';
1,export关键字导出,放在任何变量,函数或者类声明的前面
如果不实用default,匿名的函数是无法导出的
//module A
export var a = 34;
export function fn(){};
export const b = 4;
export class .....
function inside(){} //这个方法是私有的外部无法访问
function outside(){} //也可以先定义一个变量,后面在导出
export outside;
default
//module.js
export default function(){} //要输出一个匿名函数的时候,使用default关键字
import name from './module.js'; //注意此时名称没有大括号,因为只有一个变量
//此时可以直接把name作为匿名函数的名称直接使用,可以不需要知道模块的方法名称,直接自己命名调用
//default只能使用一次,而且如果不是匿名函数,默认是匿名函数
//module.js
var fn = function(){};
export defalut fn; //即使是输出函数名仍是匿名的,外部不可访问
import fn from './module.js';
//module.js
var fn = function(){};
export fn; //没有default关键字,外面可以访问
import { fn } from './module.js';
//如果有default和其他的输出的话用逗号隔开
import name ,{ varable} from './module.js';
2,import from 引入,引入的模块变量类似绑定,会自动提升到最顶部
//导入单个绑定
import { vailble } from './moudule.js';
//导入多个绑定
import { vara varb ..} from './module.js';
//导入整个模块,把所有导出的变量作为对象的属性使用,也叫做命名空间导入
import * as example from './moudule.js';
//同一个模块JS只执行一次,并保存在内存中
import { a } from './moudule.js';
import {b } from './moudule.js';
import { c } from './moudule.js';
//以上代码只导出了第一个变量
ES6模块的特性
请输入代码
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。