逆向思维:如何判断一套JS框架不符合实际需求?

译文
开发 前端
我个人最偏好的框架是React JS。但如果要为企业选择一套框架,我给出的答案则是Angular 2.0。文章中,将立足于逆向思维,考虑如何断定一套JS框架不符合实际需求。

JS框架称得上层出不穷,几乎每周都有新的框架与广大用户见面。在今天的文章中,我们将立足于逆向思维,考虑如何断定一套JS框架不符合实际需求。作为一名JavaScript架构师、培训人员及导师,我经常面对这样一个问题——你最喜欢的框架是什么?或者哪款框架最为出色?而我给出的两个答案往往令提问者感到意外。就目前而言,我个人最偏好的框架是React JS。但如果要为企业选择一套框架,我给出的答案则是Angular 2.0。

[[167161]]

不过大家更应该问的恐怕是“为什么要准备两个答案?”或者更进一步探究,“我们该如何完成框架的选择过程?”下面,我将向大家共享一些使用框架的实际感受。为了公平起见,首先聊聊我个人的一点选择倾向。

我个人更偏爱以下几套框架:

  • React JS
  • Angular 2
  • Angular 1
  • Ext JS 5或者6
  • Ext JS 4

而如果要为大型企业推荐框架,那么答案会稍有不同:

  • Angular 2
  • Angular 1
  • Ext JS 5 或者6
  • React
  • Ext JS 4

考虑到这些前提,下面我们具体思考接下来的问题。

由谁来使用框架?

在我所效力的企业当中,大多数员工都属于Java程序员。这意味着JavaScript及其各类衍生版本都能够为大家所快速熟悉及掌握。然而尽管各框架之间存在相当程度的共性,但也仍有不少差异需要强调。目前,Ext或者Angular 2的发展势头可能更好,这是因为它们能够以更贴近Java或者C#的方式产生效果,从而吸引更多相关开发者的加入。

学习曲线是否陡峭?

那么在前面提到的框架中,其各自需要耗费多少时间进行学习?要找到答案,我们还需要考虑以下几个问题:

  • 能否购买支持服务以解答技术疑问?
  • 说明文档是否清晰明确?
  • 框架流行程度如何?
  • 团队中是否已经拥有相关专家?
  • 这套框架是否拥有公开Slack频道?
  • 框架开发者们是否关注企业客户的需求?

说到这里,Ext JS与Angular 2的优势应该已经显现出来了,而这也正是我总结个人最爱的两个选项的具体方式。

框架是否提供良好的约束机制?

我还记得当初VB 1.0刚刚面世时,每个人都兴奋地高呼“看看它的构建与运行速度有多快”,并以此作为选择的理由。

没错,VB允许大家采取任何能够达到目标的代码编写方式。但历史经验告诉我们,只要框架本身仍然提供部分结构,那么用户仍有可能编写出糟糕的代码,而且这类蹩脚成果的比例与框架所提供的结构量存在正相关。

在与多位开发者合作时,有些人可能要求其他成员重视代码结构而不只是“能跑就行”。

立足于这一问题,Angular 2再次脱颖而出,而Ext则处于垫底位置。尽管Ext提供所谓MVC及MVVM机制,但其无法保证开发者编写的代码成果与其设计模式相匹配。在MVC当中,我甚至不确定编写者是否清楚自己在开发些什么东西。

行业标准

为了让Ext的运作效果更贴近桌面开发环境,其能够生成HTML并利用其布局机制控制各元素在屏幕上的显示位置。前面提到的其它框架皆全部利用CSS实现布局控制。Ext的优势在于,我不需要了解HTML或者CSS即可实现理想的显示效果。但弊端则是,如果我希望尝试一些Ext支持能力之外的效果,则将面临巨大障碍。另外,使用HTML与CSS则会让屏幕渲染时长大幅增加,特别是在组件存在三层以上嵌套的情况下。

另外,Ext利用特殊的类定义机制让JavaScript看起来更像是Java及C#。这不禁令人担心,随着ECMAScript标准的演进与其自有类似机制的推出,Ext选择的作法未来还是否能够得到广泛支持。

Ext还采用专门的构建流程。虽然这能够规避构建中的大部分阻碍,但大家可能会问,“为什么不采用gulp、grunt或者npm脚本之类的标准?”

尽管Angular 2主要使用TypeScript,但Angular 2与Ext间的区别在于:1)尽管强烈推荐,但大家并不一定需要使用TypeScript;2)TypeScript只负责实现部分功能,且实际效果与ECMAScript标准类似。因此,Angular 2的发展前景明显要更为光明。

在这方面,另一款值得关注的框架为React JS。其应用构建流程全部采用行业标准,但这款单元测试框架并不允许大家在测试中使用Karma。

可测试性如何?

毫无疑问,我个人要求全部框架都具备单元测试能力,因此Ext JS 4直接被淘汰出局。大家可能会强调,MVC能够用于测试控制器,但这是MVC的功能而非由Ext自身实现。

在另一方面,React的测试能力最出色,这也是我支持它的原因所在。但我认为它仍然不太适合由企业客户选择,因为其学习周期太长而且说明文档不太完善。

调研工作

好了,到这里各原则性问题已经相当明确,但问题在于我们要如何提前做好准备?大多数具体信息往往要在员工实际使用某套框架后才会出现。

最好的办法就是听听框架老用户们的意见。在测试框架中,我的起步工作就是“我能在互联网上找到多少与该框架相关的信息?”而第二个问题则是,“该框架流行程度如何?”最后,我会联系这款框架的反对者,听听他们对其做出的负面评价。

如何判断一套框架不符合实际需求?

现在说回标题——要想选出一套错误的框架,大家应当听信销售人员的忽悠、别问任何问题,同时忽略一切之前提到的考量因素。

然后为自己的冲动懊悔不已……

原文标题:How Not to Choose a Framework

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:王雪燕 来源: 51CTO
相关推荐

2016-06-07 14:25:50

逆向思维JS框架需求

2021-07-02 05:21:22

Windows 11操作系统微软

2021-03-15 10:12:12

5G通信网络巴西

2012-07-19 10:47:23

腾讯手机

2022-01-21 00:19:11

Windows 11微软虚拟机

2009-06-23 18:01:45

Ajax框架源代码

2011-12-26 10:37:27

云计算Google

2021-06-28 15:08:06

Windows 11Windows Ins操作系统

2022-02-14 22:24:04

Windows 11PC系统警告

2021-05-27 07:12:19

单点登录系统

2023-05-04 08:13:41

数学模型零测度集

2021-09-02 10:33:18

InsiderWindows 11微软

2021-05-06 11:06:52

人工智能语音识别声闻检索

2023-09-29 22:38:05

Windows微软Windows 11

2023-02-25 15:53:05

微软Windows

2022-02-25 09:00:00

数据科学工具架构

2024-11-12 08:13:09

2020-10-19 10:35:43

iOS设备尺寸

2024-09-23 04:00:00

java架构分布式系统

2024-11-19 16:31:23

点赞
收藏

51CTO技术栈公众号