JavaScript 框架大战已结束,赢家只有一个


JavaScript 框架大战已结束,赢家只有一个

文章插图
 
框架之战是 JAVAScript 社区中的热门话题 , 也是业界众多圣战之一 。一开始 , jQuery 崭露头角 , 接下来 AngularJS 初露锋芒 , 再到现代框架混战 , 战争一直很激烈 。然而现在框架之战已经结束 , 是谁赢得了最终的胜利 , 它又是凭什么取胜 , 且看本文分解 。
 
竞争者 
框架之战是 JavaScript 社区中的热门话题 , 也是业界众多圣战之一 。一开始 , jQuery 崭露头角 , 接下来 AngularJS 初露锋芒 , 再到现代框架混战 , 战争愈演愈烈 。
 
如今 , 似 Backbone 或 Sencha 之流 , 许多竞争者已经马革裹尸倒在路边:只留下大量必须维护的遗留代码 。如 jQuery 等其他幸存者 , 仍然有着庞大的社区 , 实在令人惊讶 。其他如 Angular , 似乎也未像预期或承诺的那样一飞冲天 。
 
jQuery 
它可能是现存年龄最大的竞争者 。它非常受欢迎 , 因为它解决了浏览器之间的互操作性 , 但其应用程序很难扩展 。
 
如今 , jQuery已经不是主流 , 也不是大多数项目的最佳选择 。
 
$(document).ready(() => {$("#App").html("Hello World!");}); 复制代码
 
AngularJS 
它处于 LTS 模式 , 并且为了支持其老大哥已经退居二线 。不过毫无疑问 , 它曾是框架生态系统一次巨大的飞跃 , 很多人仍然怀念它 。
 
但是 , 由于它不再被积极维护 , 因此它不再是竞争者 。
 
angular.module("app", []).controller("HelloWorldCtrl", ($scope) => {$scope.message = "Hello World!";}); 复制代码
Angular 
它的出现是为了与 React 一决雌雄 。AngularJS 已经老了 , 它存在性能和健壮性问题 , 而随着 React 变得越来越好 , 许多程序员对其投出艳羡的目光 。因此 , Angular 利用 ECMAScript 6 的改进对 AngularJS 进行了现代化改造 , 试图履行与 React 的决战之约 。
 
import { Component } from '@angular/core';@Component ({selector: 'my-app',template: `<h1>Hello {{name}}</h1>`,})export class AppComponent{ name = 'World'; } 复制代码
 
Angular 最突出的困难是其陡峭的学习曲线 。它需要了解很多概念 , 而且并不是一下子直截了当给你的 , 很多时候会把你绕进死胡同 。学好 Angular 是很困难的:它继承了 AngularJS 的学习曲线 , 但又有新的困难 , 比如 RxJS 或分层依赖注入 。
JavaScript 框架大战已结束,赢家只有一个

文章插图
 
本·纳德尔提供原始照片 。
 
另一方面 , 让人担忧的是 , Angular 也违背了很多承诺 。例如 , 自 V2 以来 , 大家都期望有一个创建服务器端呈现页面的简单方法 , 但截止到 2022 年 2 月 24 日 , Angular.io 网站本身在没有 JavaScript 的情况下都无法工作 。
 
然而这还不是 Angular 的最大的问题 , 它最大的问题是碎片化和版本升级 。升级版本非常困难 , 以至于用户不敢冒险升级其应用程序 。
JavaScript 框架大战已结束,赢家只有一个

文章插图
 
【JavaScript 框架大战已结束,赢家只有一个】在npm官网中可以看到有很多旧版本的用户 。
 
VueJS 
Vue 是许多开发人员的答案 , 因为他们需要比 AngularJS 性能更高的、更稳定的 , 且更易于使用的框架 。Vue 的模板系统非常接近原始的 Angular , 也保持了 AngularJS 的简单性 , 与此同时 , 它又从 React 获得了一些能力 。
 
但是 VueJS 在版本 1 和版本 2 中遇到了一个严重的问题:它不能很好地处理数组 , 作者指责 JavaScript 对更新算法的选择不佳 。如果你不使用像 Vuex 或 Redux 这样的库 , 则可能会遇到严重的问题 。你可以看到在AngularJS中可用的应用程序 , 但在VueJS中却不行 。
 


推荐阅读