转:2015年JavaScript或“亲库而远框架”
发布于 9 年前 作者 i5ting 4506 次浏览 最后一次编辑是 8 年前 来自 分享

JavaScript世界似乎进入了一个churn rate(流失率)的危机,框架和技术在以一种不可持续的速度被挤出和消失。不过我认为社会将会适应以及采取新的实践来回应这一现状。开发者将会把目标从整理框架(如Angular.js和Ember)转移到多种小型专用库混合体,以此来缓解生产的风险并解决来自外部竞争的不同问题。

流失

2014年过去了,作为一个JavaScript开发者很难满怀信心的去“挽回”一个特定的库或技术,即便是强大的Angular,似乎也因为最近的一些事情而动摇。

2014年10月的ng-europe会议上,Angular开发者团队透露了一个关于Angular 2.0路线图的重大更新。而最有争议的信息之一是NG2.0将与现有的Angular代码“向后不兼容”。事实上,几个关键的概念将在全新的体系结构中被弃用,Angular开发者需要有效的掌握全新的框架。

显然,这一举措令很多人感到不满。是对还是错?我们不太清楚,不过感觉上,Angular开发者在过去两年里的知识、实践和代码已经被任意的弃用了。更糟糕的是,替代品还不会马上出现——这应该是一年以后的事了,反对者认为,一旦Angular 2.0在2015年发布的话,那么开发者手中的新项目将经历“由生到死”的命运。

有很多不快的评论专门指向Angular和谷歌,有些是中肯的,有些或许并非如此。但最高得票意见之一的并不是关于Angular。它指向整个JavaScript环境,Reddit的othermike评论道:

我不明白,我不明白为什么有人认为这是一个好注意,这是很恐怖的,因为没有人有时间去理解它,当它以每三十秒的速度改变。

othermike所反映的问题也正是流失的问题,有太多的JavaScript框架都改变的太快了。

这种变化的速度是可持续的吗?

创新是伟大的,但是这种churn rate似乎过度了,当不能保证创新物的寿命时,不仅让开发者不可能做大,也加大了前期时间投入——掌握处理新框架和技术。程序员想要创造事物,并且要成为事物的主人。但是当花费大量时间去学习时,程序员该如何完成事情?又如何通过不熟悉的技术在黑暗中探索?

无需绝望

情况是糟糕的,但是人是聪明的,开发者有够足智多谋,而且编写新应用的需求不会让任何人放弃,那么我们需要做些什么呢?或许我们可以采取以下三个主要的经验教训:

以健康的怀疑态度对待新的技术。谨慎的将新的GitHub项目投入产品,等待一些事物被通用、错误修正以及被证明毫无疑问的成熟。 不要轻信于公司的支持。谷歌不是第一次对开发者所依赖的生态系统“釜底抽薪”。去问问那些使用Google的Web API的开发者就知道了。公司总会存在非理性的行为,他们的利益并不总是和你一致。 更倾向专门的库而不是整体框架。当你选择一个框架时,意味着你做了一个大的、长期的承诺。然而一旦框架被证明是错误的,你会失去很多,但是如果你从库中选择时,你可以替代一部分前端堆栈的同时保留其余部分。 库>框架?

在Angular争论的结果中,Reddit网站跟帖中有这么个问题:JavaScript开发者感觉更喜欢迁移到哪个技术?这里有r/javascript不得不说的:

  • React.js 和 Flux (一个只有视图 view-only 的库和事件驱动模块)
  • Ember.js(MVC框架)
  • Knockout.js (视图库)
  • Backbone.js (MVC框架)
  • Meteor(同构框架)
  • Mithril(MVC框架)
  • Ember(MVC框架)

不要框架,只需要一堆库就可以

  • Vue.js (视图库)
  • Breeze.js (数据库Model-only)
  • Ractive (视图库)

有趣的是这里有多少选项根本不是成熟的框架,而是专业的库——主要用于数据绑定的DOM。有人提出:“在没有整体框架,只有模块化组件的情况下去做一件事情会比较好。”他是这么说的:

我真的认为这是最好的答案。世上永远不会有一个完美的框架,因此你仅可以使用npm将相关的特征聚在一起。我发现这些小的组件的文档通常是很简单的,你不需要去等待下一个完整框架的发布。你简单的抛出一个问题,作者修复它,把它推到npm的同时不会打扰到其他组件。 如果你发现自己不喜欢制模语言或错误处理,你不必考虑整个项目,只需要以自己的方式换掉目前的组件。 不知你的感受如何?通过使用小型库,让选择和混合成为可能。届时,当它们被取代时,我们可以使用相近的来交换前端堆栈。库不再是一个“非此即彼”的命题,如果你喜欢Angular的控制反转容器,但不喜欢其数据绑定。你完全可以从NPM中选择你喜欢数据绑定方式。你可以将你的遗留项目递增的迁移到新的技术中,而不是重新写一边。

更重要的是,当不同的问题被不同的库解答时,他们的解决方法可以直接比较。如果框架A用于X很好,用于Y很差,而框架B完全相反的时候,你会很困惑。不过如果库A和B都试着用于X时,它们会以一种直接的方式在独立部件和可衡量方面进行比较。

总结

  • 前端JavaScript技术的流失率是有问题的
  • 人们开始疲惫于改变的步伐,被迫疏远
  • 答案可能是“亲库而远框架”

当然,在2015年我们将看到多少会实际发生呢?Angular的主导地位完全有可能继续保持稳定,如果是这样,Angular需要寻求标准以及稳定近两年的“骚动”。当然也有另一种可能,就是会出现更庞大的事物代替Angular的位置。一个非正式的组合,Flux和Browserify似乎是很明显的候选人。

原文

11 回复

小而美的是库,大而全的是框架

文章过期也很快的。一年前的文章了。

Redux 大行其道,今年的新苗子。

@i5ting koa算库还是框架,jq算框架还是库?

jq 应该算 库

总之2015 js 是各种火,2016还是依旧

一种框架应该就是一种思路,认同哪种思路就用哪种框架,不然感觉用不来。

@i5ting 我早已投奔 react native and reactjs ,ng 我只是稍稍了解

只让你的代码 “调用” 的是库,同时会 “调用” 或 “控制” 你的代码的是框架 自豪地采用 CNodeJS ionic

Jquery+Vue.js足以解决大部分问题了

@artisan 求问一些例子,想用react,但是放弃不了巨大的jq库,特别是很多特效啊这种自己不擅长的 自豪地采用 CNodeJS ionic

回到顶部