2016年前端开发学习计划

2015年,软件开发界发生了不少变化。有不少流行的新语言发布了,也有不少重要的框架和工具发布了新版本。下面有一个咱们以为最重要的简短清单,同时也有咱们以为值得你在2016年花时间精力去学习的新事物的一些建议。
点击访问小莫的githubjavascript

1、开发工具

1. atom

Atom 代码编辑器支持 Windows、Mac、Linux 三大桌面平台,彻底免费,而且已经在 GitHub 上开放了所有的源代码。在通过一段长时间的迭代开发和不断改进后,Atom 终于从早期的测试版达到了 1.0 正式版了!相比以前的版本,在性能和稳定性方面都有着显著的改善。css

2. idea

IDEA 全称IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤为在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能能够说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。html

3. webpack

webpack是近期最火的一款模块加载器兼打包工具,它能把各类资源,例如JS(含JSX)、coffee、样式(含less/sass)、图片等都做为模块来使用和处理。前端

4. gulp

Gulp.js 是一个自动化构建工具,开发者可使用它在项目开发过程当中自动执行常见任务。Gulp.js 是基于 Node.js 构建的,利用 Node.js 流的威力,你能够快速构建项目...html5

5. lodash

lodash一开始是Underscore.js库的一个fork,由于和其余(Underscore.js的)贡献者意见相左。John-David Dalton的最初目标,是提供更多“一致的跨浏览器行为……,并改善性能”。以后,该项目在现有成功的基础之上取得了更大的成果。最近lodash也发布了3.5版,成为了npm包仓库中依赖最多的库。它正在摆脱屌丝身份,成为开发者的常规的选择之一。java

6. fetch

对于 AJAX,如今通常都是使用各类框架实现,其本质是 XMLHttpRequest。使用过原生XMLHttpRequest的人都知道,这种方法实现起来不太方便。如今,咱们有了新的选择:Fetch API。node

7. Electron

Electron 框架的前身是 Atom Shell,可让你写使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序。它是基于io.js 和 Chromium 开源项目,并用于在 Atom 编辑器中。Electron 是开源的,由 GitHub 维护,有一个活跃的社区。最重要的是,Electron 应用服务构建和运行在 Mac,Windows 和 Linux。mysql

2、javascript框架

1. angular2

跨平台开发

学习如何基于 Angular 构建应用程序,并复用代码和技能来构建适用于全部平台的应用。好比: Web 应用、移动 Web 应用、原生移动应用和原生桌面应用等。react

速度与性能

经过 Web Worker 和服务端渲染,达到在现在 ( 以及将来)的 Web 平台上所能达到的最高速度。
Angular 让你有效掌控可伸缩性。基于 RxJS 、 Immutable.js 和其它推送模型,能适应海量数据需求。jquery

美妙的工具

使用简单的声明式模板,快速实现各类特性。使用自定义组件和大量现有组件,扩展模板语言。在几乎全部的 IDE 中得到针对 Angular 的即时帮助和反馈。全部这一切,都是为了帮助你编写漂亮的应用,而不是绞尽脑汁的让代码“能用”。

2. react+redux

React+Redux很是精炼,良好运用将发挥出极强劲的生产力。但最大的挑战来自于函数式编程(FP)范式。在工程化过程当中,架构(顶层)设计将是一个巨大的挑战。要否则作出来的东西多是一团乱麻。说到底,传统框架与react+redux就是OO与FP编程范式的对决。

3. jquery

JQuery是继prototype以后又一个优秀的Javascript库。它是轻量级的js库 ,它兼容CSS3,还兼容各类浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及后续版本将再也不支持IE6/7/8浏览器。

4. antd

Ant Design 是蚂蚁金服开发和正在使用的一套企业级的前端设计语言和基于 React 的前端框架实现。企业级金融产品的交互语言和视觉体系。丰富实用的 React UI 组件。基于 React 的组件化开发模式。背靠 npm 生态圈。基于 webpack 的调试构建方案,支持 ES6。

3、node相关技术

1. npm

NPM(node package manager),一般称为node包管理器。顾名思义,它的主要功能就是管理node包,包括:安装、卸载、更新、查看、搜索、发布等。

2. express

Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你建立各类 Web 和移动设备应用。

3. koa2

koa 是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。使用 koa 编写 web 应用,经过组合不一样的 generator,能够免除重复繁琐的回调函数嵌套,并极大地提高错误处理的效率。koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得驾轻就熟。

4. rxjs

是一组库使用可观察到的集合和阵列、演员风格组成,组成异步和基于事件的程序。

5. zonejs

在ng2的开发过程当中,Angular团队为咱们带来了一个新的库 – zone.js。zone.js的设计灵感来源于Dart语言,它描述JavaScript执行过程的上下文,能够在异步任务之间进行持久性传递,它相似于Java中的TLS(thread-local storage: 线程本地存储)技术,zone.js则是将TLS引入到JavaScript语言中的实现框架。

4、设计模式

1. javascript设计模式

5、编程语言

1. javascript

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,普遍用于客户端的脚本语言,最先是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增长动态功能。

2. ecmscript6

ES6是继ES5以后的一次主要改进,语言规范由ES5.1时代的245页扩充至600页。ES6增添了许多必要的特性,例如:模块和类,以及一些实用特性,例如Maps、Sets、Promises、生成器(Generators)等。尽管ES6作了大量的更新,可是它依旧彻底向后兼容之前的版本,标准化委员会决定避免由不兼容版本语言致使的“web体验破碎”。结果是,全部老代码均可以正常运行,整个过渡也显得更为平滑,但随之而来的问题是,开发者们抱怨了多年的老问题依然存在。

3. typesript

typescript是JavaScript的超集。TypeScript是JavaScript类型的超集,它能够编译成纯JavaScript。TypeScript能够在任何浏览器、任何计算机和任何操做系统上运行,而且是开源的。

6、数据存储

1. mysql

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

2. mongodb

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

3. redis

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

4. cookie

Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(一般通过加密)

5. access token

Windows操做系统安全性的一个概念。一个访问令牌包含了此登录会话的安全信息。当用户登录时,系统建立一个访问令牌,而后以该用户身份运行的的全部进程都拥有该令牌的一个拷贝。该令牌惟一表示该用户、用户的组和用户的特权。系统使用令牌控制用户能够访问哪些安全对象,并控制用户执行相关系统操做的能力。有两种令牌:主令牌和模拟的令牌。主令牌是与进程相关的;模拟的令牌是与模拟令牌的线程相关的。

7、html5+css3

1. html5

HTML5是HTML最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定。
HTML5的设计目的是为了在移动设备上支持多媒体。
HTML5 简单易学。

2. ejs

EJS是一个JavaScript模板库,用来从JSON数据中生成HTML字符串。引入EJS 建立一个模板 使用视图工具组件 与最初的JavaScript相比较,一些不太了解你的代码的人能够更容易地经过EJS模板代码看得懂你的代码。 让咱们放松一下,一块儿来享受下使人激动的干净简洁的感受。

3. canvas

TML5 <canvas> 标签用于绘制图像(经过脚本,一般是 JavaScript)。不过,<canvas> 元素自己并无绘制能力(它仅仅是图形的容器) - 您必须使用脚原本完成实际的绘图任务。getContext() 方法可返回一个对象,该对象提供了用于在画布上绘图的方法和属性。

4. css3

CSS3是CSS技术的一个升级版本,是由Adobe、Systems、Apple、Google、HP、IBM、Microsoft、Mozilla、Opera、Sun Microsystems 等许多WEB界的巨头联合组织的一个名为 “CSS Working Group” 的组织共同协商策划的。虽然目前不少细节还在讨论之中,但它仍是不断地朝前发展着。2010年在HTML5成为IT界人士关注的焦点的同时,它也开始慢慢地普及开来。

5. sass

SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护。

6. postcss

PostCSS 是使用 JS 插件来转换 CSS 的工具,支持变量,混入,将来 CSS 语法,内联图像等等。
PostCSS 已经被许多大公司使用:谷歌,推特,阿里巴巴和 Shopify。 Autoprefixer PostCSS 插件是最流行的 CSS 处理器插件之一。

7. 白鹭引擎

白鹭引擎是一个开源的、跨平台的手机游戏开发引擎,你能够快速地建立HTML5类型的移动游戏,也能够将游戏项目编译输出成为目标移动平台的原生游戏应用。

8、算法和数据结构

1. 线型查找

在一列给定的值中进行搜索,从一端开始逐一检查每一个元素,直到找到所需元素的过程。线性查找又称为顺序查找·若是查找池是某种类型的一个表,好比一个数组,简单的查找方法是从表头开始,一次将每个值与目标元素进行比较,最后,或者查找到目标,或者达到表尾,而目标不存在于组中,这个方法称为线性查找。

2. 二分查找

二分查找又称折半查找,优势是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。所以,折半查找方法适用于不常常变更而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,若是二者相等,则查找成功;不然利用中间位置记录将表分红前、后两个子表,若是中间位置记录的关键字大于查找关键字,则进一步查找前一子表,不然进一步查找后一子表。重复以上过程,直到找到知足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

3. 冒泡排序

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,若是他们的顺序错误就把他们交换过来。走访数列的工做是重复地进行直到没有再须要交换,也就是说该数列已经排序完成。

4. 选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工做原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到所有待排序的数据元素排完。 选择排序是不稳定的排序方法(好比序列[5, 5, 3]第一次就将第一个[5]与[3]交换,致使第一个5挪动到第二个5后面)。

5. 插入排序

插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到所有插入完为止。

6. 字符串反转

var str = '123';
var newStr = str.split("").reverse().join("");
alert(newStr);

7. 搜索算法

搜索算法是利用计算机的高性能来有目的的穷举一个问题解空间的部分或全部的可能状况,从而求出问题的解的一种方法。搜索算法其实是根据初始条件和扩展规则构造一棵“解答树”并寻找符合目标状态的节点的过程。

8. 贪心算法

贪心算法(又称贪婪算法)是指,在对问题求解时,老是作出在当前看来是最好的选择。也就是说,不从总体最优上加以考虑,他所作出的是在某种意义上的局部最优解。贪心算法不是对全部问题都能获得总体最优解,关键是贪心策略的选择,选择的贪心策略必须具有无后效性,即某个状态之前的过程不会影响之后的状态,只与当前状态有关。

9. tween算法

Flash作动画时会用到Tween类,利用它能够作不少动画效果,例如缓动、弹簧等等。

10. javascript算法库

9、测试框架

1. mocha

mocha 是一个简单、灵活有趣的 JavaScript 测试框架,用于 Node.js 和浏览器上的 JavaScript 应用测试。Mocha 是具备丰富特性的 JavaScript 测试框架,能够运行在 Node.js 和浏览器中,使得异步测试更简单更有趣。Mocha 能够持续运行测试,支持灵活又准确的报告,当映射到未捕获异常时转到正确的测试示例。

2. karma

Karma是Testacular的新名字,在2012年google开源了Testacular,2013年Testacular更名为Karma。Karma是一个让人感到很是神秘的名字,表示佛教中的缘分,因果报应,比Cassandra这种名字更让人猜不透!Karma是一个基于Node.js的JavaScript测试执行过程管理工具(Test Runner)。该工具可用于测试全部主流Web浏览器,也可集成到CI(Continuous integration)工具,也可和其余代码编辑器一块儿使用。这个测试工具的一个强大特性就是,它能够监控(Watch)文件的变化,而后自行执行,经过console.log显示测试结果。

3. jasmine

Jasmine (茉莉)是一款 JavaScript BDD(行为驱动开发)测试框架,它不依赖于其余任何 JavaScript 组件。它有干净清晰的语法,让您能够很简单的写出测试代码。对基于 JavaScript 的开发来讲,它是一款不错的测试框架选择。

4. chai

Chai 是一个针对 Node.js 和浏览器的行为驱动测试和测试驱动测试的诊断库,可与任何 JavaScript 测试框架集成。

5.Qunit

该框架诞生之初是为了jquery的单元测试,后来独立出来再也不依赖于jquery自己,可是其身上仍是脱离不开jquery的影子

6. should.js:

TJ的另一个开源贡献

7. expect.js

BDD风格的另一个断言库,基于should.js,是mini版的BDD库

8. assert

node自带核心模块: 能够在node中使用的断言模块

10、重构

1. 命名

模块划分和命名空间

2. 加载

js的动态加载

3. 测试

Javascript的测试

4. 编码

Javascript编码规则

5. 闭包

利用原型/闭包开发组件

6. 继承

利用继承来作事

7. 重用

重用老代码

8. 检测

JSDoc和JSLint

9. 框架

自定义JavaScript产品框架

10. 强化

强化对象封装和模块封装

相关文章
相关标签/搜索