1.模块==包

 传统开发:

    (1)

        整个网页我们写一个js 文件,所有的特效都写在里面

      缺点:耦合度太高,代码关联性太强,不便于后期维护,会造成全局污染

  (2) 

        发送的请求次数过多,依赖模糊,难以维护

2.使用模块化开发

  为什么使用模块化?

    减少代码之间的关联度,部署方便,更好的分离,按需加载,避免命名冲突,容易维护

3.什么是模块化?

    Node自带的规范commonjs规范

            Commonjsnode的规范,运行在服务器端,不是浏览器端,如果使用在浏览器端,需要使用对该文件进行打包编译(借鉴工具 browserify  webpack gulp等)

      书写模块的时候,对外暴露借口  module.exports

   引入模块  require(路径)

      Commonjs暴露的本质是一个叫exports的对象

Module.export={}exports.xxx=

      二者暴露的本质是一样的,都是暴露一个exports对象

 

      commonjsnode的规范但 他是同步加载的,同步加载在浏览器端是一个坑,只要一个环节卡主了,最后的就没法执行,所以不建议使用,如果非要使用就需要编辑打包

 

    CommonJS 

      概述:

        Node 应用由模块组成,采用 CommonJS 模块规范。每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。在服务器端,模块的加载是运行时同步加载的;在浏览器端,模块需要提前编译打包处理。(同步加载:只要有一个环节卡住了,后面就没法执行)

      特点:       所有代码都运行在模块作用域,不会污染全局作用域。模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。模块加载的顺序,按照其在代码中出现的顺序。

      基本语法:

        暴露模块    module.exports = value 或 exports.xxx = value

        引入模块    require(xxx) 如果是第三方模块,xxx为模块名;如果是自定义模块,则xxx为模块文件路径