如何在浏览器中使用捆绑的Angular 2应用程序?

时间:2016-03-01 16:33:55

标签: typescript angular

我尝试将所有TypeScript代码编译成一个单独的Javascript文件。但每当我尝试使用SystemJS导入该文件时,网页都会停留在loading...

我使用gulp将typescript文件编译成一个Javascript文件,然后复制到dist文件夹。

Gulp任务:

gulp.task("dist:compileTSConcat", function() {
  return gulp.src("./app/**/*.ts")
    .pipe(ts({
      typescript: require('typescript'), // In my package.json I have "typescript": "1.8.2"
      target: 'ES5',
      module: 'system',
      moduleResolution: 'node',
      experimentalDecorators: true,
      emitDecoratorMetadata: true,
      outFile: 'app.js'
    }))
    .pipe(gulp.dest("./dist/"))
})

SystemJS在网页中导入代码:

...
    <script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.34.4/es6-shim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.23/system-polyfills.js"></script>

    <script src="https://code.angularjs.org/2.0.0-beta.7/angular2-polyfills.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.23/system-register-only.js"></script>
    <script src="https://code.angularjs.org/2.0.0-beta.7/Rx.js"></script>
    <script src="https://code.angularjs.org/2.0.0-beta.7/angular2.dev.js"></script>
    <script src="https://code.angularjs.org/2.0.0-beta.7/router.dev.js"></script>

    <script>
      //System.config({});
      System.import('app.js').then(null, console.error.bind(console));
    </script>
...

1 个答案:

答案 0 :(得分:1)

您应该将JS文件包含在script标记中并导入应用程序的入口点模块:

<script src="dist/app.js"></script>
<script>
  System.import('app').then(null, console.error.bind(console));
</script>

如果您在位于boot.ts文件夹下的名为app的文件中引导Angular 2应用程序。