在JavaScript刚开始发展时,就是为了实现简单的页面交互逻辑,寥寥数语便可;现在cpu、浏览器性能获得了极大的提高,不少页面逻辑迁移到了客户端,表单验证等,随着web2.0时代的到来,Ajax技术使用愈来愈多,jQuery等前端库层出不穷,前端代码日益膨胀,这时候JavaScript做为嵌入式的脚本语言的定位动摇了,JavaScript却没有为组织代码提供任何明显帮助,甚至没有类的概念,更不用说模块module了,JavaScript极其简单的代码组织规范不足以驾驭如此庞大规模的代码前端
既然JavaScript不能handle如此大规模的代码,咱们能够借鉴一下其它语言是怎么处理大规模程序设计的,在Java中有一个重要带概念package,逻辑上相关的代码组织到同一个包内,包内是一个相对独立的王国,不用担忧命名冲突什么的,那么外部若是使用呢?直接import,对应的package便可,遗憾的是JavaScript在设计时定位缘由,没有提供相似的功能,开发者须要模拟出相似的功能,来隔离、组织复杂的JavaScript代码,咱们称为模块化。一个模块就是实现特定功能的文件,有了模块,咱们就能够更方便地使用别人的代码,想要什么功能,就加载什么模块。模块开发须要遵循必定的规范,各行其是就都乱套了规范造成的过程是痛苦的,前端的先驱在刀耕火种、茹毛饮血的阶段开始,发展到如今初具规模,简单了解一下这段不凡的历程web
函数一个功能就是实现特定逻辑的一组语句打包,并且JavaScript的做用域就是基于函数的,因此把函数做为模块化的第一步是很天然的事情,在一个文件里面编写几个相关函数就是最开始的模块了。这样在须要的之后夹在函数所在文件,调用函数就能够了这种作法的缺点很明显:污染了全局变量,没法保证不与其余模块发生变量名冲突,并且模块成员之间没什么关系。浏览器