您是否曾经尝试调试一个网站,其中一个初级网页设计师使用脚本加载了页面?页面中可能包含几个不同版本的 jQuery,或许还有一些 Prototype 或 MooTools。我们可以稍微笑一笑,但我们许多人都经历过那个阶段,当时我们对这些东西的理解还不够深入,以至于没有意识到这样做有任何问题。真的有问题吗?除了带宽问题之外,大多数库都提供了一些步骤,可以确保它们在需要时能够与其他库良好地配合使用。那么情况如何呢?您是否曾经使用过多个库?调查在侧边栏中。
新调查:多个 JavaScript 库
DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!
我从未使用过多个库,但我确实记得有一次,我刚开始学习的时候,我试图确定是否可以同时使用 MooTools 和 jQuery。我认为没有必要同时使用多个库,因为它们通常都能完成相同的事情。我认为只有在对业余爱好者或客户网站进行快速修复的情况下,才需要理解和实现这种使用多个库的设置。
这正是我所想的。
我赞同。
那么“是的,但不是我做的/我继承了一个多库项目并不得不处理它”这个选项怎么样?我会选择这个。我不喜欢它,但并不感到内疚,因为我别无选择。这种情况实际上不适合任何选项。
澄清一下,我继承了一些网站,这些网站同时包含旧版和当前版本的 jQuery,我没有权限更改它们,我还继承了一些包含非常旧版本 MooTools 的项目,这些版本无法更新,因此添加了 jQuery 以提供其他功能。这两种情况都不是我造成的。
这不是我想要做的事情,但作为前端开发人员,我们有时会遇到超出我们控制范围的情况,因此我们必须适应并根据给定的条件进行工作。
我同意 Scott 的观点,我不得不这样做,但这只是我继承的网站的副产品。
我认为调查不是关于继承的项目。在上面的描述中,他描述了如果您继承了一个包含多个库的项目,您的反应可能是什么,然后问道“您是否曾经使用过多个库?”所以,我想这个问题应该澄清为“您是否曾经在您自己的代码中在同一页面上使用过多个 JS 库?”
我曾经在一个使用 Mootools 的网站上工作,后来客户的内部 IS 团队开发了使用 jQuery 的 Web 技术,他们希望在该网站上实施这些技术。所以别笑了。这可能会发生在您身上!:O
我做过,当时我甚至没有意识到。不知道库是什么——我只是认为它们是三个不同的脚本。不过,它帮助我学习了解决脚本冲突的方法!
现在,能够用 jQuery 做大多数事情,我主要使用 jQuery。但如果有一些很酷的东西使用了其他库,我认为使用它没有问题。
我最近完成了一个项目,该项目需要两个不同版本的 jQuery。当然,我们使用的一些模块是必需的,但只能与旧版本的 jQuery 一起使用,并且有一些新的内部开发的模块依赖于最新版本。由于时间限制,我们无法重新设计旧模块,因此需要同时使用多个版本。
我曾经在一家使用 MooTools 的公司面试。在面试过程中,我还发现他们也在使用 Prototype,并且非常希望我使用 jQuery。这来自正在面试我的“高级”开发人员。我告诉他们,他们绝对不应该注入另一个 JS 库。他们给了我这份工作,但我拒绝了。
我真的很喜欢 jQuery,但我觉得我有点超出它的范围了,因为它基本上只是 DOM、ajax 和事件挂钩的漂亮 API。
我确实认为这就是 jQuery 的全部,但它在这方面做得非常好。jQuery UI 感觉太臃肿了,无法使用(至少对我来说是这样)。我也使用过 Prototype 和 Scriptaculous,但我不是特别喜欢它们。
这正是它(加上动画和修改样式)。但你低估了它——它不仅为 DOM 提供了一个方便的包装器,还使跨浏览器的行为保持一致。
我不想花时间编写代码来适应所有浏览器,这些代码已经由其他人编写并且我可以访问——我想编写冗长且简洁的代码,并花时间改进应用程序。
我从未使用过除 jQuery 之外的任何东西——并且一次只使用一个版本。多个版本和/或多个库会导致效率低下——至少在“选择”元素方面是这样。如果我在 jQuery 中多次选择同一个元素,该库会构建一个元素缓存,因此下次 & 执行选择时,它不必执行查找 DOM 中元素的工作。使用多个库会导致多个缓存 & 多次查找,而只需要一次。
由于 jQuery 的工作原理,您实际上可以同时使用多个版本。例如,我的“实时”元素使用 1.4 并将 $ 映射到 jquery14,但我仍然可以使用 $,它是所有选择的旧版本。
也许我没有理解正确,但是的,我确实使用多个库。例如 jQuery、TypeKit、Lightbox 等。我认为这很常见,不是吗?
如果有一个库可以处理所有事情,我会使用那个库……。
我们目前正在将产品从 Prototype 迁移到 ExtJS。在一个理想的世界里,我们将有资源将所有内容都移植过来,但实际上,我们正在经历一个过渡阶段,在这个阶段我们仍然同时使用两者。话虽如此,我们发现在一个页面上包含这两个库会导致很多麻烦,因此我们目前采用“要么这个要么那个”的方法,并在可能的情况下逐步迁移现有的软件。
我会选择否。我从未使用过 MooTools,一直都是使用原生 JS 或 jQuery。
如果答案是“是”:您忽略了库的潜在能力。就这么简单。
你怎么这么认为?
您可以使用 JQuery 做几乎所有您想做的事情。
我不同意。我经常在同一页面上使用 jQuery 和 TypeKit。如果您告诉我 jQuery 如何执行字体替换或 TypeKit 如何执行动画,我就会同意。据我所知,这是不可能的。
因此,我需要使用两个库(jQuery 和 TypeKit)
或者我理解错了问题……。
我不认为 TypeKit 是一个 JavaScript 库。(它更多的是关于 Mootools、JQuery、Dojo 等……)
我个人使用 JQuery+Cufon 或 sIFR。
对我来说是不会的,因为我还没有接触过 Moo-Tools。甚至现在的 jQuery 也远远超出了我的能力范围。
我在之前的工作中使用过 YUI JS。今天我经常在不同的应用程序中同时使用 jQuery 和 Prototype。我目前正在学习 Dojo,因为我听说它很好。
哦,糟糕。没有仔细阅读问题。我认为在一个页面上使用多个 JavaScript 库通常是一个糟糕的主意。任何好的库都可以,有些库在某些方面比其他库更好,但没有理由包含多个库。这就像试图把雪佛兰的发动机装到福特的卡车上一样。有点多余。而且毫无意义。而且没有必要。而且……你懂的。:)
我使用多个库构建了一个原型,完全打算在实际开发时重建或替换某些插件,但是一个外部开发团队认为在即将到来的紧迫期限下,重建不值得,现在已经进行到难以最终达到所需的单一使用状态。
我自己也错在使用多个库构建原型,现在正在承受或感到像调查中提到的那样内疚。如果我在原型中花时间正确地定义它,我现在就不会处理多个库带来的灾难了。
我绝对可以理解你可能不需要两个“通用”库,但如今有几个专门的库用于触摸手势、动画、矢量图形等。其中一些库用其他库重新创建起来会很麻烦。我绝对可以理解在某些情况下堆叠库可能是合适的。
我需要另一个选项:“是,因为在我之前构建网站的人使用了多个库”……
我记得在刚开始开发时使用 prototype 和 scriptalicious 来创建灯箱。我发现 jQuery 有一些很酷的功能,因此我会使用 jQuery 来获取我想要的其他功能,并使用以前的脚本创建灯箱。我的朋友让我对 jQuery 感兴趣,随着我越来越深入地了解它,我决定将其作为我的首选 JavaScript 库。现在我使用 jQuery 来创建灯箱、幻灯片和其他许多功能。我更习惯使用它,而且似乎有更多开发人员/支持它,但这只是我的观点。
我确实这么做,但很少,而且主要是因为我继承了它,或者如果我发现第二个库确实有一个在第一个库中很难找到的功能。我不喜欢,但我有时会这样做。这不对,但也不是犯罪。
在我的案例中,一位设计师尝试附加三个插件,并声明了多个 jQuery 文件。结果是库使用 jQuery 中定义的上下文,而内部脚本则在另一个上下文中调用它们。找到库未找到的原因确实是一个问题。抱歉我的英语。
没有必要。你很难找到一个库拥有而另一个库没有的功能。
在某些情况下,你会发现一个使用 jQuery 的非常优秀的组件和另一个使用其他东西的组件。如果这些组件真的很棒,这将是同一个项目中使用两个库的理由。
对我来说,不需要。虽然我在我管理的网站上使用了两个 JavaScript 库(BBC Glow 和 jQuery),但不在同一个页面上。
我经常这样做……
我正在使用 Greasemonkey,使用“原始 JavaScript”是不可能的,所以我使用 jQuery。有时,网站已经使用了它自己的 jQuery,有时是不同版本。有时是 Mootools、prototype 等。有时是一切。
在这些情况下,我设法包含了“我自己的 jQuery”,但这并不总是那么简单。
当我编写自己的代码时,我总是使用“仅一个框架”,几乎总是 jQuery……
对于那些不知道的人来说,Greasemonkey 是一个 Firefox 扩展(其他浏览器也存在此概念),它允许你通过向其中添加一些 JavaScript 来“自定义”你浏览的网站……因此,你必须编写与你想要更改的页面上现有的 JavaScript 代码一起工作的代码。
当你编写应该在任何页面上运行的 Greasemonkey 脚本时,你必须编写能够与任何 JavaScript 库良好协作的代码。
我花了几个星期才弄清楚这个该死的“无冲突”问题。有一次它突然就*啪*地一声工作了……是的,这很糟糕。
我主要使用 Joomla! CMS,它使用 Mootools 1.1,因此我经常发现自己需要处理使用 jQuery 的模块或扩展。话虽如此,每个项目一个库应该是专业开发人员的规范。
我有一个项目过度使用了 jQuery,并且还使用 OpenLayers 来绘制地图。Openlayers 是一个地图库,它使用 jQuery 的一部分(我担心是旧版本)加上 mooTools。这是一个挑战!
在某些情况下,人们被迫使用许多库,但大多数情况下这不是一个“好的”理由。一个好的理由是你有两个技术上无法用同一个库满足的要求。实际上,这种情况非常不可能。
我可以理解那些不编写 JavaScript 的人最终可能会使用“我在 jQuery 中找到的酷插件和我在 ExtJS 中找到的酷插件”,但如果你编写 JavaScript,你会将其移植到你的首选库。
最好使用一个库,但如果继承了多个库,这可能是一个问题,并且取决于你的时间限制,你是否可以修改多个库的情况。尽量保持压力水平低。LT
不幸的是,我开始在我的博客上使用两个库。我的网站和博客使用 MooTools,但我安装了一个使用 jQuery 的 WordPress 插件,而且我不想重写它。:P
我确实使用多个库,我使用 Extjs 构建 cms 和 Web 应用程序项目。使用 Jquery 构建前端内容。偶尔我会需要将一个漂亮的网格或其他内容提取到前端以生成报表,我会使用现有的 Extjs 网格。可以使用 JQuery 来实现,但我认为没有必要重新发明轮子,尤其是在这个例子中,轮子已经在功能方面投入了大量工作。
我从这次讨论中学到了很多东西,感谢大家分享自己的观点。
我多次见过这种情况,在某些情况下,人们会被迫以这种方式工作。通常是由于紧迫的期限或缺乏从头开始编写自己代码的经验。需要明确的是,这不是正确的方法,尤其是在今天,我们有一些很棒的库,以及关于如何开始使用的很棒的文档——jQuery、Prototype/Script.aculo.us、YUI、ExtJS 等。
在决定使用哪个库之前,应该查看网站将具有的功能类型以及与其理解和设计方式相匹配的库。尝试 http://en.wikipedia.org/wiki/JavaScript_library
上周我刚为一个客户启动了一个新项目,以改善他们网站的可用性、整体性能和 SEO。该网站几乎包含了所有类型的 JS 库——jQuery(3 个版本)、prototype、一些插件和自定义脚本,总共 25 次服务器调用。——这太疯狂了!
除了说这不是正确的方法之外,有些人可能会说,它能工作,而且我不到一周就构建好了,确实如此!
但是,如果其他人接管了网站,或者几个月后你需要升级,你将陷入我今天遇到的困境……
根据我十多年的工作经验,我个人喜欢
– jQuery – 太棒了!打包完善、文档齐全、UI 库,很快将推出移动库(Android 手机支持)
– Prototype 与 Script.aculo.us – 我曾经使用过的第一个库之一,非常适合跨浏览器支持,将这两者结合起来可以提供强大的功能。
– YUI – 也非常好,并且有良好的在线示例/文档。
– ExtJS – 我相信现在是 Sencha.com,你需要购买,但如果你为企业客户工作,这个库非常棒。真正高端的东西。
我个人没有使用过多个库,只使用 jQuery。
jQuery 是我最初使用的库,我还在不断学习,尽管我计划学习其他库,但我不会使用多个库,除非我被迫使用其他人编写的代码。
我很高兴你提到了这一点。我有一个网站,里面到处都是 jQuery 代码片段,而设计师决定在头部添加 prototype.js。正如你们许多人所知,这会导致 jQuery 中的 $ 声明变得未定义。jQuery 上的“与其他库一起使用”页面提供了许多有用的技巧,如果你想编辑使用 jQuery 代码片段的每个地方,例如“使用 jQuery 代替 $”或“var $j=jQuery;”。在本例中,有数百个地方使用 jQuery 完成了微小的悬停事件或表格条纹,我真的不想逐一检查并修改它们。
我本希望能够,但最终未能找到,一种夺回 $ 并保持 jQuery 代码不变的方法。相反,我让设计师删除了 prototype,并使用 jQuery 的替代方案来替换她安装的“lightbox”代码。恕我直言,只有当你准备好相应地修改现有代码时,才能使用多个库。
具有讽刺意味的是,我今天来到这个网站是为了看看是否有人可以帮我修复我的多个 jQuery 实例。这真是个噩梦。别嘲笑我!我想被治愈!
我曾经在新手时期做过这件事。我刚发现 jQuery,并且想把所有我能找到的好东西都放到网站上。结果,一些功能无法正常工作,所以我给 Chris Coyier 本人发了邮件。他实际上在 24 小时内回复了我,并告诉我我的问题。这就是我如此热爱这个网站的原因。谢谢 Chris!
我刚用 jQuery 编写了一个网站,用于背景图像缩放和特色产品滑块。然后是 Mootools Slimbox。
将 jQuery 放在 Mootools 之前 (http://docs.jquery.com/Using_jQuery_with_Other_Libraries),并在 Mootools 脚本中进行查找替换美元符号,并解决了冲突 (http://www.mooforum.net/solutions12/using-jquery-and-mootools-the-same-page-t1039.html#p3458)。
我主要使用 jQuery,但有时我也会在涉及大量 JavaScript 工作的项目中使用 MooTools,因为它拥有出色的默认原型扩展库。
我知道一个网站,其中使用了各种库,总共 150k。加上内容和 CSS - 另外 50k。加载时间约为 30 秒。
是的,有时我会使用库,但更多时候我会尝试使用小型/轻量级的代码片段,而不是整个库。
是的,我刚开始的时候做过很多次 :)