如何有选择地导入 ES2015 模块函数,但具有命名空间?

2023-11-28

我正在开始使用 Rollup 和 D3 版本 4,它是用 ES2015 模块编写的。我使用传统的 D3 命名空间“d3”编写了一些代码。现在我想使用 Rollup 创建自定义捆绑包。我想使用 tree-shaking,因为我可能只使用 d3 中大约一半的函数,并且我想让事情尽可能简单。

我很清楚我可以有选择地导入函数,例如:

import {scaleLinear} from "d3-scale";
import {
      event,
      select,
      selectAll
} from "d3-selection";

这很快就会变得非常冗长,因为 d3 的一半是很多函数。我可以忍受这一点。更大的问题是,它还需要在没有命名空间的情况下完全重写我的所有函数标识符。我不太关心这一点,因为我更喜欢命名空间库代码。

我知道我可以导入所有模块:

import * as d3 from "d3";

它保留了 d3 对象命名空间,这对我的代码组织很有好处。但是 Rollup 无法将未使用的函数从捆绑包中摇出。

我的梦想是这样的:

import {
      event,
      select,
      selectAll
} as d3 from "d3-selection";

但规范中似乎不存在这种功能/语法。如何有选择地定位模块的各个部分,并在导入期间保留命名空间?


您需要一个重新导出模块:

export {
      event,
      select,
      selectAll
} from "d3-selection";

import * as d3 from './d3';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何有选择地导入 ES2015 模块函数,但具有命名空间? 的相关文章

随机推荐

  • 如何在 PHP 中更好地使用 Smarty?

    我发现在 PHP 中使用 Smarty 有时需要花费额外的时间 1 使用与 PHP 本身完全不同的语法2 需要检查小案例 因为文档没有提供更详细的细节 例如 逃逸 http www smarty net manual en language
  • 是否可以从 C++ 中的模板类型获取 char* 名称

    我想获取模板类型的字符串名称 const char 不幸的是我无法访问 RTTI template lt typename T gt struct SomeClass const char GetClassName const return
  • 如何增加 Flutter 中特定列表项的计数器?

    就像下面的示例图片一样 我想在单击单个列表项的按钮时增加或减少数量 如果我增加 setState 中的计数器 它会在每个列表项中递增 我需要这方面的帮助 特别是在处理 Flutter 中的特定列表项时 示例图片 2 任何帮助表示赞赏 提前致
  • 更新 ElasticSearch 设置中的分析器

    我正在使用 Sense Chrome 插件 并且我已经成功设置了一个分析器并且它工作正常 如果我对设置发出 GET media settings 则会返回以下内容 media settings index creation date 142
  • 如何将 console.log 写入文件

    现在我使用以下方式显示信息 console log kraken id markets 但是 我想将所有发送到控制台的信息写入文件中 如何通过完成以下代码来完成此操作 use strict var ccxt require ccxt asy
  • 我可以限制通用堆栈的深度吗?

    是否有内置方法来限制 System Collection Generics Stack 的深度 那么 如果您处于最大容量 推入新元素会删除堆栈的底部吗 我知道我可以通过转换为数组并重建堆栈来做到这一点 但我认为可能已经有一个方法了 编辑 我
  • 使用 (Core)Foundation 折叠/规范化连字(例如 Æ 到 ae)

    我正在编写一个助手 它对输入字符串执行多次转换 以便创建该字符串的搜索友好表示 考虑以下场景 德语或法语文本全文搜索 The entries in your datastore contain M ller Gro mann inglet
  • 什么是三法则?

    什么是复制对象 mean 什么是复制构造函数和复制赋值运算符 我什么时候需要自己申报 如何防止我的对象被复制 介绍 C 处理用户定义类型的变量值语义 这意味着对象在各种上下文中隐式复制 我们应该理解 复制对象 的实际含义 让我们考虑一个简单
  • 为什么Git源代码中一些声明为extern和头文件的函数没有包含在source中?

    我想查看真实应用程序的源代码以了解良好的编程实践等 因此我选择了 Git 并下载了 1 8 4 版本的源代码 随机浏览各种文件后 这两个文件中的一些内容引起了我的注意 strbuf h strbuf c 这两个文件显然定义了一个 API本文
  • 使用双指针作为参数

    请找到如下所示的代码片段 include
  • 如何通过 mmap 映射内存指针进行写入以立即刷新?

    在双 ARM 处理器系统 确切地说是 Xilinx Zynq 上使用 dev mem 和 mmap 时 我遇到了似乎是缓存的问题 我的配置是不对称的 一个处理器运行 Linux 另一个处理器运行裸机应用程序 它们通过不在 Linux 虚拟内
  • Windows 8 fat 二进制文件(适用于 x86 和 ARM 的 exe)

    有谁 这里 知道 Windows 8 是否会有一种可以用 Visual Studio 2012 编译的胖 exe 并且在 ARM 和 x86 机器上都支持 我猜不会 因为据我所知 您无法创建执行 32 或 64 位代码的胖二进制文件 据我所
  • 从原始位到 jpeg,无需写入文件

    我有一个实时应用程序 它接收以 base64 编码的 jpg 图像 我不知道如何在 matlab 中显示图像 而不必将图像保存在磁盘中并随后打开它 这是我到目前为止的代码 它在显示图像之前将图像保存在磁盘中 raw base64decode
  • 如何在ash shell中保持程序在后台运行

    我需要通过 SSH 连接到嵌入式设备 启动后台程序 然后断开连接并保持后台进程运行 问题是嵌入式设备正在使用 ash shell 不是 bash 或其他任何东西 因此 nohup 和 screen 不可用 我还没有找到任何方法来断开灰烬中的
  • Android Edittext 中输入类型为数字的多行是否可能?

    当android edittext输入类型为数字时 是否可以制作多行 我已经在 xml 文件中尝试过以下内容 android inputType number textMultiLine 但这没有用 当输入类型为数字时 是否无法制作多行 请
  • Jersey 2.0 的依赖注入

    在没有任何 Jersey 1 x 知识的情况下从头开始 我很难理解如何在 Jersey 2 0 项目中设置依赖项注入 我还了解到 HK2 在 Jersey 2 0 中可用 但我似乎找不到有助于 Jersey 2 0 集成的文档 Manage
  • 在 Android 中使用网络服务发现出现内部错误

    在第一次使用示例和 NSDManager 实现期间开发者页面上的教程 应用程序成功启动发现并找到设备 不过现在好像已经坏掉了 程序启动时 经过一番初始化后 代码进入如下方法并成功运行 public void discoverServices
  • 如何向 Outlook 发送富文本格式的电子邮件?

    通过分配 text html 内容类型字符串以 HTML 格式发送电子邮件 到 Outlook 非常有效 如下所示 using MailMessage message new MailMessage message From new Mai
  • 对数组字段执行更新时,无法使用字符串字段名称 [$] 附加到数组

    rowsI 尝试对记录数组中的每个字段执行 mongodb 更新 示例架构如下 id ObjectId 508710f16dc636ec07000022 summary uid ABCDEF username bigcheese name
  • 如何有选择地导入 ES2015 模块函数,但具有命名空间?

    我正在开始使用 Rollup 和 D3 版本 4 它是用 ES2015 模块编写的 我使用传统的 D3 命名空间 d3 编写了一些代码 现在我想使用 Rollup 创建自定义捆绑包 我想使用 tree shaking 因为我可能只使用 d3