模块化编程:
如何在实际开发过程中,解决变量名冲突?
早期是通过:
给变量名添加前缀
放入对象中
放入一个自执行的函数
目前最好的方法是:
使用模块化开发。
早期的三种方式解决变量名冲突,但是这三种都有缺陷,其中前两种,变量名和对象名,虽然说几率小,但是还是会有一定几率会重复,第三种的话,放在一个自执行函数中,只会有两种情况:当函数执行完毕,里面的数据就无法取出。或是函数一直执行,但是这样的话数据就一直存在在内存里面,非常消耗性能的。
综和后两种方法的缺点,我们发现
模块化开发能完美的避免对象名冲突,以及函数中变量无法随用随取的缺点。
我们只需要在一个单独的js
文件中进行变量和方法的定义,在需要引用这里面的变量时,就通过require
属性,把这个js
文件变成一个对象的形式进行引入。这样我们就可以通过对象的方式,调用到该js
文件中的变量和方法,从而避免了变量名冲突。
在
js
文件中进行其他
js
文件引入的方法:
1
,先在被引用的js
文件中,把js
文件透过exports
属性开一个口,使其他js
文件能够通过require
属性访问到。
2
,在当前js
文件中通过require
方法引入暴露出的js
文件,并将其赋值给一个变量,该变量就代表了被引用的js
文件暴露出的{list:list,get:get}
这个对象,暴露出的是什么,引用过来的就是什么,一般都是以对象的形式暴露出数据,并且只要被引用的文件中跟list
或是get
有关的数据,就都能获取到。(注意:
引入文件时前面的
./
是必加的
,并不是去到上一层)
模块化开发:
模块化开发是由commenjs
规范提出的,但是commenjs
规范不支持浏览器,所以我们需要通过一些手段,比如说requirejs
,seajs
,angular….
来实现模块化开发并兼容浏览器,同时,我们还可以通过一些前端构建工具来对我们的文件进行编译,从而实现模块化。
后端语言中,node.js
全面支持commenjs
规范
模块化构建工具:webpack
,gulp
,grunt
等也是支持commenjs
规范。
这里我们主要来了解一下通过一些固定的手段来完成模块化,完成模块化的手段一般分三个:
首先,模块化编程有三种规范,AMD,CMD,UMD
,其中:
AMD