技术选型

有一个流传较广的笑话,一个人在 stackoverflow 中提了一个问题,如何使用 JS 实现一个数字与另外一个数字相加。最高票回答是:“你应该使用 jQuery 插件,jQuery 插件可以做任何事情”。

历史总是在重演,以前是 jQuery,现在可能是 react 或 vue。不同的框架有不同的应用场景,杀鸡不要用牛刀。


框架和库

框架(framework)具有以下三个特点:

  1. 具有控制反转(inverse of control)的功能
  2. 决定应用程序的生命周期
  3. 一般来说,集成了大量的库

库(lib)具有以下三个特点:

  1. 是针对特定问题的解答,具有专业性;
  2. 不控制应用的流程
  3. 被动的被调用

框架会在特定的时间要求程序执行某段代码。框架决定了什么时候调用库,决定什么时候要求代码去执行特定功能。

实际上,一个库有时也可以称之为框架,而库里面集成的方法称之为库。

框架和库的区别不由实际大小决定,而由思考角度来决定。框架和库实际上可以统称为解决方案。


解决方案

[ what?↓ ]  前端开发中的解决方案主要用于解决以下7个方面的问题:

  1. DOM
  2. Communication(通信)
  3. Utililty(工具包)
  4. Templating(模板)
  5. Component(组件)
  6. Routing(路由)
  7. Architecture(架构)

[ why ] 为什么要使用外部的解决方案呢?

  • 提高开发效率
  • 可靠性高(浏览器兼容,测试覆盖)
  • 配备优良的配套,如文档、DEMO及工具等
  • 代码设计的更合理、更优雅
  • 专业性高

如果问题过于简单,或者备选框架的质量和可靠性无法保证,再或者无法满足业务需求,则不应该选择外部的框架。如果团队中已经有相关的积累,就更不需要使用了。


[ How ] 如何使用解决方案呢?一般地,解决方案在实际开发中有以下3种使用方式:

  1. 开放式:基于外部模块系统,并自由组合
  2. 半开放式:基于一个定制的模块系统,内部外部解决方案共存
  3. 封闭式:深度定制的模块系统,很少需要引入外部模块

最后,推荐一个框架选型网站 https://www.javascripting.com,该网站根据不同的需求,给出当下流行的框架选型。