1.为什么模块化八股文
模块化开发可以带来以下好处:
- 提高代码的复用性:模块化可以将代码划分成可重用的部分,降低代码的冗余和重复,提高代码的复用性。
- 简化代码的维护和调试:当一个软件系统变得越来越复杂时,进行模块化开发可以使得每个模块都相对独立,这样就可以方便地维护和调试每个模块,而不必考虑整个系统的复杂性。
- 提高代码的可读性:模块化可以使得代码更加结构化,清晰明了,从而提高代码的可读性和可维护性。
- 提高开发效率:模块化开发可以使得团队成员在不同模块上并行开发,从而提高开发效率。
- 降低项目的风险:模块化开发可以使得开发人员更加关注模块之间的接口和依赖关系,从而降低项目的风险。
2.nodejs中使用commonjs规范来进行模块化
commonjs将各个js文件都视为单独的模块,引用js文件时利用require来导入
如index.js引用a.js, b.js ,c.js
js
// a.js
function test(){
console.log('text-aaa')
}
console.log('aaaaaa');
module.exports = test
js
// b.js
function test(){
console.log('text-bbb')
}
module.exports = test
js
// c.js
function test() {
console.log("text-ccc");
}
function test2() {
console.log("text-ccc2");
}
module.exports = {
test,
test2
}
// 或者
// exports.test = test;
// exports.test2 = test2;
在index.js中添加
js
// index.js中
var modulea = require('b.js');
var moduleb = require('c.js');
var modulec = require('d.js');
// 执行
modulea();
moduleb();
modulec.test();
modulec.test2()
执行index.js结果 aaaaaa text-aaa text-bbb text-ccc text-ccc2
这样就完成了对不同js文件模块化的引入,实际上,require的时候,实际上就把引入的文件执行了一遍,如最后打印的aaaaaa, 是a.js中的打印
如果b.js需要引用a.js中方法
则需要在b.js中require a.js 总之,哪里需要别的模块,哪里require导入,如果自己的想让其他模块用,就需要exports导出
2.ES模块化规范
如index.js引用moduleA.js, moduleB.js
js
// moduleA.js
const moduleA = 'moduleAContent';
export default moduleA;
js
// moduleB.js
const moduleB1 = 'moduleBContent1';
const moduleB2 = 'moduleBContent2';
export {moduleB1, moduleB2};
js
// index.js
import moduleA from "./module/moduleA.js";
import { moduleB1, moduleB2 } from "./module/moduleB.js";
console.log(moduleA);
console.log(moduleB1);
console.log(moduleB2);
执行index.js结果 moduleAContent moduleBContent1 moduleBContent2
4.commonjs规范与ES规范切换
5.commonjs规范与ES规范对比