前端模块化
当有一个团队要合作开发一个前端界面时, 不可避免的,每个人都会创建自己的js文件用于书写各自负责的部分代码,最终这些js代码会在一个页面被引用,那么,在这期间,每个人写的代码都会有各自的变量名,但是,某几个人的变量名可能会写的一样,这个时候,可能会引起作用域污染,导致代码不能正常执行。
综合上面的案例,简而言之就是:前端代码复杂度变高,都写在一个文件里不太好,耦合性太高,难维护,全局变量被污染的可能性大。
那怎么解决这个问题呢
- 匿名函数的解决方案
- 使用模块作为出口
先来说说第一个解决方法
先放出一段代码
1 | (function() { |
这个方法有一个很明显的弊端,那就是另外一个文件中不容易使用flag,因为flag是一个函数内变量,所以,在ES6出现后,就出现了第二种解决方法-模块化
优点:
降低复杂度
降低耦合性
部署方便
我们使用export用来导出模块,用import来引入模块
下面介绍几种导出用法
export {a,b,c}
1
2
3
4
5
6
7
8const a = 123
function b() {
console.log('大家好')
}
//方法一, 导出变量、函数
export {a,b,c}直接导出
1
export var z = 16
直接导出类
1
2
3
4
5
6
7export class Person {
name= '小米'
age = 16
c() {
console.log('大家好,我叫' + name + ',' + '我今年' + age + '岁了')
}
}默认导出模块
1
2
3export default function () {
console.log('我是默认模块')
}
导入的两种语用法
通用语法
1
import {a,b,c...} from "./01-导出模块.js"
在imports接收所有导出的模块
1
2import * as all from "./01-导出模块.js"
console.log(all)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Dong!
评论