1.模块==包
传统开发:
(1)
整个网页我们写一个js 文件,所有的特效都写在里面
缺点:耦合度太高,代码关联性太强,不便于后期维护,会造成全局污染
(2)
发送的请求次数过多,依赖模糊,难以维护
2.使用模块化开发
为什么使用模块化?
减少代码之间的关联度,部署方便,更好的分离,按需加载,避免命名冲突,容易维护
3.什么是模块化?
Node自带的规范commonjs规范
Commonjs是node的规范,运行在服务器端,不是浏览器端,如果使用在浏览器端,需要使用对该文件进行打包编译(借鉴工具 browserify webpack gulp等)
书写模块的时候,对外暴露借口 module.exports
引入模块 require(路径)
Commonjs暴露的本质是一个叫exports的对象
Module.export={}和exports.xxx=
二者暴露的本质是一样的,都是暴露一个exports对象
commonjs是node的规范但 他是同步加载的,同步加载在浏览器端是一个坑,只要一个环节卡主了,最后的就没法执行,所以不建议使用,如果非要使用就需要编辑打包
CommonJS
概述:
Node 应用由模块组成,采用 CommonJS 模块规范。每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。在服务器端,模块的加载是运行时同步加载的;在浏览器端,模块需要提前编译打包处理。(同步加载:只要有一个环节卡住了,后面就没法执行)
特点: 所有代码都运行在模块作用域,不会污染全局作用域。模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。模块加载的顺序,按照其在代码中出现的顺序。
基本语法:
暴露模块 module.exports = value 或 exports.xxx = value
引入模块 require(xxx) 如果是第三方模块,xxx为模块名;如果是自定义模块,则xxx为模块文件路径