1、Node.js解决命名冲突和文件依赖的问题。
2、模块化开发的优点:
生产角度:一种生产方式,生产效率高,维护成本低
软件开发角度:一种开发模式,一种写代码的方式,开发效率高,方便后期维护
3、什么是模块化开发?
模块化:就是把一个非常复杂的一个系统给具体的细化:细化到各个小功能点,然后通过某种方式,或者说某种规则,把这些模块集合到一起,就构成了模块化系统
4、模块化演变:
全局函数:全局变量污染,无法保证不与其他模块发生变量命名冲突;模块成员之间看不出直接关系
对象命名空间:优点:从理论意义上减少了命名冲突。但是暴漏了所有的模块成员,内部状态可以被外部改写,不安全;并且命名空间越来越长
函数私有空间:
利用函数作用域机制实现了私有共有成员成员的分离
私有空间内的变量和函数不会影响全局作用域
jQuery、underscore 等都采用了这种方式
维护和开发:
当一个模块很大的时候,就需要将该模块分成几个部分
软件开发思想:开闭原则
对于扩展是开放的(应用需求变更的时候,可以对模块在不修改源代码的情况下扩展功能)
对于修改是关闭的(对模块的行为进行扩展时,不必改动模块的源代码)
第三方依赖:
依赖注入
降低模块之间的耦合度
模块职责要保持单一性
通过在参数中注入依赖项的方式体现出了模块之间的依赖关系
5、例如:_count 这种以下滑来命名的一般表示的是对象的私有属性,规范就是不想被外部所访问。
6、大部分第三方库都是使用匿名函数自执行的方式来实现模块化,更好的解决冲突和私有空间问题。
7、模块扩充的方法:
var ob= (
function 1 () {}
function 2 () {}
var a ;
......
return {
1 : 1,
2 : 2,
a : a,
......
)()
var ob = (function(o){
o.f1 =function (){}
return o
}
)(ob || {})
8、模块化的理解:
CSS中的模块化:
a. @import url(‘./././‘)
b. 相当于seaJs 中的 requires