Logo
Section 1 / 6

客户端的 JavaScript

了解从客户端角度出发,JavaScript 是一项重要的技术。

检查点

客户端的 JavaScript

了解从客户端角度出发,JavaScript 是一项重要的技术。

客户端开发:

JavaScript 明显是客户端开发的首选语言。让我们先停下来思考一下:什么是客户端?

客户端 开发关注的是编写在用户浏览器中运行的代码。

在20世纪90年代和21世纪初,JavaScript 只是一个能对静态网页元素进行“动画”的小工具语言。这些动画被称为 动态行为。

## 动画与渲染: > 在计算机科学中,***动画*** 是指在屏幕上移动一个对象的过程。在移动过程中,对象的特征可能会发生变化,这意味着被动画化的对象可能以不同的颜色、不同的大小呈现;在三维动画的情况下,我们还可能从不同角度看到该对象。

Course Image

在某一时刻将对象显示在屏幕上的过程称为 渲染。动画也可以定义为持续地在屏幕上渲染一个对象,同时其属性(包括位置)不断变化。

JavaScript 简史

“二十年前,JavaScript 在软件开发行业中并不流行。许多所谓的‘开发者’根本不清楚自己在做什么,只是复制粘贴代码片段来给网站添加一些动态行为。这些片段经常相互冲突,因为它们使用了相同的变量。”

AJAX 编程

当 AJAX 编程(异步 JavaScript 和 XML)开始普及后,JavaScript 的受欢迎程度显著提升。2006 年,XMLHttpRequest 对象被标准化,这意味着你可以向服务器发送请求并等待响应。一旦响应到达,你就可以在不重新加载页面的情况下显示结果。这项技术在网站上如同魔法一般,因为在那之前,每次与服务器的交互都需要完整刷新页面。而页面刷新可能需要数秒时间,因此消除页面刷新的需求是一次重大突破。

JavaScript 社区逐渐壮大,但我们面临另一个问题:为了使代码在所有主流浏览器中正常运行,必须为不同浏览器编写不同的代码。有时情况混乱不堪。因此,编写 JavaScript 代码需要成为某个领域的专家。

jQuery

不过这种情况没有持续太久。2006 年,另一个重要里程碑出现:库 jQuery 正式发布,口号是“写得更少,做得更多”。不再需要编写数十行代码来兼容各种浏览器,jQuery 提供了一行命令即可实现相同效果。你无需成为专业的软件开发人员也能编写 JavaScript 代码。只需引入 jQuery,问题就迎刃而解。

然而,jQuery 也带来了新的问题。降低入门门槛意味着缺乏经验的工程师也开始编写代码。

单页应用

与此同时,“单页应用”和“客户端富 Web 应用”的理念逐渐成为主流。在 AJAX 和 jQuery 出现之前,几乎所有内容都在服务端处理。服务器的任务是组装网页并发送给客户端。服务器生成 HTML、CSS 和 JavaScript,客户端只加载这一页内容。但随着应用逻辑被转移到客户端,这一模式发生了改变。这意味着应用只需加载一次,随后数兆字节的 JavaScript 代码负责渲染客户端感兴趣的界面部分。这一转变得益于 摩尔定律,因为终端用户的计算机性能每隔几年就会翻倍。

单页应用 在页面加载时接收全部的 HTML、CSS 和 JavaScript,客户端可以在不同视图间切换而无需通知服务器。客户端通过 AJAX 调用与服务器通信,并获取数据而无需刷新页面。这种方式让单页应用变得更快,使用体验也接近桌面应用程序。

可维护性问题

主要问题是,缺乏经验的开发者开始构建质量低下的软件。人们很快意识到,仅掌握 jQuery 知识会限制应用的规模。超过一定规模后,就会遇到可维护性难题。

可维护性 是指让软件解决方案易于开发、修改、扩展、测试和调试的能力。如果你只写十行代码,方法与编写一百万行代码完全不同。

JavaScript 框架

解决可维护性问题的答案是 JavaScript 框架的兴起。框架使得能够以结构化的方式编写可维护的代码,而无需重复造轮子。框架强制执行软件工程领域的一些公认最佳实践。为了理解这些实践,学习门槛再次提升到了一个健康的水平。

一个 框架 用于组织你的代码并运行你的应用。使用框架时,框架处于控制地位——也就是说,框架调用你的代码。

库

一个 库 是一组你可以调用来完成特定任务的功能集合。库不是框架,因为只要你在使用库,你就处于控制地位;库不会调用你的代码。

在2010年代初期,几乎每周都会出现一个新的框架。创建一个框架意味着你在重复造轮子,因为你用自己的方式解决了一个早已存在的问题。

幸运的是,我们已经度过了 JavaScript 开发领域“更新换代速度极快”的时代,以至于你每个月都必须学习一个新框架或新库。如今,大家普遍使用 React、AngularJS 或 VueJS,而 React 似乎正在赢得这场竞争。主流框架背后都有庞大的社区支持,因为 React 得到 Facebook 的支持,Angular 得到 Google 的支持。

尽管框架非常出色,但开发者仍面临一个问题:框架和库的功能远远超出了 JavaScript 本身的能力,导致 JavaScript 成为一种负担。这个语言本身已经相当老旧,亟需一次升级。这次升级就是 ES2015,也就是大家熟知的 ES6。许多创新特性来自多个来源,例如 jQuery、一些 框架、一些函数式编程库如 UnderscoreJS,以及像 TypeScript 这样的语言。

结论:

自 ES2015 以来,JavaScript 已经不可逆转地向前发展。每年都有新特性加入 JavaScript,这些更新也陆续出现在后续课程《JavaScript 实践:ES6 及以后》中。

基于 JavaScript 的发展历程,我们可以得出结论:现在正是成为 JavaScript 开发者的最佳时机。你每天面对的挑战既有趣又富有意义,更重要的是,你常常能立即看到自己的努力成果——只需在浏览器中查看更改的效果。

Quiz

单选题

以下哪项不是框架?

1 / 3

JavaScript 与 HTML 和 CSS

服务器端的 JavaScript