使用太多JavaScript的缺点是什么?

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

例如,我将为我的下拉菜单,选项卡和手风琴使用jQuery框架。 我的日历的其他JavaScripts(即使有可用的日历使用jQuery)和其他JavaScript用于其他东西? 有什么影响? (我认为JavaScript与重载相互冲突)

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

我想听听你的意见。

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

  • HTTP开销
  • 可维护性低

为什么要为该项目使用MooTools或jQuery?

这不仅仅是个人品味的问题。 查看此问题以获取更多详细信息。

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

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

不要先从技术开始。

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

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

在一天结束时,所有这些库只是编写JavaScript的不同方式。 选择适合您的图书馆; 允许您以最快的错误完成工作的那个。

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

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

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

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

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

在选择单个框架方面,看看你想要做什么 – 有些框架会比其他框架更适合某些网站。 另外,请查看开发人员已具备的技能组,因为他们需要学习的新东西越少,他们花在构建站点上的时间就越多。 看看框架周围的社区。 考虑一下插件的可用性(尽管那里有很多低质量的插件;不仅仅依靠数量来判断)。 看看框架的API是否与您的方法很好地配合。

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

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

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

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

此外,更多脚本可能会降低客户端计算机的速度。 现在很多用户都会同时打开多个页面或标签页,如果你的用户非常沉重和缓慢,同时打开其他页面会使基础计算机上的内容不稳定,那么你的网站可能有点过分。

最后,如果用户没有javascript或关闭它会怎么样? 它会彻底破坏你的网站吗?

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

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

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

另一方面,如果你想编写自己的组件/插件/代码,那么你应该测试它们中的每一个,看看哪一个适合你的编码风格并投射最好的。 例如前一段时间我发现Prototype更适合我的口味,对于大型JS重型项目来说相当不错。 但是jQuery从那时起已经走了很长的路,所以如果我不得不创建一个新项目,我可能会尝试每个最受欢迎的库。

  • 考虑一下99%的目标消费者在浏览器中没有启用javascript并且在您的网站中编写大量javascript代码的情况。
  • 此外,javascript在客户端计算机上运行,​​优先级非常低,这可能会降低网站的性能。

另一个

  • 由于javascript是一种解释性语言,因此您的所有javascript代码都会公开