在 ember.js 中延迟导入外部 js 文件

Lazy import of external js file in ember.js

我正在尝试在我的应用程序路径之一中导入外部 js 文件。

@(task(function* () {
  yield import('jquery/dist/jquery').then(module => module.default);
  yield import('jquery-ui/ui/widget.js').then(module => module.default);
  yield import('jquery-ui/ui/widgets/mouse.js').then(module => module.default);
  yield import('jquery-ui/ui/data.js').then(module => module.default);
  yield import('jquery-ui/ui/ie.js').then(module => module.default);
  yield import('jquery-ui/ui/scroll-parent.js').then(module => module.default);
  yield import('jquery-ui/ui/version.js').then(module => module.default);
  yield import('jquery-ui/ui/widgets/sortable.js').then(module => module.default);
  yield import('jquery-ui/ui/position.js').then(module => module.default);    
  yield import('pivottable/dist/pivot.js').then(module => module.default);
})) pivotTableRunner;

afterModel(){
  this.get('pivotTableRunner').perform();
}

目前我一直在我的 pivotTableRunner 中导入那个库,但结果是,我不得不对从 node_modules 导入的那个库进行一些修改。我将它的内容复制到另一个文件,并将其放在 vendor 文件夹中。有没有办法在 pivotTableRunner 任务之后延迟导入它?

看起来 the suggested path 因为这将创建一个本地 NPM 模块,然后将其告知。这将允许你做

async afterModel(){
  await this.get('pivotTableRunner').perform();
  await import('LOCAL_PACKAGE');
}

创建本地模块的一些很好的说明在 this answer