正值初夏,我们要知道的JavaScript模块化

简介: 正值初夏,我们要知道的JavaScript模块化

我正在参加「初夏创意投稿大赛」详情请看:初夏创意投稿大赛

前言


JavaScript自诞生以来直至今日,发展十分迅猛,前景也被当前了解JavaScript的伙伴们所看好,JavaScritp所涉及的领域现在基本可以说是全覆盖,而其中最为基础也是最为重要的一点就是模块化,它每一个JavaScript必须要学会的,下面我们来看一下模块化的优点

  1. 代码易复用,其他项目使用某一模块直接拿过去即可
  2. 模块之间相对比较独立,多人合作开发项目代码互不影响
  3. 单个模块出现问题,并不会影响到其他模块的运行,也方便对单个模块的代码维护及调优

任何一个东西有优点也必然有缺点,我们需要在开发过程中应该尽量避开这些缺点

  1. 模块之间应避免相互依赖,相互依赖如某一模块出现问题,依赖该模块的模块将失效

常用的模块化使用方法


当前市面上有很多种模块化规范,例如:CommonJS、AMD、CMD、ES6模块化的规范,下面我给大家看一下常用的CommonJS和ES6的用法,在通过JavaScript手动实现一个模块化

CommonJS方式

//导出
module.exports={ a:1};
//导入
const UTIL=require('文件路径名')

ES6模块化方式

//导出
export let hody='正值初夏';
//导入
import ESUTIL from '文件路径名';

模块化原理


上面只讲了最常用的方法,下面我们通过JavaScript实现一下模块化,了解模块化的原理

我们创建俩个文件,分为A.js和B.js,进行引入同一个html文件进行使用

<script src="../A.js"></script>
 <script src="../B.js"></script>

A.js

var name = "前端";
setTimeout(function () {
   console.log(name);
}, 1000)

B.js

var name = "JavaScript";
console.log(name);

这个使用,我们A文件和B文件都使用到了一个name的变量,但是A文件比B文件延迟了1秒打印,此时答案是什么呢,我们所需要的是A.js打印的是前端,B.js打印的是JavaScript,但是他们都打印成了JavaScript,这是因为B文件比A文件晚执行,把同名变量给覆盖掉了,此时我们该如何去解决

在没有模块化的时代,我们通常是采用闭包的方式,创建一个闭包环境是防止模块之间的变量污染,命名冲突,但是这种方式尽量不要有返回值

<script src="../A.js"></script>
 <script src="../B.js"></script>

A.js

(function () {
var name = "前端";
setTimeout(function () {
   console.log(name);
}, 1000);
})();

B.js

(function () {
var name = "JavaScript";
console.log(name);
})();

此时的打印的name,A.js是前端,B.js是JavaScript,俩个文件互相不干扰了

其实也就是利用了,闭包会记录当前函数执行环境的特点实现的,我们还有很多方法可以实现,但是这种方法是我认为最为通俗易懂的,能够让我们快速了解js模块化的原理!

相关文章
|
7月前
|
JavaScript 前端开发 测试技术
如何编写JavaScript模块化代码
如何编写JavaScript模块化代码
39 0
|
3月前
|
JavaScript UED
js之模块化(2)
js之模块化(2)
|
4月前
|
JavaScript 前端开发 编译器
解锁JavaScript模块化编程新纪元:从CommonJS的基石到ES Modules的飞跃,探索代码组织的艺术与科学
【8月更文挑战第27天】随着Web应用复杂度的提升,JavaScript模块化编程变得至关重要,它能有效降低代码耦合度并提高项目可维护性及扩展性。从CommonJS到ES Modules,模块化标准经历了显著的发展。CommonJS最初专为服务器端设计,通过`require()`同步加载模块。而ES Modules作为官方标准,支持异步加载,更适合浏览器环境,并且能够进行静态分析以优化性能。这两种标准各有特色,但ES Modules凭借其更广泛的跨平台兼容性和现代语法逐渐成为主流。这一演进不仅标志着JavaScript模块化的成熟,也反映了整个JavaScript生态系统的不断完善。
53 3
|
3月前
|
JavaScript 前端开发 开发者
js之模块化(1)
js之模块化(1)
|
2月前
|
缓存 JavaScript 前端开发
Node.js模块化的基本概念和分类及使用方法
Node.js模块化的基本概念和分类及使用方法
37 0
|
3月前
|
JavaScript
js之模块化(3)
js之模块化(3)
|
4月前
|
前端开发 JavaScript
前端必会的JavaScript模块化
【8月更文挑战第3天】JavaScript模块化
32 1
|
4月前
|
存储 缓存 JavaScript
JavaScript——请列出目前主流的 JavaScript 模块化实现的技术有哪些?说出它们的区别?
JavaScript——请列出目前主流的 JavaScript 模块化实现的技术有哪些?说出它们的区别?
34 0
|
5月前
|
JavaScript 前端开发
node.js 导入导出模块(CommonJS模块化规范,ES6模块化规范)
node.js 导入导出模块(CommonJS模块化规范,ES6模块化规范)
59 1
|
6月前
|
JavaScript 前端开发
JavaScript进阶-Class与模块化编程
【6月更文挑战第21天】**ES6引入Class和模块化,提升JavaScript的代码组织和复用。Class是原型机制的语法糖,简化面向对象编程。模块化通过`import/export`管理代码,支持默认和命名导出。常见问题包括`this`指向和循环依赖。理解这些问题及避免策略,能助你写出更高效、可维护的代码。**
65 5