Подтвердить что ты не робот

Как вы можете связать Angular 2 с помощью System JS Builder?

В настоящее время я использую System JS с System JS Builder для объединения моего приложения, его активов и библиотек, которые он ссылается. Моя проблема в том, что я могу связывать библиотеки, на которые явно ссылаются в index.html, например:

<script src="node_modules/es6-shim/es6-shim.min.js"></script>
<script src="node_modules/zone.js/dist/zone.js"></script>
<script src="node_modules/reflect-metadata/Reflect.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>

Однако я не могу понять, как я могу связать Angular 2 самостоятельно или, по крайней мере, модули, требуемые от Angular 2, так как они фактически не упоминаются в HTML. Как это можно сделать?

4b9b3361

Ответ 1

Используя systemjs-builder, вы можете связать Angular 2 с кодом приложения и расслоить ваши другие библиотеки отдельно.

Я связал любую библиотеку, на которую я ссылался бы непосредственно в HTML, в vendors.min.js и любую библиотеку, на которую ссылается через мой код system.config.js плюс app в app.min.js. В этом пример вы можете видеть, что все зависимости в Tour of Heroes загружаются на страницу в < 10 сетевых запросов (исходный код).

// Bundle dependencies into vendors file
gulp.task('bundle:libs', function () {
    return gulp.src([
        'node_modules/jquery/dist/jquery.min.js',
        'node_modules/bootstrap/dist/js/bootstrap.min.js',
        'node_modules/semantic-ui/dist/semantic.min.js',
        'node_modules/es6-shim/es6-shim.min.js',
        'node_modules/es6-promise/dist/es6-promise.min.js',
        'node_modules/systemjs/dist/system.src.js',
        'system.config.js',
      ])
        .pipe(concat('vendors.min.js'))
        .pipe(uglify())
        .pipe(gulp.dest('public/lib/js'));
});

// Compile TypeScript to JS
gulp.task('compile:ts', function () {
  return gulp
    .src([
        "src/**/*.ts",
        "typings/*.d.ts"
    ])
    .pipe(sourcemaps.init())
    .pipe(tsc({
        "module": "system",
        "moduleResolution": "node",
        "outDir": "public/dist/js",
        "target": "ES5"
    }))
    .pipe(sourcemaps.write('.'))
    .pipe(gulp.dest('public/dist'));
});

// Generate systemjs-based builds
gulp.task('bundle:js', function() {
  var builder = new sysBuilder('public', './system.config.js');
  return builder.buildStatic('app', 'public/dist/js/app.min.js');
});

// Minify JS bundle
gulp.task('minify:js', function() {
  return gulp
    .src('public/dist/js/app.min.js')
    .pipe(uglify())
    .pipe(gulp.dest('public/dist/js'));
});

gulp.task('scripts', ['compile:ts', 'bundle:js', 'minify:js']);

Ответ 2

Вы можете использовать пакет, например Webpack или Rollup (мое предпочтение, потому что оно дребезжит).

Команда Angular, как представляется, собирает отличные инструменты вокруг Rollup во время полной версии. В дневнике 2-го дня ng-conf в этом году обсуждался и демонстрировался автономный компилятор. Начните смотреть это в 25:30.