【问题标题】:jQuery and Chrome Extensions [closed]jQuery 和 Chrome 扩展 [关闭]
【发布时间】:2011-07-19 04:17:35
【问题描述】:

在 Chrome 扩展中使用 jQuery 作为 JavaScript 库是否明智? jQuery 和其他 DOM 库旨在隐藏浏览器之间的差异,由于我只针对 Chrome,我应该使用它吗?

【问题讨论】:

    标签: javascript jquery google-chrome google-chrome-extension


    【解决方案1】:

    没有理由不在您的扩展页面之一(背景、弹出窗口、选项等)上使用 jQuery。不过,您应该始终使用本地 jQuery 副本,而不是通过 http 加载远程托管的副本。

    如果可能的话,我建议不要将 jQuery 作为内容脚本注入。如果您只需要一些简单的选择器或事件侦听器,那么在每次访问页面时注入大约 100kb 的 js 代码就有点过头了。

    【讨论】:

    • 因为内容脚本会从本地磁盘加载 jQuery 并且注入默认为document_idle(针对页面速度进行了优化)我认为频繁加载是可以的。如果您将 run_at 覆盖用于任何其他注入点,我同意避免不必要的负载很重要。
    • @mrtsherman 如果有人安装了 20 个扩展,试图在每个选项卡的每个页面加载时注入 jquery,这会很明显。
    • +1 - 这是一个非常好的观点。不要偷懒。
    • Pure JS 有这个优势。您可以为较小的应用程序编写更小的代码(大小)。
    • 对不起,我不同意;有很多理由不使用 jQuery。
    【解决方案2】:

    我将它用于我的 Chrome 扩展程序,我认为它非常聪明。 jQuery 不仅仅是隐藏差异。它充满了使您能够更快、更健壮地编写代码的功能。有大量的扩展可以让你扩展你的脚本。我认为使用它会伤害到你自己!

    【讨论】:

      【解决方案3】:

      除了更快地编码和“不重新发明轮子(不必要地)”之外,有时您可能需要处理除 Chrome 扩展之外的其他内容。

      jQuery 使您可以更轻松地在其他平台或不同情况下重用该工作。

      最后,通过使用标准库,其他人将能够更轻松地:帮助、改进或仅仅信任代码。 (如果它好的话,它不会永远只属于你。)

      【讨论】:

      • 但是 jQuery 仍然只适用于 web。 Javascript 也存在于服务器端。
      【解决方案4】:

      不,你不应该在 Chrome 扩展中使用 jQuery。

      jQuery 相当大,其中绝大多数是对其他浏览器的支持,您不必在扩展中关心这些。

      例如,您根本不需要 Sizzle 引擎(使用 document.querySelector),尽管这在 IE6-8 中确实很有价值。您不需要标准化的事件处理程序,因为您根本不支持 IE 或 Opera(使用 element.addEventListener)。当Chrome supports Promise natively 时,你不应该需要jQuery's deferred 实现。当你有fetch 时,你不需要$.ajax。有lots more

      此外,jQuery 不支持很多现代功能,例如您不能使用passive event handlers 或异步加载脚本(它是doesn't even support defer)。

      正如当前选择的答案还指出:jQuery 的注入成本很高。值得用最少的代码优化到您真正需要的内容。

      作为一般规则,任何工具包扩展(jQuery、Underscore 等)总是在没有它们的情况下开始,只有在你发现需要它们时才引入它们。如果您确实发现需要一个框架,请考虑利用新功能(您可以依赖 Chrome 中的功能)的更现代的框架,而不是那些旨在标准化浏览器之间代码的框架。准确地考虑一下您从框架中需要的是什么——如果只是您了解并喜欢 jQuery,那么很好(如果您/您的团队学习新事物的成本很高,那么熟悉可以成为一个理由)但您应该注意该决策中相关的注入和执行成本。

      jQuery 是一个非常优秀的工具包,得到了广泛的支持,但它并不是仅用于 Chrome 扩展的正确工具。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多