Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 打包并运行Angular2RC.0,就像之前的测试版聚合模块一样_Javascript_Angular - Fatal编程技术网

Javascript 打包并运行Angular2RC.0,就像之前的测试版聚合模块一样

Javascript 打包并运行Angular2RC.0,就像之前的测试版聚合模块一样,javascript,angular,Javascript,Angular,自从我升级到Angular2 RC.0之后,所有模块现在都单独加载(应用程序加载时有600个HTTP请求),这非常长,几乎无法使用。beta17一次加载所有模块(或者每个核心至少加载一个文件、http、rxjs…) 我遵循了beta版和RC版的官方快速入门指南 您能告诉我如何使用与beta版相同的机制,或者在RC.0中使用聚合模块的新机制是什么吗?我有同样的问题,并由“systemjs builder”解决。但是还没有详细的测试。供你参考 thx从@Gaurav获得评论 下面的代码将按“@ang

自从我升级到Angular2 RC.0之后,所有模块现在都单独加载(应用程序加载时有600个HTTP请求),这非常长,几乎无法使用。beta17一次加载所有模块(或者每个核心至少加载一个文件、http、rxjs…)

我遵循了beta版和RC版的官方快速入门指南


您能告诉我如何使用与beta版相同的机制,或者在RC.0中使用聚合模块的新机制是什么吗?

我有同样的问题,并由“systemjs builder”解决。但是还没有详细的测试。供你参考

thx从@Gaurav获得评论

下面的代码将按“@angular”下的每个文件夹打包“@angular”。 只需将它们保存到whateverthename.js文件中

var Builder = require('systemjs-builder');

var packages = {};
var packageNames = [
  '@angular/common',
  '@angular/compiler',
  '@angular/core',
  '@angular/http',
  '@angular/platform-browser',
  '@angular/platform-browser-dynamic',
  '@angular/router-deprecated',
  '@angular/upgrade',
];

packageNames.forEach(function(pkgName) {
  packages[pkgName] = { main: 'index.js' };
});

var builder = new Builder({
  baseURL: '/node_modules',
  defaultJSExtensions: true,
  packages: packages
});

packageNames.forEach(function(pkgName) {
  builder.bundle(pkgName, 'assets/'+ pkgName+'.js')
    .then(function() {
      console.log(pkgName+'Build complete');
    })
    .catch(function(err) {
      console.log(pkgName+'Build error');
      console.log(err);
    });
});
然后执行命令
node whateverthename.js

模式将构建到资产文件夹。

通过使用@A-xiao的答案并添加rxjs依赖项,我成功地将所有js文件合并到一个缩小的文件中。必须执行以下节点脚本

    var Builder = require('systemjs-builder');

var packages = {
    'rxjs': {main: 'Rx.js'}
};
var packageNames = [
    '@angular/common',
    '@angular/compiler',
    '@angular/core',
    '@angular/http',
    '@angular/platform-browser',
    '@angular/platform-browser-dynamic',
    '@angular/router-deprecated',
];

packageNames.forEach(function (pkgName) {
    packages[pkgName] = {main: 'index.js'};
});
packageNames.push('rxjs');
var builder = new Builder({
    baseURL: '/node_modules',
    defaultJSExtensions: true,
    packages: packages
});

packageNames.forEach(function (pkgName) {
    builder.bundle(pkgName, 'build/assets/' + pkgName + '.js')
        .then(function () {
            console.log(pkgName + ' Build complete');
        })
        .catch(function (err) {
            console.log(pkgName + ' Build error');
            console.log(err);
        });
});
所有生成的文件都可以合并和缩小。然后,必须在绑定文件之后导入以下systemjs.config.js

(function (global) {
    var map = {
        'app': 'app'
    };

    var packages = {
        'app': {main: 'main.js'},
        'rxjs': {main: 'Rx.js'}
    };

    var packageNames = [
        '@angular/common',
        '@angular/compiler',
        '@angular/core',
        '@angular/http',
        '@angular/platform-browser',
        '@angular/platform-browser-dynamic',
        '@angular/router-deprecated'
    ];

    packageNames.forEach(function (pkgName) {
        packages[pkgName] = {main: 'index.js'};
    });

    var config = {
        map: map,
        packages: packages,
        defaultJSExtensions: true
    };

    if (global.filterSystemConfig) {
        global.filterSystemConfig(config);
    }

    System.config(config);

})(this);

Angular2打包机似乎在工作,但我无法处理rxjs库。您是否也有以相同方式打包的解决方案?现在应该使用Angular CLI。