何时该使用 JavaScript…

Avatar of Chris Coyier
Chris Coyier 发表于

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

当一项任务无法通过任何其他技术完成时,你就知道应该使用 JavaScript 了。

当我向 Doug 询问我脑海中某个想法的更优雅表达方式时,他提出了这个建议。

JavaScript:如果它**可以**用其他语言完成,那么它**就应该**用其他语言完成。

这句话听起来很**消极**,这绝对不是我想要表达的意思。但我想强调一个观点。JavaScript 能够完成其他语言也能完成的任务。JavaScript 也能够完成其他任何语言都**无法**完成的事情。一些例子可能是有序的。

表单验证

您可以使用 JavaScript 来验证表单。通过这种方式,您可以创造出很棒的用户体验,但当然,在处理表单数据之前,您不应该忘记再次使用服务器端语言验证所有输入。如果您必须二选一,请选择服务器端。**如果它可以用其他语言完成,请使用其他语言。**

插入内容

我最近遇到一个情况,需要将一段动态导航加载到由 CMS 创建的网站主页上,该主页位于网站的子目录中。理想情况下,此导航将在一个文件中创建,该文件可以在主页和其他需要它的任何地方进行服务器端包含。长话短说,我无法实现它。相反,我使用了 jQuery 的 load 函数来获取该代码块。效果很好,除非您不使用/无法使用 JavaScript。**如果它可以用其他语言完成,请使用其他语言。**

同样,AJAX 的整个概念通常被认为是一种变通方法。它是在为单向传递而构建的技术中模拟双向通信的一种方式。当出现更自然地适应浏览器与服务器之间双向通信的新技术时,AJAX 就消失了。**如果它可以用其他语言完成,请使用其他语言。**

样式

JavaScript 能够将样式应用于页面上的元素。这也是 CSS 的工作。在 JavaScript 中包含大量的样式信息会使代码变得混乱。它使 JavaScript 更难阅读,并且样式更新更难以跟踪。**如果它可以用其他语言完成,请使用其他语言。**

JavaScript 库流行的主要原因之一是它们开辟了一些很棒的设计可能性。您可以淡入淡出元素、动画大小和位置,并以流畅和时尚的方式实现。但这些都是与设计相关的,而不是(通常)与功能相关的。因此,我们看到 CSS 开始适应做这些完全相同的事情。我认为 CSS 是适合此目的的地方,而不是 JavaScript 库使用的某种“快速更改 DOM”技术。**如果它可以用其他语言完成,请使用其他语言。**

何时使用

好了,关于“不使用”的情况就说这么多。还有很多其他情况下,使用 JavaScript 是唯一的选择。比如事件?JavaScript 是唯一可用于让您的网站与浏览器通信并监视事件的语言:点击、双击、鼠标进入、鼠标离开、按键、浏览器窗口大小调整……等等。如果您需要访问这些事件,那么您就需要使用 JavaScript 了。

我说的对吗?这是狭隘的想法吗?