【编者按】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. Android手机上监听短信的两种方式

    Android手机上监听短信有两种方式: 1. 接受系统的短信广播,操作短信内容. 优点:操作方便,适合简单的短信应用. 缺点:来信会在状态栏显示通知信息. AndroidManifest.xml: ...

  2. [wikioi]最长严格上升子序列

    http://wikioi.com/problem/1576/ 经典的动态规划.我写了个o(n^2)的DP方法. PPT:http://wenku.baidu.com/view/bd290294dd8 ...

  3. ANDROID_MARS学习笔记_S04_001_OAuth简介

    一.OAuth简介

  4. hadoop伪分布安装

    解压 将安装包hadoop-2.2.0.tar.gz存放到/home/haozhulin/install/目录下,并解压 #将hadoop解压到/home/haozhulin/install路径下,定 ...

  5. android-86-Can't create handler inside thread that has not called Looper.prepare()

    以下是Android API中的一个典型的Looper thread实现: //Handler不带参数的默认构造函数:new Handler(),实际上是通过Looper.myLooper()来获取当 ...

  6. Oracle正则表达式

       Oracle正则表达式 正则表达式具有强大.便捷.高效的文本处理功能.能够添加.删除.分析.叠加.插入和修整各种类型的文本和数据.Oracle从10g开始支持正则表达式. 下面通过一些例子来说明 ...

  7. c#4.0新特性之协变与逆变

    1.C#3.0以前的协变与逆变 如果你是第一次听说这个两个词,别担心,他们其实很常见.C#4.0中的协变与逆变[1](Covariance and contravariance)有了进一步的完善,主要 ...

  8. web调试工具

    Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说,都有很大 ...

  9. 卸载系统自带的JDK的脚本并再次安装

    卸载系统自带的JDK的脚本并安装1.6.0.32版本的jdk #!/bin/bash homefile=/usr/local/java cd $homefile homelist=`sudo rpm ...

  10. MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验

    原文地址:http://liangweilinux.blog.51cto.com/8340258/1728131 首先在此感谢下我的老师年一线实战经验,我当然不能和我的老师平起平坐,得到老师三分之一的 ...