在建立网站时尽量减少JavaScript使用是一种常见的做法吗?[关闭]


32

我从事Web开发已经有将近10年了,我养成了尽量不使用JavaScript的习惯。我在这里不是在谈论构建Web应用程序,而是在数据库驱动的网站。

这是一个好的/受人尊敬的方法吗?


6
我禁用了标准javascript,noscript告诉我从什么源加载了javscript。网站从10多个次要来源中加载javascript的情况并不少见,而后者又从三次来源中加载了javascript。页面从20多个外部源中加载javascript的情况并不少见。所以我要说:最小化javascript的使用是不可能的。
Pieter B

9
我观察到,您所依赖的JavaScript越多,您的站点对导航和SEO的友好性就越差。由于“ javascript链接”等原因,我无法统计离开的网站数量。
BiAiB 2012年

1
我发现,Internetz上有很多JavaScript。问题是:1)简单的索引器不了解js,2)大量的js烧毁CPU 3)一些平台仍然没有js(电话,链接浏览器)。因此,在不需要时避免js是一个好习惯。
permeakra 2012年

为什么是本周问题?我对此表示不清楚,也没有建设性。通常,“我应该使用X吗?” 在此网站上不提出问题。也许有人可以启发我。
Mark E. Haase 2012年

Microsoft Web堆栈(直到现在使用MVC)都依赖JS来实现ASP.NET和SharePoint中的每个单键单击。所以不,减少使用率并不常见。
格雷厄姆

Answers:


51

这是大多数程序员的本能,以减少所有种类的代码。代码越少,复杂度就越少,并且所述代码中可能的错误点也就越少。该规则与其他语言一样适用于Javascript。您只是坚持传统。

在HTML页面中根据需要/需要使用Javascript ...,但是没有必要在没有实际需要时使用它。


9
避免使用JavaScript与避免更多代码的本能不同。使用JS不仅仅是减少开发复杂性;与用户的兼容性确实存在问题。
2012年

34

10年前,这可能是个好主意。如今,当在浏览器中禁用Javascript时,Internet的大多数部分(至少是一些非常流行的部分)几乎变得不可用,或者仅提供了非常受限制的功能。因此,恕我直言,今天您可以期望您的用户启用Javascript。

并且有很多框架,例如JQuery可以解决浏览器不兼容的问题。恕我直言,今天没有真正的理由为什么您不使用Javascript来限制自己的网站-唯一的原因可能是您没有使用Javascript。

编辑:一个不同的问题是:如果您的访问者未启用JS时,您应该提供网站的某些最小功能 -这是一个好主意,因为某些评论者指出了这一点。

编辑2:当然,对于每个网站,都必须在用户友好性,搜索引擎友好性和开发工作之间找到平衡。恕我直言,今天的Javascript可以帮助改善这种平衡-如果使用得当的话。话虽如此,我认为现在一般不再需要再进一步最小化Javascript的使用来保持这种平衡。小心使用它,不要妖魔化它。


17
这里有一些:SEO,Web聚合器,屏幕阅读器,NoScript,curl,移动浏览器。默认情况下,我禁用脚本,大多数Internet仍然可以正常工作。
tdammers

7
如果没有javascript就无法使用网站,那么Google就无法有效地对其进行爬网,并且在RESTful上下文中它可能会也可能无法使用。即使没有Facebook,Facebook至少也至少可以使用
GordonM

9
我同意这里所说的大部分内容,但是我强烈反对这样一个想法,即网站应该“至少在没有JavaScript的情况下最小可用”。错了:如果没有JavaScript,它应该可以最大程度地使用。
约尔格W¯¯米塔格

4
@JörgWMittag如果您要禁用Web技术,则不应期望获得网站的全部好处。方案各不相同,但是如果我要构建一个Web应用程序,那么我可能不会在浪费我的时间来与少数拒绝迁移到21世纪的用户完全兼容。类似于我在大多数项目中不支持IE 6的方式。
汤姆·马瑟纳尔

2
仅支持所有用例是专业的。如果您错过了,没关系,每个人都会偶尔出错,但是忽略它们是另一个问题。我全心全意地开发100%不使用JS的网站,并使其正常运行后,添加JS以简化任务并改善UX。
Spidey 2012年

13

如果拥有一个无需使用JavaScript即可使用的网站,则意味着该网站可供尽可能广泛的受众使用。的确,大多数浏览器都支持JavaScript,并且大多数用户默认情况下都将其保留为打开状态,但是您不能肯定地依靠它。毕竟,并非访问您网站的所有内容都是浏览器。如果您希望您的网站被Google等搜索引擎正确索引,则GoogleBot需要能够在没有JavaScript的情况下浏览您的网站。

还有一些专业的网络浏览软件,其中的JavaScript无法使用或无法正常使用。例如,视障人士使用的屏幕阅读或盲文软件。在某些环境中,内存会受到限制,并且拥有大量JavaScript可能会使浏览体验令人不快甚至不切实际,例如智能手机浏览器。

您应该研究“渐进式增强”的概念,在该概念中,您可以构建一个无需使用javascript即可工作的网站,然后在其顶部添加一个javascript层以改善用户体验。这样,您将拥有一个至少对没有javascript的人可用的网站。

您无需努力将计划用JavaScript实现的所有可能功能提供给非JavaScript浏览器,但是至少保留基本用例而不使用JavaScript仍然很重要。能够浏览该网站显然是最重要的,但是,如果您要构建一个电子商务网站,则使结帐过程依赖JavaScript会很愚蠢,因为这可能会增加销售成本。


4
绝对。Javascript应该用作香料,而不是主要课程。
2012年

9

其他答案似乎集中在“我不应该使用JavaScript”上,所以我认为他们没有抓住重点。如果不需要,则不应使用JavaScript。有些人对所有内容都使用JavaScript :

  • 悬停效果(应为CSS)
  • AJAX(href合理时应具有)
  • 定位(应为CSS)

好处是:

  • 网站显示速度更快
  • 大多数时候,CSS的复杂度远低于JavaScript
  • 拥有备用href链接有助于搜索引擎,想要在其他选项卡中打开链接的用户以及讨厌JavaScript的用户

当然,AJAX非常酷,动态页面也很酷,因此不要仅仅因为某些人不需要它们而丢弃这些东西。

我的观点是,学习如何在没有JavaScript的情况下做事是件好事,将JavaScript最小化是一件好事,在JavaScript无法工作时进行备份是一件好事,但是没有理由避免使用功能,因为它们需要JavaScript。


1
我记得很多年前(关于当时的人机界面)曾有人给过一些建议:“仅仅因为你可以,并不意味着你应该这样做”。声音之类的东西应该放在船上。
安德鲁(Andrew)

8

避免不必要的功能是一个好主意。jQuery之类的框架使添加多余的装饰变得异常容易,但有时却没有。例如:

您真的需要制作动画吗?

... 要么 ...

遍历整个DOM对于这样一个琐碎的选择器确实需要吗?您能否使用上下文来限制它,我们是否首先需要它?

我会避免使用 JS,但是在寻找速度较慢的计算机时,我确实要当心不要讨厌。我们在CSS3中获得的一些新颖奇特的东西也是如此(例如阴影)……如果过度使用它们,可能会使动力较低的机器上的人感到非常糟糕。

例外情况可能是为各种设备编写前端控件,这些控件必须在禁用JS的情况下绝对起作用(也许数据中心管理网络上严格的安全策略规定没有JS)。因此,以上内容应结合您的要求进行考虑。


6

我相信,作为一个相对较新的年轻Web开发人员(大约4年),由于JavaScript无处不在,因此我必须对此进行大量研究。

我要在我的项目上尝试做的是确保该站点在不使用javascript的情况下正常运行,然后在有意义的地方添加javascript(客户端验证,UI改进等)。这是一种渐进式增强,它可以处理SEO,禁用的javascript和较旧的浏览器不兼容问题。

在SO上也曾问过同样的问题,但我不能因为我的爱而记得在哪里。


5

在以下几种情况下,可能会限制JavaScript的使用:

  • 验证。它必须在服务器端完成。有时,在Web应用程序中,可以进行快速的客户端验证,但仅此一项还不够。
  • 非常重要的任务。用户可以选择禁用其浏览器的脚本,因此JS代码根本无法使用。如果要确保在任何浏览器下都能正常工作,请不要将其信任JS。
  • 速度。JS代码必须发送到客户端,并且编写的代码越多,花费的时间就越长。虽然少量的代码将没有实际效果。

JS具有大量功能,无法用服务器端代码替代。除了上述内容,我认为没有任何合理的论据来限制JS的使用。


5

数据库驱动的网站 ”是答案的关键。创建网站的方式有两种,实际上所允许的Javascript数量取决于您所使用的Javascript。您可以构建:

  1. 以内容为中心的网站。在第一种情况下,魔术词是“渐进增强”。将javascript限制为可以通过纯HTTP对内容进行经典访问的冗余功能。

  2. Web应用程序。对于应用程序,您将Web用作软件平台。应用程序依赖于可用软件的一些假设-现代浏览器,最新版本的流行javascript库,使用鼠标和/或具有多点触控的平板电脑进行桌面访问。

网络作为软件平台

如果您实际上是在构建应用程序,则最低访问要求是可以的-您可以将特定平台定位为目标,以获得无法通过其他方式无法构建的高级功能。就像为Python或Java或.Net开发一样。不要让诸如HTML5之类的流行语和“随处可见”的承诺蒙骗您;您只能在设备之间支持整个平台的情况下,才能在设备之间使用可移植代码。对开发堆栈的任何更改,都会破坏软件。

因此,要付出的代价是,随着新版本平台的发布,您正在遵循一个不断变化的目标。您必须赶上赶超程序的步伐,以确保应用随着平台的发展而正常运行。您获得的唯一好处是不依赖于程序包或应用程序商店的半通用交付机制。但是您将失去使网络与以前的联网计算机系统区分开的主要功能。

网络作为内容交付

以内容为中心的网站是另一回事。它们具有经典的万维网的传统。内容由客户端松散地解释,客户端可以在呈现之前进行任何所需的转换。预计该站点可以由可能支持或不支持当前标准的不同平台的生态系统访问:

  • 支持比最新和最昂贵的铃声和哨子还少的移动设备
  • 无法(在企业中)或不知道(在家中)如何更新的旧浏览器用户
  • 不再使用旧API的流行引擎的未来版本

如果您需要不断更新的最新javascript,则将全部丢掉。在这种情况下,阻止访问内容的Javascript是一种罪过。

每个人都说“应该最小化javascript的使用”是在倡导这种风格。请注意,可以包含一些 JS,但是所有功能都应该是多余的,并且可以对可以在服务器端实现的内容进行基本访问:

  • 数据输入验证
  • AJAX内容更新可实现最快的导航(尽管如此,在没有JS的情况下仍然可以使用)

这种方法的好处是减少了测试和升级所需的时间,并延长了保质期。20年前的第一个静态网页仍可在任何Web客户端中浏览,但第一个Web应用程序将永远被破坏。如果您的网站根本没有任何归档价值,那么从长远来看,您将从使用Web作为内容交付系统(而不是应用程序平台)中受益。


3

我在州政府工作,因此,我的大部分发展都涉及数据驱动的交互式网站。查询历史数据,表单提交之类的东西。由于以下原因,我们将JavaScript保持在绝对最低水平:

1)表单输入的验证应始终在服务器端进行,而不应在客户端进行。如果您尝试在客户端上验证输入,则黑客要做的就是创建网页的本地副本,然后重新编写Javascript以允许他想要发送给您的内容(SQL注入等)。验证必须在您的独占控制下的某个地方进行,即在服务器上。

2)许多用户要么关闭Java脚本,要么使用可能无法正确实现Java的浏览器。作为政府,我们必须支持所有人,即使他们使用的确是真正的旧设备。HTML随处可见;Javascript,不是很多。通过不在网页中使用Javascript,您可以使用很少的资源在客户端计算机上占用很少的Java资源。这样可以最大限度地增加可以访问您的内容的人数。出于同样的原因,您不应该对CSS过于了解。保持简洁,保持清洁,并让小老太婆看到您的站点,即使他们的计算机是在1999年购买的(顺便说一句,我们也确实收到了像这样的人的技术支持电话)。

3)Javascript是“ Web开发人员”而不是服务器端程序员所偏爱的工具,因此通常很难看。设计人员(如果您想老实地说,这就是Web开发人员通常所为)通常不会看到从网络上随机位置下载“脚本”的问题。他们说诸如“为什么要重新发明轮子?”之类的话。和“此处未发明”。因此,他们通常不用去编写自己的代码,而只是从外面的另一个网站上抢东西,以为如果在互联网上,那是公平的游戏。这样做有两个问题:A)他们可能无意中发布了一些需要您花点时间才能找到的恶意Java脚本; B)他们可能侵犯了某人的版权,并遭到起诉。两种情况都应避免。

一般而言,JavaScript是一个坏主意。任何类型的客户端代码都是一个坏主意。客户端应仅包含标记语言和CSS;让服务器端处理繁重的工作。


2

这取决于。

尽管可以期望桌面用户代理以有意义的方式支持和运行javascript,但是并非所有用户代理都是图形桌面浏览器,因此您需要确定是否要满足他们的需求。

示例包括:

  • 搜索引擎(Google确实运行了一些 javascript,但不是全部都运行,并且,如果您依靠javascript进行导航,则搜索引擎可能找不到所有内容)
  • 聚集器和刮板
  • 基于文本的浏览器(尽管使用它的人并不多)
  • 屏幕阅读器和其他阅读工具
  • (某些)移动浏览器

我的经验法则是,如果它是常规用户(内部,社区等)的Web应用程序,那么依靠javascript是可以的,但是如果您希望可以公开访问和找到,那么至少至关重要功能无需javascript即可完美运行,并且在需要时应该正常运行,而不是表现出“未定义”行为。


2

老式的方法已经完全过时了。例如,我在其中一个站点上为主持人做了ajax删除,由于速度明显提高,他很高兴。

当然,开发人员可以为JS和非JS用户提供两种版本,但是在大多数情况下,它极其昂贵,并且不值得网站访问者的1-2%(当然,如果您不是Google的话)。

因此,我的回答是“否”-JavaScript是许多用户体验问题的答案,为什么我不应该使用它?


1

根据我的经验,曾经有一段时间公司根据政策禁用JavaScript。但是这个时间已经过去了。目前,我已经为大型跨国公司构建了一些大型的Intranet应用程序和Web应用程序。对于所有应用程序,JavaScript和JQuery的使用是客户期望的一部分。

为客户构建应用程序不再只是速度和安全性。客户希望专注于可用性和AJAX技术的使用。如果不使用JavaScript,它将无法正常工作。对于某些非常小的任务(例如计算),或类似的事情,对于所有公司而言,始终都会回发。

当我们考虑大公司的当前情况时,还有一个指标表明为什么JavaScript目前必须具备。查看当前正在运行的CMS系统。他们中的大多数使用Microsoft SharePoint或Adobe CQ,其中一些使用Drupal或其他任何方式,依此类推。所有这些系统都依赖JavaScript。如果没有JavaScript,大多数应用程序将无法正常运行,这是用户期望的。


0

在过去的时代,JavaScript被使用和滥用,脚本(被认为是)充满漏洞和恶意软件来源。

许多公司网络通过禁用JS来响应,该策略在当今(正确或错误)仍存在于许多组织中。

很简单,我建议任何网站都不应依赖 JS进行操作


3
我认为这种选择完全过时了。大多数公司都将SharePoint或CQ用于Intranet解决方案。这两个系统实际上都依赖JS。
Smokefoot

我绝对反对“大多数公司”使用Sharepoint ...甚至对于那些内部允许使用JS的公司,Intranet设置也可能与外部设置不同。
安德鲁(Andrew)

0

正如这里大多数答案所解释的那样,使用javascript无害。如果您想保存编码和看上去凌乱的源代码,请尝试coffee-script使用它将节省很多输入时间javascript

http://coffeescript.org/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.