英文原文:Things to learn for Modern Web Development
将近 4 年前,我写了一篇名为《Future of Web and Mobile: HTML5, CSS3 and Javascript》的博客文章,其中我提到了 Javascript 的出现,以及 JavaScript 框架,例如 jQuery、Knockout 等的爆发。
快进到现在,我发现现代 web 开发再一次将发生压倒性的改变。信息资讯的铺天盖地令人迷惑,尤其对于初学者而言。首要原因是新的框架,例如 Angular 2 和 ReactJs 出现了,使用了尚未完全定型的 ECMAScript 6 特性。并且有更多的工具可用于转换 ES6 代码为普通的旧的 JavaScript 代码,也就是 ES5。
我概括了一系列我们应该学习的编程语言/工具,以便于理解势不可挡和快速变化的现代 web 开发。
JavaScript
这是唯一一种所有浏览器都理解的编程语言,并且它是前端开发的支柱。JavaScript 也被称为 ECMAScript,ES 5。在深入其他语言之前好好理解这门编程语言非常重要。
ES6
这是 Javascript 语言的扩展,而且许多浏览器正在实现 ES6。好处是哪怕是现在,你也可以开始编写 ES6 代码,因为你可以使用 transpiler(转译器)如 Babel 来转换 ES6 代码为 ES5 代码。经历这些并了解新功能是一件好事。不过,没有不要钻研得太深因为它们很容易发生变化。
Babel
这是最流行的 ES6 到 ES5 转译器之一。此外,它还被许多框架,如 React 所推荐。要想实时地将 ES6 转换为 ES5 代码,在 https://babeljs.io/repl/有一个可用的 REPL。
需要注意的是 Babel 不仅仅是 ES6 到 ES5 的转译器。它也是 JSX 到 JavaScript 的转译器。不知道什么是 JSX?那么请看下面。
NodeJS
NodeJS 是一个服务器端平台,它允许你用 JavaScript 语言构建后端。为什么我要提 NodeJS 呢?这是因为,即使你对后端开发不感兴趣,但是许多前端工具依赖于 NodeJS。至少要熟悉 node 和它的命令行工具。
NPM
NPM 是 node 的软件包管理器。就像 pip 之于 Python,ruby gems 之于 Ruby,以及 Maven 之于 Java。了解如何安装/删除/升级软件包,尤其是 package.json 文件结构。
Grunt 或 Gulp
这两个是运行在 Node 平台上最为流行的任务运行器。从技术上讲,它们是针对 npm 的软件包。它们允许你自动化许多前端任务,如 Lint 源文件,串联,缩减,部署以及更多。
Bower
这是用于前端库本身的一个软件包管理工具。想添加 Jquery 到你的应用程序?和使用bower install jquery
一样容易。
上述工具用于基本的前端开发已经足够。不过下面我还要说一说两个最流行的框架,即 React 和 Angular。
ReactJs
ReactJs 是构建视图最流行的前端库。请注意,它不仅仅是 MVC 中的V,因此和框架如 Angular 没有比较性。ReactJs 是用 ES6 写的,并且可以用 Babel 转译为 ES5。它还使用也可以用 Babel 转译为 JavaScript 的 JSX。
WebPack 或 Browserify
这两个都是最流行的模块打包机。它们可以获取 js 源代码,找出正确的依赖关系,并发出可以驱动整个应用程序的 JavaScript 文件。我更喜欢 WebPack。点此查看关于 WebPack。
Flux 或 Redux
React 组件被布置在一个层次结构中。大部分时间,数据模型遵循层次结构。在这种情况下,Flux 并不怎么有用。然而,有时候你的数据模型是不分层的。当你的 React 组件开始接收外部道具,或你有少量的组件开始变得非常复杂的时候,那么你可能会想要试试 Flux。
Immutable.js
Immutable.js 提供了一套数据结构,可以帮助解决在构建 React app 时的某些性能问题。这是一个伟大的库,你可能会在你的 app 中大量使用它,但是当你关注于性能影响时,它就完全没用了。
Angular 2
Angular 2 是 JavaScript 中最流行的 MVC 框架之一的下一个版本。它被完全重新设计过了,并且有一条陡峭的学习曲线。全面支持双向数据绑定。在选择 Angular 2 开发时要小心评估。
TypeScript
Angular 2 推荐 TypeScript 作为编程语言的首选。我不是很熟悉 TypeScript,但我认为它增加了静态类型到 Javascript 的动态特性中。最后,我相信它只是一个转译器。
Service workers
实验性的 API。它就像是在浏览器用于做各种工作的一个后台线程。我想它也增加对离线浏览的支持。
Fetch API 和 Push API
请自行阅读链接。因为到目前为止我自己对此也是知之甚少。
-
译文链接:http://www.codeceo.com/article/15-teches-web-developer-need.html
翻译作者:码农网 – 小峰