从几个月前开始接触前端,我就听到一句话:保持内容、样式、行为的分离是一个良好并且必要的习惯。所以我一直以来的模式是:HTML=>CSS=>JavaScript,也就是先把内容填充好了,然后写CSS,一看大概页面差不多了,用JS写一些行为,比如点击啦滚动啦什么的,然后万事大吉!
然而早就听说了webpack,最近开始学习,然后发现需要nodeJS,然后又了解了解nodeJS,又知道了commonJS,又接触到了模块化、组件化这些词,意识到我原本的方式好像并不是内容样式行为分离的模式。首先,JS代码和DOM强耦合,也就是HTML里随便改个class或者id,可能导致整个页面完蛋,所以这种方式只能说是形离神不离。
所以我又查阅相关资料,页面可以说是由一个个组件构成,组件又由一个个实现某功能的模块构成,所以模块化和组件化可以实现代码的复用,有一篇文章提出了一种说法:
很多人觉得模块化开发的工程意义是复用,我不太认可这种看法,在我看来,模块化开发的最大价值应该是分治,是分治,分治!(重说三)。
不管你将来是否要复用某段代码,你都有充分的理由将其分治为一个模块。
所以我的理解是,将页面分成一个个组件,各组件互不干扰,分别开发,可随意组合,组件包括有JS模块和CSS模块,JS模块利用命名空间、闭包等方式将想要暴露的属性暴露出来(或者AMD/CMD/ES6 Module等方式)。
目前依然在学习中,理解有限,难免有错,深入学习后再改。