commonjs模块化与ES模块化

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规范对比

相关推荐
gqkmiss7 分钟前
Chrome 浏览器插件获取网页 iframe 中的 window 对象
前端·chrome·iframe·postmessage·chrome 插件
m0_748247552 小时前
Web 应用项目开发全流程解析与实战经验分享
开发语言·前端·php
m0_748255023 小时前
前端常用算法集合
前端·算法
真的很上进3 小时前
如何借助 Babel+TS+ESLint 构建现代 JS 工程环境?
java·前端·javascript·css·react.js·vue·html
web130933203983 小时前
vue elementUI form组件动态添加el-form-item并且动态添加rules必填项校验方法
前端·vue.js·elementui
NiNg_1_2343 小时前
Echarts连接数据库,实时绘制图表详解
前端·数据库·echarts
如若1234 小时前
对文件内的文件名生成目录,方便查阅
java·前端·python
滚雪球~5 小时前
npm error code ETIMEDOUT
前端·npm·node.js
沙漏无语5 小时前
npm : 无法加载文件 D:\Nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本
前端·npm·node.js
supermapsupport5 小时前
iClient3D for Cesium在Vue中快速实现场景卷帘
前端·vue.js·3d·cesium·supermap