【编者按】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 和 Rails 做 App,而在今天我用不到它们,甚至不确定以后是否会用。

那么。这是否意味着我花费的那段时间一无所获?我不这么觉得。

那些技术不仅在当时非常实用,而且全部在当时学过的东西形成了我如今的编码风格。

我非常希望这样的情况也终于发生在我如今学习的工具上。

那么,怎样去摆脱因寻找正确框架所产生的焦虑感?在这里你最好还是去寻找或许此时并不那么实用的知识——寻找一篇有趣的计算机科学论文并探索当中的观点。或者花时间在并不能直接应用于所做之事的技术上。

你从这些地方得到的收益或许并不那么明显。但它们真实存在并会在不经意的地方显现。

临时摆脱激烈的框架选择也可以让人振奋。

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 = $('

    ').addClass('pre-numbering').hide();
    $(this).addClass('has-numbering').parent().append($numbering);
    for (i = 1; i ').text(i));
    };
    $numbering.fadeIn(1700);
    });
    });

怎样克服 JavaScript 框架疲劳?的更多相关文章

  1. 从零开始定义自己的JavaScript框架(一)

    来自:http://www.ituring.com.cn/article/48461 1.1 模块的定义 一个框架想要能支撑较大的应用,首先要考虑怎么做模块化.有了内核和模块加载系统,外围的模块就可以 ...

  2. 转:Twitter.com在用哪些Javascript框架?

    原文来自于:http://blog.jobbole.com/63964/ 我一直在研究twitter.com使用的一些UI框架.下面是这些框架的清单(大部分是Javascript框架).如果你发现有些 ...

  3. 从零开始编写自己的JavaScript框架(一)

    1. 模块的定义和加载 1.1 模块的定义 一个框架想要能支撑较大的应用,首先要考虑怎么做模块化.有了内核和模块加载系统,外围的模块就可以一个一个增加.不同的JavaScript框架,实现模块化方式各 ...

  4. Twitter.com在用哪些Javascript框架?

    我一直在研究 twitter.com 使用的一些 UI 框架.下面是这些框架的清单(大部分是 Javascript 框架).如果你发现有些框架 Twitter 已经没在使用了,请随时告诉我! 测试 J ...

  5. javascript 框架、根基技巧、布局、CSS、控件 JavaScript 类库

    预筹备之 JavaScript 今朝支流的 JavaScript 框架排名中,jQuery 和 Ext 可算是佼佼者,得到了用户的普遍好评.海内的一些框架许多也是模仿 jQuery 对 JavaScr ...

  6. 顶级的JavaScript框架、库、工具及其使用

    几乎每隔一个星期,就有一个新的 JavaScript 库席卷网络社区!Web 社区日益活跃.多样,并在多个领域快速成长.想要研究每一个重要的 JavaScript 框架和库,是个不可能完成的任务.接下 ...

  7. JavaScript框架设计(三) push兼容性和选择器上下文

    JavaScript框架设计(三) push兼容性和选择器上下文 博主很久没有更博了. 在上一篇 JavaScript框架设计(二) 中实现了最基本的选择器,getId,getTag和getClass ...

  8. JavaScript框架设计(四) 字符串选择器(选择器模块结束)

    JavaScript框架设计(四) 字符串选择器(选择器模块结束) 经过前面JavaScript框架设计(三) push兼容性和选择器上下文的铺垫,实现了在某一元素下寻找,现在终于进入了字符串选择器 ...

  9. 偶的《javascript框架设计》终于出版

    #cnblogs_post_body p{ text-indent:2em!important; } 历时两年多,我的书终于付梓出版了.应各方面的要求,写软文一篇,隆重介绍一下此书对各位程序员的钱途有 ...

随机推荐

  1. AppStore 审核中文版 --- 程序员必看

    App Store审核指南中文版(2014.10.11更新) 2014-11-03 程序猿 苹果在9月3日对App Store审核指南进行了重大更新,新添加了扩展.HealthKit.HomeKit以 ...

  2. Pentaho Data Integration Step: BD Procedure Call

    官网连接:http://wiki.pentaho.com/display/EAI/Call+DB+Procedure 描述 调用数据库存储过程步骤允许用户执行一个数据库存储过程,并且得到结果.存储过程 ...

  3. Java多线程初学者指南(8):从线程返回数据的两种方法

    从线程中返回数据和向线程传递数据类似.也可以通过类成员以及回调函数来返回数据.但类成员在返回数据和传递数据时有一些区别,下面让我们来看看它们区别在哪. 一.通过类变量和方法返回数据 使用这种方法返回数 ...

  4. python之---类和实例

    类和实例: 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但 ...

  5. ubuntu service

    http://blog.chinaunix.net/uid-21528208-id-2399656.html

  6. RTP

    RTP学习(三)RTP/RTCP/RTSP数据包格式 h264RTP打包描述的较为详细(含SDP中sps等信息的描述) UDP.TCP.RTP三种协议的总结 http://super-and-star ...

  7. Programming in lua 环境

    Lua 用一个名为environment 普通的表来保存所有的全局变量.(更精确的说,Lua在一系列的environment 中保存他的“global”变量,但是我们有时候可以忽略这种多样性)这种结果 ...

  8. bzoj2285

    完全是为了拼凑才出出来的吧先分数规划求出到基地入口的最小安全系数然后再最小点权覆盖集,只不过这里是带一定精度实数的流,其实是一样的 ; eps=0.001; type way=record po,ne ...

  9. POJ_3579_Median_(二分,查找第k大的值)

    描述 http://poj.org/problem?id=3579 给你一串数,共C(n,2)个差值(绝对值),求差值从大到小排序的中值,偶数向下取. Median Time Limit: 1000M ...

  10. 12篇学通C#网络编程

    转自:http://www.cnblogs.com/huangxincheng/archive/2012/01/03/2310779.html 在C#的网络编程中,进程和线程是必备的基础知识,同时也是 ...