ES6 中的延迟模块加载是如何工作的

2024-03-21

我怎么能够延迟加载ES6 模块?经过lazy,我的意思是我不想实际加载模块不需要。例如,我可以使用 RequireJS 执行以下操作:

function someEventHandler() {
    var SomeModule = require('some-module'),
        module = new SomeModule();
    // ...
}

使用 ES6 导入似乎不可能实现相同的功能:

// Doesn't appear to be valid...
function someEventHandler() {
    import SomeModule from 'some-module';
    var module = new SomeModule();
    // ...
}

是否有任何可行的技术可以使用 ES6 模块仅在需要时引入依赖项?或者是跟踪完整依赖关系图并预先获取所有内容的唯一路径?


The import语句仅适用于文件的最顶部,并且它将加载所有文件。这主要是为了避免循环依赖的潜在问题。

还会有一种方法可以进行异步加载;但该规范似乎尚未最终确定。这ES6 模块加载器 https://github.com/ModuleLoader/es6-module-loaderpolyfill 包使用了一种名为System.import(moduleName)返回一个承诺,最终规范可能看起来类似:

function someEventHandler() {
    System.import('some-module').then((SomeModule) => {
        var module = new SomeModule();
        // ...
    })
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ES6 中的延迟模块加载是如何工作的 的相关文章

随机推荐

  • 服务总线会话 ReceiveBatchAsync 仅接收 1 条消息

    我正在使用启用了会话的服务总线队列 并且使用相同的 SessionId 发送 5 条消息 我的接收代码使用AcceptMessageSessionAsync获取会话锁 以便它将接收该会话的所有消息 然后它使用session ReceiveB
  • 如何将文本设置为radiobutton,该文本通过编程性的放射线群架内部?

    我有一个RadioGroup我有一些RadioButtons 我想在RadioButton以编程方式 我使用以下代码 我无法访问RadioButtonS内部RadioGroup使用Java 我该如何将文本设置在RadioButton里面一个
  • “median”没有可见的全局函数定义

    自从最新的 R 更新以来 我得到了注释 Summary xmlImport 中位数 没有可见的全局函数定义 在 CRAN 检查中 更多注释请参阅read table write table以及 R 中的其他标准函数 当我查看文件summar
  • Rails 根目录路径?

    如何获取 Rails 应用程序的根目录路径 在 Rails 3 及更高版本中 Rails root 它返回一个Pathname http www ruby doc org stdlib 1 9 3 libdoc pathname rdoc
  • 多个实体到同一个 DbSet

    假设我有两个不同的课程 它们共享一些属性 但也有一些单独的属性 public class A Shared properties public int Id get set public DateTime CreatedDtm get se
  • llvm OCaml 绑定

    我正在研究 llvm OCaml 绑定 我通过 opam 安装了 llvm 包 opam install llvm 当我在 utop 中使用 llvm 时 出现以下错误 require llvm Error The external fun
  • 使用perl解码unicode转义字符

    我讨厌问一个无疑已经回答过十几次的问题 但我发现编码问题令人困惑 并且很难将其他人的问答与我自己的问题相匹配 我正在从在线 json 文件中提取信息 但我的 perl 脚本无法正确处理 unicode 转义字符 脚本如下所示 use LWP
  • 有没有办法在没有数据源的情况下创建 LINQ 查询作为变量?

    前言 我的核心问题与此非常相似 如何编写一个干净的存储库而不将 IQueryable 暴露给应用程序的其余部分 https stackoverflow com questions 1030992 how can i write a clea
  • 不插入成员的触发器不起作用

    我有这张桌子 CREATE TABLE members member id INT PRIMARY KEY NOT NULL first name VARCHAR 20 last name VARCHAR 20 web page VARCH
  • Vimeo 网站的缩略图比 YouTube 更难

    Merged https meta stackexchange com questions 158066 what is a merged question with 从 Vimeo 获取 img 缩略图 questions 1361149
  • 我可以将一个 .mdf 文件与多个 DBMS(SQL Server 2008 和 2012)一起使用吗?

    在家里 我安装了 SQL Server 2008 R2 Express 它附加到某个 mdf 文件 我正在安装 SQL Server 2012 开发人员版 我可以将 2012 附加到同一个 mdf 文件吗 从逻辑上讲 只要 SQL Serv
  • pandas / matplotlib:分面条形图

    我正在制作一系列包含两个分类变量和一个数字的数据条形图 我所拥有的是下面的内容 但我想做的是通过分类变量之一来进行刻面 就像facet wrap in ggplot 我有一个有点有效的示例 但是我得到了错误的绘图类型 线而不是条形图 并且我
  • 为什么 pub Upgrade 不升级软件包而只是显示它们

    我有 gt pub upgrade Resolving dependencies 6 2s analyzer 0 18 0 9 newer versions available angular 0 14 0 args 0 10 0 2 5
  • 聚合来自传感器的时间序列

    我有大约 500 个传感器 每个传感器大约每分钟发出一次值 可以假设传感器的值保持恒定 直到发出下一个值 从而创建时间序列 传感器在发送数据时并不同步 因此观察时间戳会有所不同 但所有数据都是集中收集并按传感器存储 以允许按传感器子集进行过
  • 将客户行为添加到 CDI 上下文中的所有 Spring Data Jpa 存储库

    我使用 CDI 成功注入 jpa 存储库 我想向所有存储库添加自定义行为 软删除 使用 spring 时 我可以通过指定存储库基类来启用客户行为 EnableJpaRepositories repositoryBaseClass Stage
  • WPF 灵活的 TabControl 标头

    我想要一个TabControl与多个TabItems These TabItems每个都有一个标题文本 这些文本的长度可能相差很大 例如 5 个字符长和 15 个字符长 我想要TabControl仅将标题对齐一行 所有选项卡标题应使用相同的
  • 如何通过Bootstrap垂直分隔线画线?

    我正在使用 Twitter Bootstrap 我需要绘制菜单线 https www dropbox com s hl8moeabxxecu8j dropdown png https www dropbox com s hl8moeabxx
  • 将 Create-React-App 与 Material UI 结合使用

    我是 Material UI 和 ReactJS 的新手 我一直在玩创建 React 应用程序 CRA https github com facebookincubator create react app and 反应带 https gi
  • 包括控制器中的模块

    我在 ruby on Rails 应用程序的 lib 目录中完成了一个模块 就像是 module Select def self included base base extend ClassMethods end module Class
  • ES6 中的延迟模块加载是如何工作的

    我怎么能够延迟加载ES6 模块 经过lazy 我的意思是我不想实际加载模块不需要 例如 我可以使用 RequireJS 执行以下操作 function someEventHandler var SomeModule require some