我们的程序稍微大点就要分开写了,不然几万行代码放一起不得疯了,就像我们平时用电脑也会把电影和音乐分开放吧,这其实就可以算是模块 分开后就带来了依赖的问题,文件多了手动管理依赖就毁了,就有了amd cmd commonjs等,这些规范其实是为了解决模块的依赖,而不是模块本身
对比如下:
组件化和模块化的价值都在于分治
web应用系统的复杂度不断提升,兼顾开发效率和产品实际运行效率,会在开发阶段运用组件化和模块化的手段分离关注点,结合构建工具合理打包。
组件化更多关注的是UI部分,你看到的一个管理界面的弹出框,头部,内容区,确认按钮和页脚都可以是个组件,这些组件可以组成一个弹出框组件,跟其他组件组合又是一个新的组件。
模块化侧重于功能或者数据的封装,一组相关的组件可以定义成一个模块,一个暴露了通用验证方法的对象可以定义成一个模块,一个全局的json配置文件也可以定义成一个模块。
封装隔离来后,更重要的是解决模块间的依赖关系。babel作为现在最火的es6转换器,用babelify或者webpack的babel loader再或者基于task的构建系统插件都可以很方便用起来es6 modules
总结:『模块注重的是职责分离,而组件强调的是复用』