使用太多JavaScript有什么缺点?

时间:2009-10-06 10:00:25

标签: javascript jquery mootools prototypejs javascript-framework

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

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

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

我想听听你的意见。

10 个答案:

答案 0 :(得分:9)

网站中的许多JavaScripts有哪些缺点?

  • HTTP开销
  • 低可维护性

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

这不仅仅是个人品味的问题。查看this question了解详情。

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

答案 1 :(得分:6)

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

不要先从技术开始。

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:2)

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

  1. 初始加载时间:你需要成为一个 小心你的文件大小。 例如,如果那个日历你 正在使用需要一个完整的单独 库要运行,你必须 问你为什么不只是使用 jQuery版本。
  2. 客户表现:你是 将大量处理卸载到 客户的电脑,和更老的 机器/浏览器将挣扎 特别密集的脚本。 这是一个了解你的问题 目标受众 - 如果你是 用怪物PC瞄准技术人员 然后你更有可能逃脱 沉重的脚本。
  3. 冲突:正如你所说,可以 中的功能之间的冲突 不同的图书馆有方法 围绕这个,但为什么要给自己 问题首先在哪里?
  4. 在一天结束时,所有这些库只是编写JavaScript的另一种方式。 挑选适合您的图书馆;允许您以最快的错误完成工作的那个。

答案 4 :(得分:2)

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

许多插件都会创建框架来从第三方网站提取内容:Facebook就像按钮,评论,Twitter Feed,Google和各种广告等等。而且这些插件也可以加载和运行自己的脚本。< / p>

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

答案 5 :(得分:0)

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

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

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

答案 6 :(得分:0)

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

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

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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

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

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

答案 9 :(得分:-1)

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

另一个

  • 您的所有javascript代码都会被曝光,因为javascript是一种解释性语言