【问题标题】:When I create a jQuery plugin, is it best practice to include Modernizr when I need it?当我创建一个 jQuery 插件时,最好的做法是在我需要时包含 Modernizr 吗?
【发布时间】:2011-07-15 06:11:16
【问题描述】:

我只是想知道,因为我一直在努力做非常简单的事情:我目前正在编写一个 jQuery 移动轮播插件,您可以在其中通过滑动从图像切换到图像。对于移动设备,使用 CSS3 转换/转换是有意义的,因为这会提高性能。

为了测试功能是否可用,我可以使用 Modernizr,但我不太热衷,因为为简单的轮播插件添加另一个脚本似乎有点太多了,尤其是在移动世界中,因为带宽非常宝贵。你们只是将 Modernizr 部分复制到插件中,还是将 Modernizr 作为先决条件?

干杯

【问题讨论】:

    标签: jquery plugins mobile modernizr


    【解决方案1】:

    如果您只需要测试浏览器是否具有某种功能,您最好只使用YepNope 加载器。

    【讨论】:

    • 但这也会在插件中添加另一个脚本。问题是应该将所需的功能复制到插件中还是将所需的脚本设置为先决条件?
    【解决方案2】:

    我会将脚本与它一起打包并指出它依赖于它。

    我会这样做有两个原因:

    1. 如果发布的脚本更新修复了错误或因安全漏洞而关闭,他们可以快速轻松地放入最新版本
    2. 如果他们在其他地方使用该脚本,那么它将减少下载到客户端的重复代码。

    在大小方面显然存在相反的论点,即如果他们不在其他地方使用 Modernizr,他们将不得不为该方法下载整个脚本。

    我猜这是一个判断电话,具体取决于他们需要该功能的可能性。如果他们使用的插件正在使用浏览器的超现代功能,我猜他们很可能也会在其他地方使用现代功能,并且需要进行额外检查。

    使用接缝

    您可能会考虑解决此问题的一种方法是use of a seam at your third party boundary code。这意味着您可以将对第三方库的调用打包到您自己的包装函数中。然后,您可以轻松地在 Modernizr 或您自己的所需函数版本之间进行交换,以便您可以发布依赖项和无依赖项版本。

    在这种情况下,我个人会说只要求用户包含该库作为先决条件,因为它是一个非常常见的库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-09
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      相关资源
      最近更新 更多