使用 requirejs 的 Typescript 延迟加载 ember 个模块

Typescript lazy load ember modules with requirejs

我们正在将我们的大型 ember 应用拆分为逻辑块并延迟加载少数模块以提高性能。

我们有一个 条目,它依次递归地包含所有依赖项并在构建过程中创建一个大的 rjs 优化文件。我们希望在初始加载期间加载少量核心组件和路由,并延迟加载其他所有内容。

我们希望将我们的 require 调用嵌套在 route 中,并使用 beforeModelHook 来加载本指南中指定的相关控制器、模板和组件http://toranbillups.com/blog/archive/2014/10/02/Lazy-loading-es6-modules-with-emberjs/

现在的问题是如果我们跳过导入语句

import mycontroller = require("mycontroller")

并使用嵌套要求

beforeModel() {
   require(["mycontroller"])
   ...
}

typescript 在编译时无法将 mycontroller 列为依赖项。如何解决这个问题?

还有哪些其他方法可以提高性能?

typescript fails to list mycontroller as dependency when compiled. How to resolve this issue

您需要为您的文件使用导入的类型,以便对模块具有 运行 时间依赖性。这是专门为支持懒加载场景而设计的

文档

此处介绍:https://basarat.gitbooks.io/typescript/content/docs/project/external-modules.html