我想學習angular2但是我堅持與SystemJS配置。請解釋這個SystemJs配置
<!DOCTYPE html>
<html>
<head>
<title>Reloyalty Administration Dashboard</title>
<!-- Viewport mobile tag for sensible mobile support -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="icon" href="/favicon.ico">
<!-- For Angular2 Routing -->
<base href="/">
<!-- Common Scripts-->
<script src="/common/js/jquery-1.11.3.min.js"></script>
<!--SCRIPTS-->
<script src="/bootstrap/js/bootstrap.min.js"></script>
<script src="/dashboard/js/bootstrap-switch.js"></script>
<script src="/dashboard/js/calendar-conf-events.js"></script>
<script src="/dashboard/js/chartjs-conf.js"></script>
<script src="/dashboard/js/common-scripts.js"></script>
<script src="/dashboard/js/easy-pie-chart.js"></script>
<script src="/dashboard/js/form-component.js"></script>
<script src="/dashboard/js/gritter-conf.js"></script>
<script src="/dashboard/js/jquery-ui-1.9.2.custom.min.js"></script>
<script src="/dashboard/js/jquery.backstretch.min.js"></script>
<script src="/dashboard/js/jquery.dcjqaccordion.2.7.js"></script>
<script src="/dashboard/js/jquery.nicescroll.js"></script>
<script src="/dashboard/js/jquery.scrollTo.min.js"></script>
<script src="/dashboard/js/jquery.sparkline.js"></script>
<script src="/dashboard/js/jquery.tagsinput.js"></script>
<script src="/dashboard/js/jquery.ui.touch-punch.min.js"></script>
<script src="/dashboard/js/sparkline-chart.js"></script>
<script src="/dashboard/js/tasks.js"></script>
<script src="/dashboard/js/zabuto_calendar.js"></script>
<script src="/dashboard/js/bootstrap-inputmask/bootstrap-inputmask.min.js"></script>
<script src="/dashboard/js/chart-master/Chart.js"></script>
<script src="/dashboard/js/fancybox/jquery.fancybox.js"></script>
<script src="/dashboard/js/fullcalendar/fullcalendar.min.js"></script>
<script src="/dashboard/js/gritter/js/jquery.gritter.js"></script>
<script src="/dashboard/js/jquery-easy-pie-chart/jquery.easy-pie-chart.js"></script>
<script src="/js/node_modules/es6-shim/es6-shim.min.js"></script>
<script src="/js/node_modules/reflect-metadata/Reflect.js"></script>
<script src="/js/node_modules/systemjs/dist/system-polyfills.js"></script>
<script src="/js/node_modules/systemjs/dist/system.src.js"></script>
<script src="/js/node_modules/zone.js/dist/zone.js"></script>
<script src="/js/node_modules/rxjs/bundles/Rx.js"></script>
<!--SCRIPTS END-->
<script>
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js',
main: 'main.js'
},
'@angular/core': {
main: 'bundles/core.umd.js',
defaultExtension: 'js'
},
'@angular/compiler': {
main: 'bundles/compiler.umd.js',
defaultExtension: 'js'
},
'@angular/common': {
main: 'bundles/common.umd.js',
defaultExtension: 'js'
},
'@angular/platform-browser-dynamic': {
main: 'bundles/platform-browser-dynamic.umd.js',
defaultExtension: 'js'
},
'@angular/platform-browser': {
main: 'bundles/platform-browser.umd.js',
defaultExtension: 'js'
},
rxjs: {
main: 'bundles/Rx.umd.min.js',
defaultExtension: 'js'
}
},
map: {
'app': '.', // where my app is. '.' means relative
'@angular': '/js/node_modules/@angular',
'rxjs': '/js/node_modules/rxjs'
}
});
System.import('management/main')
.then(null, console.error.bind(console));
</script>
<!-- end AngularJS 2-->
</head>
<body>
<my-app>Loading...</my-app>
</body>
</html>
我的文件結構是:
management/
├── app/
│ ├── app.component.ts
| ├── root.module.ts
├──main.ts
main.ts:
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import {RootModule} from "./app/root.module";
platformBrowserDynamic().bootstrapModule(RootModule);
root.module.ts:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
@NgModule({
imports: [BrowserModule], // what my Angular Application needs
declarations: [AppComponent], // the view classes that belong to this module.
bootstrap: [AppComponent], // which class to boostrap
})
export class RootModule {}
app.component.ts:
import {Component} from '@angular/core';
@Component({
selector: 'my-app',
template: '<h1>BLAAH is best !!! OMGOMGOMG blagh assdsdasd</h1>'
})
export class AppComponent { }
我已經閱讀了所有文檔systemjs提供,但似乎無法理解配置中發生了什麼。
例如,如果我寫:
System.import('main')
.then(null, console.error.bind(console));
我在控制檯中的錯誤?
GET http://merchant.localhost:1337/main.js 404 (Not Found)
Error: (SystemJS) XHR error (404 Not Found) loading http://merchant.localhost:1337/main.js(…)
=========================================== ==============================
---------------- --------------------編輯1 ---------------------------- ---
=========================================== ==============================
我改變:
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js',
main: 'main.js'
},
'@angular/core': {
main: 'bundles/core.umd.js',
defaultExtension: 'js'
},
'@angular/compiler': {
main: 'bundles/compiler.umd.js',
defaultExtension: 'js'
},
'@angular/common': {
main: 'bundles/common.umd.js',
defaultExtension: 'js'
},
'@angular/platform-browser-dynamic': {
main: 'bundles/platform-browser-dynamic.umd.js',
defaultExtension: 'js'
},
'@angular/platform-browser': {
main: 'bundles/platform-browser.umd.js',
defaultExtension: 'js'
},
rxjs: {
main: 'bundles/Rx.umd.min.js',
defaultExtension: 'js'
}
},
map: {
'app': 'management', // where my app is. '.' means relative
'@angular': '/js/node_modules/@angular',
'rxjs': '/js/node_modules/rxjs'
}
});
System.import('app')
.then(null, console.error.bind(console));
因此,現在我的應用程序位於管理文件夾中,並以「應用程序」啓動它,該應用程序知道它必須運行main.js等。這工作。大。所以我繼續創建了一個root.component.html,它現在不會被加載。 下面是代碼:
root.component.ts:
import {Component} from '@angular/core';
@Component({
selector: 'root-component',
templateUrl: 'root.component.html'
})
export class RootComponent { }
和錯誤:
GET http://merchant.localhost:1337/root.component.html 404 (Not Found)
重命名應用程序:'。'to app:'management'然後System.import('main')給我「GET http://merchant.localhost:1337/main 404(Not Found)」 – mp3por
你應該導入'app'而不是'main' 。 System.js不知道'main'是什麼。 –
我認爲你還需要修復這個包爲'main:'./main.js'' –