模块化标准【AMD】【CMD】【CommonJS】【ES6】以及 module.exports、exports、export、export default、require、import 间的理解概论

一、模块化(原因和概念)

先介绍一下模块化是个什么东西,解决了什么。
模块化概念和分类这个部分转自别人转的,也不知道原博在哪,但是写得很不错,所以拿来分析总结一下。

JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可;如今CPU、浏览器性能得到了极大的提升,很多页面逻辑迁移到了客户端(表单验证等),随着 web2.0 时代的到来,Ajax技术得到广泛应用,jQuery等前端库层出不穷,前端代码日益膨胀
这时候JavaScript作为嵌入式的脚本语言的定位动摇了,JavaScript却没有为组织代码提供任何明显帮助,甚至没有类的概念,更不用说模块(module)了,JavaScript极其简单的代码组织规范不足以驾驭如此庞大规模的代码
既然JavaScript不能处理好如此大规模的代码,我们可以借鉴一下其它语言是怎么处理大规模程序设计的,在Java中有一个重要带概念——package,逻辑上相关的代码组织到同一个包内,包内是一个相对独立的王国,不用担心命名冲突什么的,那么外部如果使用呢?直接import对应的package即可import java.util.ArrayList;
遗憾的是JavaScript在设计时定位原因,没有提供类似的功能,开发者需要模拟出类似的功能,来隔离、组织复杂的JavaScript代码,我们称为模块化。
一个模块就是实现特定功能的文件,有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。模块开发需要遵循一定的规范,各行其是就都乱套了

简单来说就是以前前端简单,项目工程也小,现在前端突然发展开来,随之一些需求及项目复杂度也增加,js语言原本的定位不足支持这些工程,就需要向一些成熟的老大哥学习(java等),模块化使代码从一坨变成规整的一块一块。

利于维护(一块出问题了就维护一块)

利于分配工作(每人负责几块)

利于使用(想用哪块的话就拿来哪块)

1、前端模块化的前辈

js模块化有3个最基础的前辈

  1. 函数封装(代码还是一坨)
  2. 向其他语言学习,创建对象(面向对象编程,如果把函数比作能做的事,对象就是做事的人,想要做什么事,就找某个能做这个事的人,而不是去成千上万个事中找。还是一坨。)
  3. 通过

你可能感兴趣的:(javascript)