前端模块化
一.为什么要有模块化?
解决全局变量命名冲突的问题,另外这种代码的编写顺序对js文件的依赖顺序几乎是强制性的。
我们可以使用匿名函数来解决命名冲突的问题,但同时会造成代码的不可复用性(在另个文件中不容易使用),因为flag是个局部变量。
我们可以使用将需要暴露到外面的变量,使用一个模块作为出口。
在匿名函数内部,定义一个对象,给对象添加各种需要暴露到外面的属性和方法,最后将这个对象返回,并且在外面使用一个ModuleA接受。
这就是模块化最基础的封装,事实上模块的封装还有很多高级的话题。
二.常见的模块化规范:
CommonJS AMD CMD ES6中的Module
模块化的核心:导出和导入
1.CommonJS
导出:exports
导入:require
2. ES模块化
导出:export
导入:import
!导入时除了default都要用{}接受