模块化开发的核心?
2023-06-06 · 百度认证:重庆猪八戒网络有限公司官方账号
模块化开发就是有组织地把一个大程序拆分成独立并互相依赖的多个小文件(模块)。
模块内部有许多私有属性,只向外暴露一部分公开的接口(如可以修改私有属性的方法等)
ES6之前,JavaScript语言一直没有模块(module)体系,无法把大文件有组织地划分成小块,并管理之间地依赖。但是模块化的思想一直存在。因为用Javascript写的代码越来越庞大,而网页也越来越像桌面APP。如此庞杂的代码,如果不进行模块化,就可能引发命名冲突,造成不易复用、维护性高。
核心:导出和导入;
1、普通模块化:
同级新建文件index.html,a.js.b.js三个文件;
index.html中引入a.js和b.js。(a.js在前)
<scriptsrc="a.js"></script>
<scriptsrc="b.js"></script>
a.js中导出:
varmodules=(function(){
varname='jack';
varflag=true;
functionnum(a,b){
returna+b;
}
varobj={};
obj.flag=flag;
obj.num=num;
obj.name=name;
returnobj;
})()
b.js中导入:
console.log(modules.name)//jack
console.log(modules.num(1,6))//7
console.log(modules.flag)//true
在b.js可以取出a.js中obj的值。
2、commonJs模块化:export
a.js导出:
varname='jack';
varflag=true;
functionnum(a,b){
returna+b;
}
export.module({
name,
flag,
num
)}
b.js导入:
var{name,flag,num}=require('a.js的路径');//name,flag,num可以直接用
varobj=require('a.js的路径');//obj.name='jack',obj.flag=true,obj.num(1,6)=7
3、es6模块化:export导出,import导入
export的基本使用:
a.js:
导出方式一:
exportvarname="jack";
exportvarheight=1.88;
导出方式二:
varname="jack";
varheight=1.88;
export{name,height};
b.js
import{name,height}from'a.js';
console.log(name);//jack
console.log(height);//1.88
4、导出函数或类:
//直接导出
//exportconstnum1=123;
//导出函数:
exportfunctionadd(num1,num2){
returnnum1+num2
}
//导出类
exportclassPerson{
run(){console.log('this.a')}
}
//导入函数和类
import{add,Person}from'./export.js'
console.log(add(1,2));
constp=newPerson();
p.run()
5、exportdefault:导入者自己命名。(同一个模块中只能有一个default)
//导出
exportdefaultfunction(){
console.log('this.default');
}
//导入
importdefrom'./export.js';
de();
6、普通html中引入export的两个js文件,需要给script的type设为module;
<scripttype="module"src="a.js"></script>
7、全部统一导出:*可以导入模块中所有的export变量,
import*asallfrom'./export.js';//all,为*的别名,方便后续使用。
console.log(all.num1,'aaa')