Popper.js 性能

Tree-shaking

尽管 Popper v2 的包大小从v1大幅减少(减少了2 kB,从7 kB 压缩到5 kB ),但这仍然不是最理想的。

Popper 解决了很多用例和复杂性,但为了帮助保持用户的捆绑包大小较小,我们让库可以 tree-shaking 。“tree-shaking” 是从捆绑包中删除未使用代码的过程,这是由 webpack、Rollup 和 Parcel 等捆绑包实现的。

如果你使用的是 CDN,tree-shaking 是不可用的。

Popper Lite

启用 tree-shaking 的最直接的方法是使用Popper Lite并根据您的需要配置它。

而不是下面的:

// ❌ Imports all of Popper!
import { createPopper } from '@popperjs/core';

是:

// ✅
import { createPopper } from '@popperjs/core/lib/popper-lite';

Popper Lite只带有以下修饰符:

  • popperOffsets
  • ** computeStyles**
  • applyStyles
  • eventListeners

这有效地实现了最小的功能,并且压缩了大约3 kB。如果3 kB对您的应用程序来说仍然太多,我们建议尝试小至1 kB 的 CSS 工具提示替代品。请注意,这样的库有很多 Popper 没有的缺点,所以在必要时进行权衡。

现在,您需要添加所需的修饰符。这些可以在** @popperjs/core/lib/modifiers/ **目录下访问。

通常,我们推荐flip和preventtoverflow,因为这是使用Popper的最吸引人的原因:

import { createPopper } from '@popperjs/core/lib/popper-lite';
import flip from '@popperjs/core/lib/modifiers/flip';
import preventOverflow from '@popperjs/core/lib/modifiers/preventOverflow';

createPopper(reference, popper, {
  modifiers: [flip, preventOverflow],
});

Popper Generator

要默认传递这些额外的修饰符,你可以使用popperGenerator函数:

import {
  popperGenerator,
  defaultModifiers,
} from '@popperjs/core/lib/popper-lite';
import flip from '@popperjs/core/lib/modifiers/flip';
import preventOverflow from '@popperjs/core/lib/modifiers/preventOverflow';

const createPopper = popperGenerator({
  defaultModifiers: [...defaultModifiers, flip, preventOverflow],
});

// 现在你可以使用" createpapper "

将元素附加到DOM中

使用Popper的推荐方法是将 Popper 元素附加到它们的引用元素旁边。

这确保了可访问性最佳实践得到遵循,例如键盘导航和屏幕阅读器支持。

在某些情况下,您可能希望将 popper 元素附加到 DOM 的顶部,例如<body/>,这当然也得到了支持,但应该采取一些措施,以确保一切都以最好的方式工作。

为确保最佳性能,建议不要将元件直接附加到<body/>元素,而是在<body/>内创建一个<div/>元件,并将其用作poppers的容器。

查看笔记

扫码一下
查看教程更方便