怎样克服 JavaScript 框架疲劳?
【编者按】Tero Parviainen 著有 Build Your Own AngularJS,曾两次组织 Clojure CUP 竞赛,在 Twitter 上有近两千名关注者。
在本文中。Tero 阐述了在 JavaScript 框架层出不穷的当下,不少开发人员对选择框架的种种困惑。假设你也有相似的困惑。最好还是读一读。

下面为译文:
JavaScript 社区正受「框架疲劳」困扰。着眼近段时间涌现出的大量新框架、技术和想法,令人振奋的同一时候也让人觉得非常难追上科技更新的脚步。
既然难以追赶,那么必须选择专注的领域。而做这个选择也正是由于这样的焦虑感。那么,你在专注于「正确的事」么?你正在学习的框架又是否是最合适你的,或许还有比它更好的?会不会下个月就发生些什么让你的选择显得过时?
这里有一些个人总结,用以抵抗这样的疲惫感和焦虑感。
1.学会赞赏已知中的未知数
其实假设你遭遇了这个问题。那么说明你已经非常了解环绕 JavaScript 正在发生些什么。全部你觉得应该学习的其实都是你有所了解的,它们都是你知识领域中的未知点。在这里,你必须要理解——「已知的未知」会不停地扩张。永无止境。
其实,恰恰相反:这不仅意味着新事物在不断出现,还意味着每一次你学习了一些东西,也会了解到与它相关的——那些你原本还不了解的事情。
举个样例,在读 Cycle.js 时,才发现对 Reactive Programming 知之甚少。
学习 React 又带来了接触 React Native、GraghQL、Redux 的途径,并如此无休止的重复。一件事总是可以引起另外一件事。
与其被一系列已知的未知所扰,不如学着接受这样的情况。当意识到缺乏某种知识,可以选择兴许去学习。知道它存在并大概知道它是什么。这意味着你可以决定在某个时候,假设可能的话,花费时间去学习这样的知识。我们总是陷入选择中。倾向于抗拒这样的选择却又由于仍有那么多不会的知识而抱有负罪感。
这样的纠结毫无意义,进行选择比忽略全部可以学习的东西更好。
这样的未知——你所不知道的知识——不能作为实际知识和技能的替代。但也绝不是毫无用处。
2.接受事情总是处在变化中
毫无疑问, Web 开发总在不停地衍变——更好的解决方式被共认,亦或是设备性能增强等等。
不管如今 JavaScript 最前沿的技术是什么。我敢说这个「前沿」绝对支撑不了3年。它们中的大多数会被长久的遗忘,也有一些会留存。但创新或许会环绕我们甚至还不能想象的某些事情发生。
举个样例,Angulai 1.x 如今仍然非常强大而且会维系数年,但环绕它并没有创新点。这样的情况终于也相同会发生在 React 或其它现今看来新鲜的技术上。
我们或许并不希望这些发生。但这却是不可避免的现实,你只能选择去接受事情的持续变化或者停留在落后于前沿技术的拐点。
不论什么一种选择都是有效的,但也都要付出成本。不管怎样,变化是持续的,试图阻止这样的变化往往收效甚微。
3.理解一切都有价值
不管你选择将时间用在哪种框架或者技术上,付出终究会得到回报,即使它不是最正确的那一个。
你所学习的一切都在帮助构建你头脑中的神经元网络,会帮你建立某种联系使你在兴许学习其它东西时更加easy,了解一种知识可以使你跟其它知识进行比較和对照。
因此,学习总是实用的,不管学什么。
这还意味着焦虑地去寻找一种正确的框架或技术用来学习并没有想象中那么重要。
不不过由于所谓的正确的框架或技术非常难确定,而且在非常多情况下它们并非一開始就存在的。相反。寻找实用的知识显然更为简单。它们无所不在。
你或许可以学习一些看起来有趣的东西,即使它并非绝对正确的东西。
举个样例,我花费了数年时间学习多种 Ruby 技术而且利用 utm_source=TechCommunity&utm_medium=TechArticle&utm_term=ruby&utm_campaign=JulSoftArti&from=optcfijuru">Ruby
那么。这是否意味着我花费的那段时间一无所获?我不这么觉得。
那些技术不仅在当时非常实用,而且全部在当时学过的东西形成了我如今的编码风格。
我非常希望这样的情况也终于发生在我如今学习的工具上。
那么,怎样去摆脱因寻找正确框架所产生的焦虑感?在这里你最好还是去寻找或许此时并不那么实用的知识——寻找一篇有趣的计算机科学论文并探索当中的观点。或者花时间在并不能直接应用于所做之事的技术上。
你从这些地方得到的收益或许并不那么明显。但它们真实存在并会在不经意的地方显现。
临时摆脱激烈的框架选择也可以让人振奋。
4.学会学习
还有一种有效的方法是回归本源,只将时间花在学会学习上。为什么不练习解决这个问题这一过程本身,或者像刻意练习一样去研究技术。相似行为将有助于了解职业真正能带来什么。
这是 Rich Hickey 对此的看法:
你须要细致辨识事情的本质。精通编程不在于语言、范例、平台、构建模块、开源、会议等。
这些都是随着时间变化的基础知识。汲取知识的能力可以使你按需使用。我更愿意选择具备良好学习技巧和解决这个问题能力的程序猿,而不是不论什么时候只汲取浅显经验的程序猿。
就像学习新框架非常有价值,学会学习非常显然能获得更大的回报。善于学习和解决这个问题,将会使你遇到更少的麻烦,不论接下来你会须要什么样的新技术。
原文链接:Overcoming JavaScript Framework Fatigue
本文系 OneAPM project师编译整理。OneAPM 是应用性能管理领域的新兴领军企业,能帮助企业用户和开发人员轻松实现:缓慢的程序代码和 SQL 语句的实时抓取。想阅读很多其它技术文章。请訪问 OneAPM 官方博客。
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i ').text(i));
};
$numbering.fadeIn(1700);
});
});
怎样克服 JavaScript 框架疲劳?的更多相关文章
- 从零开始定义自己的JavaScript框架(一)
来自:http://www.ituring.com.cn/article/48461 1.1 模块的定义 一个框架想要能支撑较大的应用,首先要考虑怎么做模块化.有了内核和模块加载系统,外围的模块就可以 ...
- 转:Twitter.com在用哪些Javascript框架?
原文来自于:http://blog.jobbole.com/63964/ 我一直在研究twitter.com使用的一些UI框架.下面是这些框架的清单(大部分是Javascript框架).如果你发现有些 ...
- 从零开始编写自己的JavaScript框架(一)
1. 模块的定义和加载 1.1 模块的定义 一个框架想要能支撑较大的应用,首先要考虑怎么做模块化.有了内核和模块加载系统,外围的模块就可以一个一个增加.不同的JavaScript框架,实现模块化方式各 ...
- Twitter.com在用哪些Javascript框架?
我一直在研究 twitter.com 使用的一些 UI 框架.下面是这些框架的清单(大部分是 Javascript 框架).如果你发现有些框架 Twitter 已经没在使用了,请随时告诉我! 测试 J ...
- javascript 框架、根基技巧、布局、CSS、控件 JavaScript 类库
预筹备之 JavaScript 今朝支流的 JavaScript 框架排名中,jQuery 和 Ext 可算是佼佼者,得到了用户的普遍好评.海内的一些框架许多也是模仿 jQuery 对 JavaScr ...
- 顶级的JavaScript框架、库、工具及其使用
几乎每隔一个星期,就有一个新的 JavaScript 库席卷网络社区!Web 社区日益活跃.多样,并在多个领域快速成长.想要研究每一个重要的 JavaScript 框架和库,是个不可能完成的任务.接下 ...
- JavaScript框架设计(三) push兼容性和选择器上下文
JavaScript框架设计(三) push兼容性和选择器上下文 博主很久没有更博了. 在上一篇 JavaScript框架设计(二) 中实现了最基本的选择器,getId,getTag和getClass ...
- JavaScript框架设计(四) 字符串选择器(选择器模块结束)
JavaScript框架设计(四) 字符串选择器(选择器模块结束) 经过前面JavaScript框架设计(三) push兼容性和选择器上下文的铺垫,实现了在某一元素下寻找,现在终于进入了字符串选择器 ...
- 偶的《javascript框架设计》终于出版
#cnblogs_post_body p{ text-indent:2em!important; } 历时两年多,我的书终于付梓出版了.应各方面的要求,写软文一篇,隆重介绍一下此书对各位程序员的钱途有 ...
随机推荐
- UIImageView 的 contentMode
UIViewContentModeScaleToFill, // 按设置尺寸 - 填充 UIViewContentModeScaleAspectFit, // 按设置尺寸 - 等比例填充, 有边界 U ...
- vs2010 使用SignalR 提高B2C商城用户体验(一)
vs2010 使用SignalR 提高B2C商城用户体验(一) 1.需求简介,做为新时代的b2c商城,没有即时通讯,怎么提供用户粘稠度,怎么增加销量,用户购物的第一习惯就是咨询,即时通讯,应运而生.这 ...
- Android Animation
Android中常用两种动画模式,tween animation和frame animation,即补间动画和帧动画,但在android3.0中又引入了一个新的动画系统:property animat ...
- 23个移动app界面上的旋钮和刻度盘设计示例
摘要: 从最初进入电子设备领域,旋钮和刻度盘的由最初的功能性设计转变为时尚的外观设计元素,比如在移动app中.这种转变并意外,旋钮和刻度盘不需要占用移动设备的太多空间,并可以简单地为用户提供一些列 ...
- Android源码之Matrix
Matrix类在Android中主要用来进行矩阵变换,其可操作的对象包括图像.点阵.Vector(向量).矩形等. Matrix支持的变换类型主要有以下几种: 1.Translate:平移变换 2.R ...
- poj1286
等价类计数问题,我们就先构造置换群 显然置换分为两种类型,旋转和翻折 先考虑旋转,每旋转i格子,这个置换的循环数为gcd(i,n); (1<=i<=n) 为什么是这个范围,下篇报告再说 翻 ...
- VS2010中 为图片添加背景图片
很简单的东西,嘿嘿 void CTestDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage( ...
- 【Android 开源】:最火的Android开源项目 第01期
GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要.利用这些项目,有时能够让你 ...
- 畅通工程 HDOJ--1863
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU-1686 Oulipo
学习:重点理解这句话的意思: next[j]会告诉我们从哪里开始匹配 模板题. Oulipo Time Limit: 3000/1000 MS (Java/Others) Memory ...