stage1-文件划分方式
具体做法:将每个功能以及相关的状态数据单独的存放在某个文件当中,我们约定一个文件就是一个模块,然后使用<script></script>便签将模块引入,我们也可以在<script></script>中修改全局成员和变量。这样就会导致命名冲突和全局变量污染的问题。并且我们无法管理模块间的依赖关系,完全依靠约定,项目体量变大就会出现问题。
stage2-命名空间方式
我们约定每个模块都只暴露一个全局的对象,所有的成员都挂载在这个对象上。这种方式解决了命名冲突的问题,但是模块内的变量和属性还是可以被外部修改,没有私有空间。另外模块间的依赖关系也没有得到解决。