生么是模块化开发

117 阅读2分钟
模块化开发就是指一个模块(一个模块就是实现特定功能的文件),有了模块我们就可以更方便的使用别人的代码,想要什么功能就加载什么模块,大大增加的了开发人员的效率。模块开发需要遵循一定的规范,根据AMDAsynchronous Module Definition)规范,我们可以使用define定义模块,使用require调用模块。
一、模块开发与传统开发的区别
模块开发与传统开发是一样的,除了方式不一样,达到的效果并没什么两样。
现流行的模块开发主要有两种方式:
    1、依赖加载。这种方式是最广泛的,像require.js,sea.js等,除了编写规范不一样,实际都是通过相关require api把模块chunk文件拿回来,当加载完成后在运行逻辑代码。
    2、依赖打包。经典代表就是webpack,其实就是写代码的时候分开模块,但打包的时候按依赖关系找到各个模块,最后打包到同一个文件上,并给每个chunk标识id,运行逻辑代码时将模块引用指向该id,从而实现模块化。
    传统开发方式是在页面上通过脚本标签引入,等所有的脚本资源加载完成后在运行逻辑代码。
二、模块化开发的优缺点
    优点:可维护性
    1、灵活架构,焦点分离
    2、方便模块间组合、分离
    3、方便单个模块功能调试、升级
    4、多人协作互不干扰
    缺点:性能损耗
    1、系统分层,调用链会很长
    2、模块间通信、模块间发送消息会很性能
三、模块开发的好处
    1、使用模块能解决文件与文件之间的依赖关系。
    当你引入很多个JS文件的时候,很多可能会不清楚这些JS文件之间的依赖关系,从而导致加载顺序出错。使用模块开发之后就能避免这个问题。
    2、使用模块开发可以避免命名的冲突。
    JS本身是没有命名空间的,为了减少命名冲突,经常使用对象或闭包来减少命名冲突。对象只能减少命名冲突概率,闭包的过多使用会造成内存泄漏。模块化开发之后,在模块内任何形式的命名都不会和其他模块的命名产生冲突,有效的解决了命名冲突的问题。
    3、使用模块化开发能进行代码复用。
    当我们想要实现某个功能的时候,如果某个模块正好有这个功能,我们就能直接引用该模块,不必再写多余的代码,这样可以提高代码的整体效率,减少重复冗(rong)余代码。