Angular 2和Sails.js
我们在应用程序的后端使用Sails.js,前端使用Angular 2。在Angular 2 rc1发布之前,一切都运行得很好。我开始升级,遇到了一些障碍 首先,我们无法从前端访问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时,它完美地将文件拉入。但是
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应用程序索引页面是非常好的,并按预期工作。