6

我想知道在网页中使用过多的 JavaScript 代码有什么缺点?

例如,我将为我的下拉菜单、选项卡和手风琴使用 jQuery 框架。以及用于我的日历的其他 JavaScript(即使有使用 jQuery 的可用日历)以及用于其他内容的其他 JavaScript?效果如何?(我的观点是 JavaScript 的冲突和重载)

我认识很多掌握超过 2 个 JavaScript 框架的开发人员。我的问题是:在开发项目时,您如何为该项目选择 JavaScript 框架?你为什么要为那个项目使用MooTools或 jQuery?(我知道这是一个选择问题),但还有其他原因吗?就像 mootools 对这个有好处……或者 jQuery 对那个有好处……

我想听听你的意见。

4

10 回答 10

10

在网站中使用许多 JavaScript 有什么缺点?

  • HTTP 开销
  • 可维护性低

你为什么要为那个项目使用 MooTools 或 jQuery?

有针对特定事物的特定框架——以Ext JS为例,它试图包含站点所需的一切。这不是 jQuery 所做的。

于 2009-10-06T10:14:54.493 回答
6

这将取决于浏览器(和后端)以及它如何执行/扩展到许多脚本。在开发解决方案时,首先要考虑受众的需求。他们是要在超高速光纤链路上运行四核怪物,还是在带有 GPRS 链路的小型手机上运行?然后决定哪些技术可以满足这些需求。

不要先从技术开始。

于 2009-10-06T10:03:54.403 回答
2

从你的问题中,我想到了几个问题:

  • 拥有大量小脚本文件可能会导致性能问题。如果您要使用许多不同的脚本,请将它们组合成一个脚本文件(并缩小它并使用 gzip 压缩提供它)。在非官方的 Prototype & script.aculo.us wiki 上有一个与此相关的提示(披露:我主要写了那个提示,但有很多聪明人的意见)。还要看看您是否可以利用 CDN(例如,现在大多数框架都可以通过Google CDN获得)。
  • 在同一个站点中拥有许多不同的框架(jQuery、Prototype、MooTools、YUI 等)可能会成为一个技能问题——在该站点上工作的任何人都需要具备各种不同框架的技能。
  • 一些框架彼此不兼容(例如,我怀疑 Prototype 和 MooTools 目前可以在一个页面上共存;jQuery 和 Prototype 可以通过 jQuery 的“无冲突”模式)。

在选择单一框架方面,看看你想要做什么——一些框架比其他框架更适合某些网站。还要查看您的开发人员已经拥有的技能,因为他们必须学习的新东西越少,他们可以花费更多时间来构建您的网站。查看框架周围的社区。考虑插件的可用性(尽管那里有很多低质量的插件;不要仅以数量来判断)。看看框架的 API 是否适合你的处理方法。

于 2009-10-06T10:11:38.353 回答
2

我想说使用多个库有一些可能的缺点:

  1. 初始加载时间:您需要注意文件大小。例如,如果您使用的日历需要一个完整的独立库才能运行,您必须质疑为什么您不只是使用 jQuery 版本。
  2. 客户端性能:您将大量处理卸载到客户端计算机上,而较旧的机器/浏览器将难以处理特别密集的脚本。这是一个了解您的目标受众的问题——如果您的目标是使用怪物 PC 的技术人员,那么您更有可能摆脱繁重的脚本。
  3. 冲突:正如您所说,不同库中的函数之间可能存在冲突。有很多方法可以解决这个问题,但为什么首先给自己这个问题呢?

归根结底,所有这些库只是编写 JavaScript 的一种不同方式。选择适合您的图书馆;一种可以让您以最快的速度完成工作且错误最少的方法。

于 2009-10-06T10:12:36.173 回答
2

网络开销。我不是在谈论脚本本身,而是在谈论他们在做什么:

许多插件创建框架以从第三方网站提取内容:Facebook 之类的按钮、评论、Twitter 提要、Google 和各种广告等。此外,这些插件也可以加载和运行自己的脚本内容。

即使您有 8 个内核,网站内容也会在插件加载其内容时至少跳动 30 秒(在每次页面访问时!)。这就是为什么我安装了浏览器插件来永久阻止 javascript。但即使我启用它们,它们通常会从至少 20-30 个域中提取脚本,并且我需要启用页面上的所有脚本 4-5 次才能使站点完全正常运行。请避免制造这样的情况。

于 2013-11-15T17:30:28.357 回答
0

答案很明显:更多的 JavaScript 意味着更大的性能开销。根据您构建文件的方式,这可能意味着更多 HTTP 请求、更多要加载的数据、更多要解析的代码等。如果完全可以避免,您应该选择一个好的框架(如 jQuery)并坚持使用它,而不是混合和匹配它们。

除了性能之外,多个框架也意味着代码的可维护性较差,因为维护人员必须熟悉每个框架才能使用它们。

可能有一些例外,比如使用像 jQuery 这样的通用框架和像 Raphael 这样更具体的框架,但通常这可以通过插件来解决。

于 2009-10-06T10:07:38.510 回答
0

一方面是加载可能需要时间。如果您的脚本包含在包含或链接的文件中,则需要加载时间和更多的 HTTP 请求。

此外,更多脚本可能会降低客户端计算机的速度。如今,许多用户同时打开多个页面或选项卡,如果您的页面或选项卡如此沉重和缓慢,以至于同时打开其他页面会使基础级计算机上的事情变得不稳定,那么您的网站可能有点过分了。

最后,如果用户没有 javascript,或者它被关闭了怎么办?它会完全破坏您的网站吗?

于 2009-10-06T10:15:00.693 回答
0

也不要忘记,有些用户可能禁用了 Javascript,因此网站的一些必需功能(即菜单、导航、表单等)基于 JS 将导致这些用户无法查看您的网站。

于 2009-10-06T10:17:17.897 回答
0

使用大量 JavaScript 文件应该不是问题,因为您始终可以将它们全部合并在一起以最小化 HTTP 请求。当然,要执行所有 JavaScript 需要浏览器的时间。所有这些 JS 库/插件之间或 DOM 内也有可能存在冲突。

至于选择正确的库,这实际上取决于您正在制作什么样的网站/应用程序。如果您只想使用预制插件,那么您使用哪个库并没有太大区别,您应该选择一个包含更多您想要使用的插件的库,我很确定 jQuery 是最好的选择这里,因为它总体上拥有最多的插件。

另一方面,如果你想编写自己的组件/插件/代码,那么你应该测试它们中的每一个,看看哪个最适合你的编码风格和项目。例如,不久前我发现 Prototype 更适合我的口味,并且非常适合大型 JS 重项目。但是从那时起 jQuery 已经走了很长一段路,所以如果我必须创建一个新项目,我可能会尝试每个最流行的库。

于 2009-10-06T10:24:47.320 回答
-1
  • 考虑这样一种情况,即 99% 的目标消费者没有在他们的浏览器中启用 javascript,并且您在自己的网站中编写了大量的 javascript 代码。
  • 此外,javascript 在客户端计算机上运行的优先级非常低,这可能会降低您网站的性能。

还有一个

  • 由于 javascript 是一种解释性语言,因此您的所有 javascript 代码都会暴露出来
于 2009-10-06T10:19:02.730 回答