小编典典

如何在 Angular 中动态加载外部脚本?

all

我有这个模块,它将外部库与其他逻辑一起组件化,而无需将<script>标签直接添加到 index.html 中:

import 'http://external.com/path/file.js'
//import '../js/file.js'

@Component({
    selector: 'my-app',
    template: `
        <script src="http://iknow.com/this/does/not/work/either/file.js"></script>
        <div>Template</div>`
})
export class MyAppComponent {...}

我注意到importES6 规范是静态的,并且在 TypeScript 转译期间而不是在运行时解决。

无论如何要使其可配置,以便 file.js 将从 CDN 或本地文件夹加载?如何告诉 Angular 2 动态加载脚本?


阅读 110

收藏
2022-06-30

共1个答案

小编典典

如果您使用的是 system.js,则可以System.import()在运行时使用:

export class MyAppComponent {
  constructor(){
    System.import('path/to/your/module').then(refToLoadedModule => {
      refToLoadedModule.someFunction();
    }
  );
}

如果您使用的是
webpack,则可以通过以下方式充分利用其强大的代码拆分支持require.ensure

export class MyAppComponent {
  constructor() {
     require.ensure(['path/to/your/module'], require => {
        let yourModule = require('path/to/your/module');
        yourModule.someFunction();
     }); 
  }
}
2022-06-30