Ich konvertiere eine ASP.Net MVC-Anwendung zu Angular2 und es gibt ein seltsames Verhalten, das ich nicht verstehe.Verwirrt über Modullader (system.js) und Typoskript
Ich habe eine separate Layoutansicht für meine Angular2 - App, damit ich zwischen MVC und NG2-App wechseln kann. In diesem Layoutview Ich habe den Kopf-Element wie in der NG2-Get Tutorial Schritte ein:
<script src="/node_modules/es6-shim/es6-shim.min.js"></script>
<script src="/node_modules/systemjs/dist/system-polyfills.js"></script>
<script src="/node_modules/angular2/es6/dev/src/testing/shims_for_IE.js"></script>
<script src="/node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="/node_modules/systemjs/dist/system.src.js"></script>
<script src="/node_modules/rxjs/bundles/Rx.js"></script>
<script src="/node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="/node_modules/angular2/bundles/http.dev.js"></script>
<script src="/node_modules/angular2/bundles/router.dev.js"></script>
<script>
System.config({
defaultJSExtension: true,
packages: {
"app": {
format: 'register',
defaultExtension: 'js',
}
}
});
System.import('app/main')
.then(null, console.error.bind(console));
</script>
Und das ist mein tsconfig.json:
{
"compileOnSave": true,
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"rootDir": "app"
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}
Ich versuche zu verwenden, um zwei 3.- Party-Komponenten: angular2-modal und ng2-img-cropper. Dies sind meine Importe:
import {ModalDialogInstance, ModalConfig, Modal, ICustomModal,
YesNoModalContent, YesNoModal} from 'angular2-modal';
import {ImageCropperComponent, CropperSettings} from 'ng2-img-cropper/src/imageCropper';
Die IDE kann das angular2-modal nicht finden, aber der cropper kann gefunden werden. Warum verhalten sie sich anders? Folgen die Bibliotheken keiner Konvention oder mache ich hier etwas falsch?
Das nächste, was ich nicht verstehe ist, keiner von ihnen funktioniert. Für angular2-modal muss ich explizit auf eine js-Datei verweisen und der ng2-img-cropper funktioniert überhaupt nicht.
Warum muss ich irgendetwas referenzieren, obwohl ich einen Modullader wie system.js verwende? Und was ist das Problem mit ng2-img-cropper? Es gibt keine js-Dateien im Ordner node_modules/ng2-img-cropper, muss ich das zuerst kompilieren? Ich finde mich seltsam.
Also IDE verwendet typings, system.js exportiert Module von js-Dateien und der ts-Compiler die moduleResolution Option? – Weissvonnix
ts Compiler kompiliert TS-Dateien in JS-Einsen (Typings sind hier beteiligt). SystemJS lädt diese JS-Dateien gegen Modulnamen. Die IDE kompiliert auch TS-Dateien und zeigt Fehler an (hier handelt es sich um Typierungen). –
danke für die Klärung. Gibt es Tools zum automatischen Laden von Typings zusammen mit Paketen? Könnten Sachen wie jspm hier helfen, alles synchron zu halten? Und was ist mit libs wie ng2-img-cropper? Muss ich es im node_modules-Ordner kompilieren, um js-Dateien zu erhalten? – Weissvonnix