阅读更多

3顶
0踩

编程语言
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似乎是很明显的候选人。

不过无论发生什么,我们都很难看到技术的脚步会慢下来。如果您对此有自己的看法,欢迎留下您精彩的评论!

英文链接:点此进入
3
0
评论 共 2 条 请登录后发表评论
2 楼 anicething 2015-02-05 11:40
这种趋势是必须的。没有人可以提供一个完整的解决方案。
1 楼 forcer521 2015-02-05 09:15
当你选择一个框架时,意味着你做了一个大的、长期的承诺。然而一旦框架被证明是错误的,你会失去很多,但是如果你从库中选择时,你可以替代一部分前端堆栈的同时保留其余部分。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Javascript库尔索

    Javascript库尔索

  • electron2015:2015 电子库库尔

    Electron2015 风格指南 安装样式指南 $ npm install $ bower install $ gulp 使用最小化构建样式指南 $ gulp --production 仅构建生产所需的最低限度 $ gulp build 边走边看和编译文件 $ gulp serve 发布到 GH 页面 ...

  • 后端库尔索

    后端库尔索

  • React库尔塞拉

    Create React App入门该项目是通过。可用脚本在项目目录中,可以运行:npm start 在开发模式下运行应用程序。 打开在浏览器中查看。 如果进行编辑,页面将重新加载。 您还将在控制台中看到任何棉绒错误。...

  • React库尔索

    Create React App入门 该项目是通过。 可用脚本 在项目目录中,可以运行: npm start 在开发模式下运行应用程序。 打开在浏览器中查看。 如果进行编辑,页面将重新加载。 您还将在控制台中看到任何棉绒错误。...

  • draft-war-visualization:2015 年棒球黑客日提交

    藤原大悟、查德·库尔和大卫·特里森的 2015 年棒球黑客日项目 基于 jekyll-foundation-5-starter 在 5 分钟内使用启动由网站! 这是什么。 曾经想要一个简单但漂亮的响应式网站作为您的项目页面或存储库页面吗? ...

  • rooftoprakkesh:rakkesh是库尔

    rooftoprakkesh:rakkesh是库尔

  • konkur98:康库尔倒计时

    康库尔98 简单的破产倒计时网站

  • CODERHOUSEJS:库尔索德科斯豪斯酒店

    CODERHOUSEJS:库尔索德科斯豪斯酒店

  • ot-harjoitustyo:OT-库尔辛大学

    Ohjelmistotekniikka,harjoitustyö (linkkiharjoitustyöntyöaikakirjanpitoon) Tehtävät Viikko 1 Viikko 2 Linkkityöaikakirjanpitoonlisättytämändokumentin otsikon alle。 ...

  • Online-Shopping-JavaScript

    在线购物JavaScript 这是一个基于纯JavaScript的单页电子商务网站。 在此,用户可以访问站点并可以检查产品并添加到购物车。 但是,要购买或打开购物车的用户必须先登录。 您可以根据类别过滤产品。 您可以克隆此...

  • Curso-Basico-Platzi:普拉索基本库尔索储蓄所

    Curso-Basico-Platzi:普拉索基本库尔索储蓄所

  • ramda:实用的功能性Javascript

    拉姆达 JavaScript程序员的实用功能库。 为什么选择Ramda? 已经有一些具有功能风味的优秀库。 通常,它们是通用工具箱,适用于多种... 兰迪·库尔曼(Randy Coulman)Ramda中的 哲学 使用Ramda就像使用JavaScript一样

  • calculator:没有 eval() 的 Javascript 计算器

    的计算器戴安娜莱斯库尔描述这个计算器使用库来处理十进制数学。 它可以使用十进制数执行基本的数学函数。截屏运行测试我使用 (独立)为实际的数学函数(加法、减法、乘法和除法)创建单位规范。 为了运行 Jasmine...

  • angular-adv-adminpro:库尔索-德角度阿万扎多仓库

    管理员专业版 该项目是使用版本11.0.7生成的。 开发服务器 为开发服务器运行ng serve 。... 如果您更改任何源文件,该应用程序将自动重新加载。...要获得有关Angular CLI的更多帮助,请使用ng help或查看“ 页面。

  • alura-imersaodev:特雷纳门托·德·库尔索将军_阿鲁拉

    大井,佩索尔! IMERSAO_DEV da Alura的预备库和项目书。... Todosestãooriginalmente compatilhadostambémno codepen,onde podem ser facilmente rodados。 ;) 卡洛斯·罗伯托(Carlos Roberto)。

  • 因库尔

    可以在本地或远程测试工具,该库是由Kotlin Standard Library提供的引擎的托管实例。 后者将inkuire直接嵌入到dokka输出中。 您也可以使用此实例进行尝试 如果您发现任何错误,请通过在我们的存储库创建问题来...

  • angular-adv-admin-pro:Angular仓库库尔索Avanzado de Angular

    管理员专业版该项目是使用版本11.1.2生成的。开发服务器为开发服务器运行ng serve 。... 如果您更改任何源文件,该应用程序将自动重新加载...进一步的帮助要获得有关Angular CLI的更多帮助,请使用ng help或查看“ 页面。

  • 2库尔

    2库尔

  • 【java毕业设计】新冠疫情下的校园出入系统源码(ssm+mysql+说明文档+LW).zip

    功能说明: 本系统主要包括以下功能模块:个人中心,通知公告管理,用户管理,工作人员管理,进门登记管理,出门登记管理,出入统计管理,外来登记管理等模块。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上

Global site tag (gtag.js) - Google Analytics