延迟导入ember.js中的外部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();
}

目前,我一直在将该数据库导入ivottableRunner中,但事实证明,我不得不对从node_modules导入的该库进行一些修改。我将其内容复制到另一个文件,并将其放置在供应商文件夹中。在pivottableRunner任务之后,有什么方法可以懒惰地导入它吗?

解决方法

看来the suggested path就是要创建一个本地NPM模块,然后进行介绍。这可以让你做

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

this answer

中提供了一些有关创建本地模块的良好说明。