模块化思想
模块化是一种设计思想,利用模块化可以把一个非常复杂的系统结构细化到具体的功能点,每个功能点看做一个模块,然后通过某种规则把这些小的模块组合到一起,构成模块化系统。
模块化的概念
从成产角度,模块化是一种生产方式,这种生产方式体现了两个特点:
- 生产效率高:
灵活架构,焦点分离。
多人协生互不干优。
方便模块间组合、分解。 - 维护成本低:
可分单元群式。
方便单个横块功能调试、升级。
现在已经清楚了现实生活中的模块化,其实在程序中也有很多摸块化的例子,例如程序中的常见日期模块(Date), 数学计算模块(Math), 日志模块,登录认证模块,报表展示模块等,所有模块组成一个程序教件系统。
同样,当某个模块出现问题时,只需要修改当前模块,而不影响其他模块的代码。程序模块化与现实生活中的模块化相似,从程序开发角度,模块化是一 种开发模式,也有两个特点:
- 开发效事高:方便代码重用,对于别人开发好的模块功能可以直接拿过来使用,不需要重复开发类似的功能。
- 维护成本低:软件开发周期中,由于需求经常发生变化,最长的阶段并不是开发阶段,而是维护阶段,使用模块化开发的方式更容易维护。
模块化开发
了解了模块化后,读者可能有些疑问,模块化虽然有很多优势,但是它具体解决了编程人员在开发过程中的哪些问题?下面看下非模块化开发会遇到哪些问题。
1. 命名冲突
在多人协作开发应用,或者使用第三方开发的JavaScript库的时候,通常会遇到命名冲突问题,例如全局变量中名称重复会报错,示例代码如下:
var foo='bar'; var foo='baz';
另外,如果引用第三方的JavaScript库,在全局对象中声明了一个属性foo,自己的代码中也会声明同样名称的属性,两者一同使用的时候,后加载的属性值会替换之前的值,从而造成错误。
模块化开发的优点在于可以解决上述问题,让开发人员能很好地与他人协同,程序方面进行代码复用。那么,模块化是如何解决命名空间的呢?
2. 文件依赖
在开发过程中,可能需要很多文件依赖,示例代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件依赖</title>
</head>
<body>
<script src="./ccc. js"></script>
<script src="./a. js"></script>
<script src="./b. js"</script>
<script src="./c. js"></script>
<script src="./d. js"></script>
<script src="./aaa. js"></script>
</body>
</html>
从上述代码中,./aaa.js 是依赖于./a.js 文件的,但是从代码上并不能看出这样的关系。如果将./aaa.js 与./ajs 的前后位置调换,或者删除./a.js 文件,就会导致程序错误。
在模块化开发中,会使用JavaScript代码来加载所需要的文件,并不需要将所有的文件引人到HTML文件中。