bootstrap Export util+dom helpers and BaseComponent v 5.2

7rfyedvj  于 5个月前  发布在  Bootstrap
关注(0)|答案(4)|浏览(146)

先决条件

建议

// resulting bootstrap.bundle.js from index.umd.js

  const index_umd = {
    Alert,
    Button,
    Carousel,
    Collapse,
    Dropdown,
    Modal,
    Offcanvas,
    Popover,
    ScrollSpy,
    Tab,
    Toast,
    Tooltip,
    // extra
    BaseComponent,
    util: {
      defineJQueryPlugin,
      execute,
      executeAfterTransition,
      findShadowRoot,
      getElement,
      getElementFromSelector,
      getjQuery,
      getNextActiveElement,
      getSelectorFromElement,
      getTransitionDurationFromElement,
      getUID,
      isDisabled,
      isElement,
      isRTL,
      isVisible,
      noop,
      onDOMContentLoaded,
      reflow,
      triggerTransitionEnd,
      toType
    },
    dom: {
        EventHandler,
        SelectorEngine,
        Manipulator,
        Data,
    },
  };

动机和背景

如果我们正在编写一个独立的/未捆绑的引导插件,额外导出的帮助程序(已在完整捆绑的核心中导入/使用)将有助于以“引导方式”编写插件本身,而无需重新导入( util/index.js , dom/event-handler.js 等 ...)并因此不必要地增加插件文件大小。
我将保留一个小写版本 globalThis.bootstrap.util , globalThis.bootstrap.dom 来区分实用程序/ DOM 帮助程序和组件。
敬上

ntjbwcob

ntjbwcob1#

我希望为社区提供一些关于如何构建“Bootstrappy”的标准化文档。我认为我们可以尽一切努力使人们更容易与我们合作。

x33g5p2x

x33g5p2x2#

你好,@mdo,一个bs组件开发文档会是一个很好的事情,但我认为它需要花费很多时间,尤其是要跟上新版本。对于普通开发者来说,bs代码本身就很易于理解,它本身就是一种文档。我认为最紧急的事情是即使在不使用bundler的情况下也要有bs内部工具可用。我发现自己几次重写bs实用函数/对象的草稿版本,只是为了避免重新导入整个模块。
附注:将bs组件的内部常量作为只读静态属性提供,就像NAME那样,会不会很有用呢?
此致
敬礼

x8goxv8g

x8goxv8g3#

#33542 中再次讨论了这个问题。我不确定是否可以提供所有 Bootstrap 内部内容,因为我们需要添加文档,维护工作可能会变成噩梦(内部更改,重构)。也许我们可以将 BaseComponent 导出以便为扩展提供机会,但这样我们还需要导出 EventHandlerSelectorEngine 和可能的 Manipulator 。我不觉得这样做是对的(至少在 v6 之前)

当然,我不认为将 BS 工具(index.js)导出是一个好主意,因为它们是根据我们的需求指定的,而且从 v4 到 v5 的过渡还没有达到一个良好的状态

@julien-deramond@louismaximepiton 你有什么看法?

bjg7j2ky

bjg7j2ky4#

你好,

自从我们对这个问题的改变不完全了解,以及我们还没有在这个主题上做很多工作以来,我们一直在努力解决这个问题。

我们都同意,看到这个API的稳定版本会很好,因为它可以帮助人们构建基于Bootstrap的组件。但这意味着API需要增加很多工作:

  • API版本之间没有回归问题
  • 通知每个更改(这可能是个噩梦)
  • 也许可以添加一些关于新功能的文档

关于需要导出的内容,基于Boosted自定义组件,我们假设每个Js组件至少需要BaseComponentEventHandlerSelectorEngine。我个人还没有使用过Manipulator,所以我对此了解不多。此外,如果GeoSot认为我们应该将一些文件保留为私有给Bootstrap,因为它们还没有准备好,我认为在准备好之前应该保持私有。

相关问题