模块加载方案
模块功能主要由两个命令组成,Module的import命令和export命令,用来在js文件中暴露和接受变量、函数和类。
一、export命令
暴露的可以是变量,函数和类,语法如下:
let name="Alice"; let age=18; let year=2009; let person={ name:"Tony", age:20 }
export {name,age,year};
export{person as student,person as teenager}
-
(1)暴露的对象必须加{},它表示暴露的是一个接口。如果不加的话,它表示暴露的是一个值,这样就会报错。比如下面这段代码,就是错误的。
var name="Alice"; export name;
-
(2)as关键字,可以给暴露的对象换名字,同一个对象可以多次使用as关键字,用不同的名字暴露出去。
(3)export命令必须处于模块的顶层,位置无所谓。
(4)export暴露的对象是动态绑定关系,如果发生变化,外部引用也会变化。
二、import命令
插曲:
Node是JS语言的服务器你运行环境,他对ES6的支持度很高。虽然我的电脑上也安装了Node.js环境,但是这个倒霉孩子,电脑竟然不支持ES6的Module模块,虽然是为啥他不支持我也不明白。
在电脑不支持Module的情况下,想要引用暴露的文件怎么办呢?
暴露:
暴露的可以有变量、对象和方法。
let year=2009; let person={ name:"Tony", age:20 } let test=function(){ console.log("It is a function!") } module.exports={year,person,test};
引入:
引入的info是一整个对象。这种引入是CommonJS模块里的功能。
var info = require("./main.js"); console.log('引入文件', info); info.test();
但是上面的这两种方法都不能使用as关键字。