这个问题其实我有遇到过几次,但是前几次我都觉得我的理解没有什么错误,可是今天的面试让我觉得,我的理解一定不对。
我之前的理解,模块化<——>重复利用。×也可以说是不全对。
有一个地方我说的还可以,就是在ES6之前是commonJS->nodeJS 使用的require和export机制来进行模块的引入和暴露出去
后来的ES6是使用的import和export来进行模块的引入和暴露出去
那么为什么有这些东西?
一、设计重用,以最少的模块、零部件,更快速的满足更多的个性化需求。因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。
将经常使用的代码可以封装起来,在使用的时候,进行代码的进入。
把别人的代码包下载下来进行进入使用,也可以将自己的代码打包暴露接口出去。方便后续使用
在JS文件中,可以将方法封装起来,暴露出对象创建方法,后续可以使用对象方法。(方法的封装);
二、还有一个问题,就是解决的同名问题。多个模块和当前JS对于同一命名并不敏感。
var y=require("./yes.js"); y.show();
var w=require("./no.js");w.show();
这两个并不冲突,完美运行。
在原来的多个JS文件进入后,可能会造成相同名字的方法的不同定义,有可能在方法的使用时不能用到自己理想的方法。
那么问题来了,如果,一个模块中有相同的两个方法呢?——>后者覆盖前者方法。
三、利于模块升级,代码管理。
不解释。