技术选型
有一个流传较广的笑话,一个人在 stackoverflow 中提了一个问题,如何使用 JS 实现一个数字与另外一个数字相加。最高票回答是:“你应该使用 jQuery 插件,jQuery 插件可以做任何事情”。
历史总是在重演,以前是 jQuery,现在可能是 react 或 vue。不同的框架有不同的应用场景,杀鸡不要用牛刀。
框架和库
框架(framework)具有以下三个特点:
- 具有控制反转(inverse of control)的功能
- 决定应用程序的生命周期
- 一般来说,集成了大量的库
库(lib)具有以下三个特点:
- 是针对特定问题的解答,具有专业性;
- 不控制应用的流程
- 被动的被调用
框架会在特定的时间要求程序执行某段代码。框架决定了什么时候调用库,决定什么时候要求代码去执行特定功能。
实际上,一个库有时也可以称之为框架,而库里面集成的方法称之为库。
框架和库的区别不由实际大小决定,而由思考角度来决定。框架和库实际上可以统称为解决方案。
解决方案
[ what?↓ ] 前端开发中的解决方案主要用于解决以下7个方面的问题:
- DOM
- Communication(通信)
- Utililty(工具包)
- Templating(模板)
- Component(组件)
- Routing(路由)
- Architecture(架构)
[ why ] 为什么要使用外部的解决方案呢?
- 提高开发效率
- 可靠性高(浏览器兼容,测试覆盖)
- 配备优良的配套,如文档、DEMO及工具等
- 代码设计的更合理、更优雅
- 专业性高
如果问题过于简单,或者备选框架的质量和可靠性无法保证,再或者无法满足业务需求,则不应该选择外部的框架。如果团队中已经有相关的积累,就更不需要使用了。
[ How ] 如何使用解决方案呢?一般地,解决方案在实际开发中有以下3种使用方式:
- 开放式:基于外部模块系统,并自由组合
- 半开放式:基于一个定制的模块系统,内部外部解决方案共存
- 封闭式:深度定制的模块系统,很少需要引入外部模块
最后,推荐一个框架选型网站 https://www.javascripting.com,该网站根据不同的需求,给出当下流行的框架选型。