190324&谈谈你对前端工程化的理解

谈谈你对前端工程化的理解

随着项目的不断发展和日益复杂,人们开始用一些新的思想去应对这些实际的挑战,模块化就是其中的一种方式。

概要阐述

模块化是一种处理复杂系统分解成为更好的可管理模块的方式,它可以把系统代码划分为一系列职责单一,高度解耦且可替换的模块,系统中某一部分的变化将如何影响其它部分就会变得显而易见,系统的可维护性更加简单易得。

可以实现模块化的方式有很多, 比如

  • 手动实现模块化
  • CommonJS规范
  • AMD规范
  • ES6模块化

手动实现模块化

最小功能化的封装,我觉得其实都属于模块化的一种实现。比如 求和,增加,删除等

CommonJS规范

代表插件是 Sea.js

AMD规范

代表插件是 Require.js

ES6模块化

貌似结合了前两者的优缺点,看样子是大部分开发者采用的模块化方案。但我觉得还是优缺点。任何技术都不是完美的,都有其适用场景和不适用场景。

自己理解

每次这些新思想,新架构产生出来,其实我们或多或少在实际的项目中或者demo中都用过,只不过或许是不知道叫这个名字罢了。就比如,常见的公共功能的封装,可以叫做模块化,将一系列的功能用闭包封装成一个独立的插件,来供其他项目,或其他方面调用,这也可以称之为模块化。

再比如因为文件性能问题,通过requirejs实现了按需加载,在开发过程中,抛出设置的依赖来看,开发的每个功能在一定程度上也是一种模块化。当然requirejs这种方式遵循的是 AMD规范。

与requrejs相关的,还有一个seajs,大致原理类似,一般来说,只是看哪个语法更精简,反正都是解决了一类问题,按需加载嘛。但又说,seajs,遵循的是 CMD规范。我管你个鬼啊,管你啥规范,能用会用能解决问题不就OK。

虽然搞懂原理,一定程度上真的可以提高效率开发。但是的确是有点划分阵营的感觉。不过反过来讲,也的确是,想去哪户的朋友家串门,肯定得先知道门牌号。得懂些朋友的喜好,别哪壶不开提哪壶的,再者也知道朋友的优劣势,有困难的时候,互相帮忙。

这么一类比的话,学习技术这件事来说,真是跟交朋友有些类似。知道TA是谁,有什么优劣势,有问题,有困难,该如何跟TA言语,让TA帮忙,对于技术来说,这其实就是了解某项技术的原理,学会使用的过程。

题外话:每次写文章的时候,总感觉写的很水,有时候还有点写不出来。我觉得一大部分是因为肚子里面没东西,墨水太少,实力太弱导致的。学的东西,研究的东西,太贫乏了。行为上的努力掩盖了思维上的懒惰。看来还是得加大输入的投入力度了。多看东西,才有的写。就好比,多吃饭,才能有劲做各种事情。

一篇有价值的,有分量的文章需要不断的打磨。

参考

前端模块化详解(完整版)
前端工程之模块化
前端模块化开发那点历史

你可能感兴趣的:(前端)