Angular 2和Sails.js

Angular 2和Sails.js,angular,sails.js,Angular,Sails.js,我们在应用程序的后端使用Sails.js,前端使用Angular 2。在Angular 2 rc1发布之前,一切都运行得很好。我开始升级,遇到了一些障碍 首先,我们无法从前端访问node\u modules文件夹中的任何内容。因此,为了解决这个问题,我们有一个“吞咽”任务,它需要使用我们需要的节点模块,比如@angular/文件夹、rxjs/和zone.js。这似乎奏效了。当我在HTML文件中引用js/dependencies/zone.js/dist/zone.js时,它完美地将文件拉入。但是

我们在应用程序的后端使用Sails.js,前端使用Angular 2。在Angular 2 rc1发布之前,一切都运行得很好。我开始升级,遇到了一些障碍

首先,我们无法从前端访问
node\u modules
文件夹中的任何内容。因此,为了解决这个问题,我们有一个“吞咽”任务,它需要使用我们需要的
节点模块,比如
@angular/
文件夹、
rxjs/
zone.js
。这似乎奏效了。当我在HTML文件中引用
js/dependencies/zone.js/dist/zone.js
时,它完美地将文件拉入。但是,当配置SystemJS时,文件似乎没有正确插入

var System;
(function(global) {

    // map tells the System loader where to look for things
    var map = {
        'app':                        'js', // 'dist',
        'rxjs':                       'js/dependencies/rxjs',
        // 'angular2-in-memory-web-api': 'angular2-in-memory-web-api',
        '@angular':                   'js/dependencies/@angular',
    };

    // packages tells the System loader how to load when no filename and/or no extension
    var packages = {
        'app':                        { main: 'main.js',  defaultExtension: 'js' },
        'rxjs':                       { defaultExtension: 'js' },
        // 'angular2-in-memory-web-api': { defaultExtension: 'js' },
        // '/angular2-jwt':              { defaultExtension: 'js' }
    };

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

    // add package entries for angular packages in the form '@angular/common': { main: 'index.js', defaultExtension: 'js' }
    packageNames.forEach(function(pkgName) {
        packages[pkgName] = { main: 'index.js', defaultExtension: 'js' };
    });

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

    System.config(config);

})(this);
这是我用来设置SystemJS的配置文件。然而,
rxjs
@angular
并没有被SystemJS引入。这些错误从浏览器的控制台中消失了,但应用程序肯定没有被引导

有没有其他方法可以让SystemJS拉入
@angular
文件?要启动Angular 2应用程序并使用Sails运行,我还需要哪些其他选项

****编辑****


有了
systemjs.config.js
文件、
layout.ejs
文件和
main.ts
文件。

我让我的应用程序开始像预期的那样加载
@angular
包。我不知道为什么这是一个问题,但它最终影响了我。在我的
tsconfig.json
文件中,声明了一个
outFile
属性。我确保文件被传输并输出到正确的位置,但直到我删除
outFile
属性并让它自己确定该部分后,它才起作用


这可能不是每个人的问题的答案,但对我来说是有效的。

制作sails/angular应用程序的最佳方法是使用基于REST API的体系结构。您可以从SAIL中删除视图,并为独立的Angular2应用程序创建RESTAPI。然后在Angular2中使用Angular2材质。通过这种方式,问题最少。

我通过编辑grunt复制任务来做同样的事情,但我注意到,当我第一次提起服务器时,依赖项没有反映出来。如果我停止服务器并再次启动它,依赖项就在那里。我不同意“最好的方法”是你所建议的。让Sails返回Angular应用程序索引页面是非常好的,并按预期工作。