JavaScript 的普及造就了一个非常活跃的技术,框架和库的生态系统。 这个生态系统不断涌现多式多样的框架和技术,对许多人来说都是高度的混乱。 那么你应该关注什么样的技术呢?
你应该在哪里方面投入时间来获得最大收益呢? 目前公司招聘哪些技术栈呢? 哪些技术增长潜力最大呢?
现在最重要的技术是什么?这篇文章高度概括了你需要知道的内容,你可以通过文章中的链接了解所有关于它的一些信息。
记住,当你在学习一些实际的代码时,您可以在 Codepen.io 上交互式地执行代码。如果你还在学习 ES6 ,您可以看看如何使用 Babel REPL 进行转译。
这个列表很长,但不要气馁。你可以做到! 在看这个清单列表时,如果你担心你将如何学习所有构建现代应用程序所需知识,那么建议你先阅读一下 "为什么我要感谢 JavaScript 疲劳" 。然后静下心来,开始学习和工作。
有些东西严格的说是 可选的 * ,这意味着,如果您对他们感兴趣,我推荐它们,或者你的工作需要了解它们,但你不应该觉得必须去学习它们。任何标有星号的东西 (例如: example*) 都是可选的。
任何没有带
的东西都应该学习,但是不要觉得要学习一切或知道一切。应该有一个很好的认知,不一定需要成为一名各个领域都出众的专家。
- *
在尝试以 Javscript 为生,进行工作之前,您应该对 Javascript 的基础知识有深刻的了解:
方法附加回调,这个回调将在 promise resolves 时运行。resolved 值被传递到你的回调函数中,例如:
- .then()
- doSomething().then(value => console.log(value));
- const doSomething = (err) = >new Promise((resolve, reject) = >{
- if (err) return reject(err);
- setTimeout(() = >{
- resolve(42);
- },
- 1000);
- });
- const log = value = >console.log(value);
- // 使用返回的 promises
- doSomething().then(
- // 当 resolve 时:
- log, // logs 42
- // 当 reject 时(resolve 时不会调用)
- log);
- // 记得处理错误哦!
- doSomething(new Error('oops')).then(log) // not called this time
- .
- catch(log); // logs 'Error: oops'
导入
- lodash/fp
功能模块。
- data-last
React 是个专注于构建用户界面的 JavaScript 库,由 Facebook 创建。它基于单向数据流的设计思想,也就意味着对于每个更新周期:
这种单向数据流与双向数据绑定形成对比,其中对 DOM 的改变可以直接更新数据(例如,如在 Angular 1 和 Knockout 的情况下)。 使用双向绑定,在 DOM 渲染过程(称为 Angular 1 中的摘要循环)中对 DOM 的 更改可能会在绘制完成之前重新触发绘图阶段,从而导致回流和重绘 – 从而降低性能。
React 没有规定数据管理系统,但推荐使用基于 Flux 的方法。 React 的单向数据流方法借鉴了函数式编程和不可变数据结构的思想,改变了我们对前端框架架构的思考方式。
有关 React&Flux 架构的更多信息,请阅读 "The Best Way to Learn to Code is to Code: Learn App Architecture by Building Apps"。
Redux 为应用程序提供事务性,确定性的状态管理支持。在 Redux 中,我们遍历操作对象流,以减少到当前应用程序状态。要了解为什么这很重要,请阅读 "10 Tips for Better Redux Architecture"。要开始使用 Redux,请查看 Redux 创建者 Dan Abramov 的优秀课程:
Redux 是强制性学习,即使你从未使用 Redux 作为实际项目。
为什么?因为它会给你很多实践,并告诉你纯函数的价值所在,并教你如何将通用函数 reducers,这是一种通用的函数,用于遍历数据集合并从中提取一些值。Reducers 通常是非常有用的,以至于 Array.prototype.reduce 已添加到 JS 规范。
Reducers 不仅仅对于数组是重要的,同时学习使用 Reducers 的新方法本身也是有价值的。
Angular 2 是 Google 广受欢迎的 Angular 框架的继承者。 因为它疯狂的人气,掌握它会使简历看起来很棒 —— 但我仍旧建议优先学习 React 。
我喜欢 React 超过 Angular 2+,因为:
为此,我推荐学习 React,但我认为 Angular 2+ 严格可选 *。 如果你对 Angular 2+ 有强烈的偏好,那么你可以随意选择 React 或者 Angular 2+。 首先学习 Angular 2+,并考虑 React 可选。 这两种情况都会让你受益,并且在你的简历上看起来很不错。
无论你选择哪一个,尽量将精力集中学习和使用你所选择的那个,至少 6 个月 – 1 年后,再去学习另一个。 真正掌握它们需要很多实践。
RxJS 是 JavaScript 的响应式编程实用程序的集合。就好比流处理领域的 Lodash 。它把响应式编程带入到了 JavaScript 领域。ECMAScript Observables 提案是第一阶段草案,而 RxJS 5+ 是规范标准的实现。
虽然我个人非常喜欢 RxJS ,如果你想在工程中使用使用整个 RxJS 的话,包体积可能很大(因为其内置了很多的 Operators )。你可以使用部分引入来解决这个问题:
- import {
- Observable
- }
- from 'rxjs/Observable';
- // then patch import only needed operators:
- import 'rxjs/add/operator/map';
- import 'rxjs/add/observable/from';
- const foo = Observable.from([1, 2, 3]);
- foo.map(x = >x * 2).subscribe(n = >console.log(n));
使用部分导入可以将您的 bundle 中的 rxjs 依赖关系减小约 200k 。 对于 web 项目来说这个减少已经很大了。 这将使您的应用程序更快。
很多人问我,"为什么没有列举出他们喜欢的框架?" 因为其中一个重要标准是,"在工作中能被真正的用上"。
是的,这是一个人气竞赛,但当你在思考学习的时间投入在什么上时,了解一个框架的时机变得格外重要。
为了回答这个问题,我看了一些关键指标。 首先,Google 趋势。 如果您想重现此 Google 趋势图,请记住按主题而不是关键字进行选择,因为其中几个字词会带来大量的假阴性。 换句话说,这些是以主题为主的趋势,而不是关键字搜索:
这告诉我们人们对各个项目的相对兴趣度。 如果人们正在搜索它们,那么它们很可能正在搜索他们选择的项目,或寻找帮助或文档。 这是一个相对合理的评价指标。
另一个很好的数据来自 Indeed.com ,它聚合不同站点上对于不同职位的开发者的招聘信息。 近几年招聘信息急剧下降,但他们仍然收集足够多的数据,可以看出目前招聘上对于前端开发者技能需求的情况为:
要重现这些发现,搜索
即可。 要重现这些发现,请搜索 javascript 并将该位置留空。你可以清楚地看到:
- 框架名称 javascript
Angular 和 React: 遥遥领先 (除了 jQuery,它用于所有网站 – 包括非应用程序的巨大份额 – 因为它被几乎所有的遗留系统使用,包括流行的 CMS 系统,如 WordPress)。
你可能会看到 Angular 在这些列表中比 React 有显着的优势。 为什么我依然推荐优先学习 React? 因为:
换句话说,React 赢得了社区活跃和用户体验度,如果过去一年半的趋势继续保持,React 有一个非常明显的机会,来代替 Angular 成为主导的前端框架。
Angular 2 拥有改变这个局面的机会,所以 Angular 可以卷土重来,但到目前为止,React 正在处于优势一面。
vue.js * 在 GitHub 上有大量的 stars 和 下载。如果继续下去,它将在 2017 年能做得更好,但我认为在未来的一年左右的时间里,我不认为它不会超越 React 或 Angular(两者都快速增长)。建议学习了 React 或 Angular 后学习 vue.js 。
MobX * 是一个很棒的数据管理库,已成为 Redux 的流行替代品。它也在快速增长,我预计在 2017 年会更好。对于大多数应用来说,我更喜欢 Redux,但在某些情况下,MobX 是更好的选择。例如,如果页面上有成千上万个动态 DOM 对象,MobX 可能会表现得更好。另外,如果你的应用程序工作流都很简单,而且你不需要事务性的、确定性的状态,那么你可能就不需要 Redux 了。MobX 无疑是一个更简单的解决方案。建议你在学习了 Redux 之后,再学习 MobX 。
来源: http://www.css88.com/archives/7559