Używam maszynopisu z AMD i require.js, ale nie mogę uzyskać kompilatora maszynowego do wyprowadzenia kodu, który zostanie wykonany po załadowaniu modułów.Maszynopis z AMD i require.js
To main.ts
:
import { foo } from './bar';
foo('world');
To bar.ts
:
export function foo(name: string) {
alert('Hello ' + name);
}
skompilować to z następującym tsconfig.json
pliku:
{
"compilerOptions": {
"alwaysStrict": true,
"module": "amd",
"outFile": "client.js",
"target": "es5"
},
"files": [
"main.ts"
]
}
I umieścić go w moim HTML jak ta :
<script data-main="client/client.js" src="/static/require.js"></script>
jednak wygenerowany kod JavaScript wygląda następująco:
define("bar", ["require", "exports"], function (require, exports) {
"use strict";
function foo(name) {
alert('Hello ' + name);
}
exports.foo = foo;
});
define("main", ["require", "exports", "bar"], function (require, exports, bar) {
"use strict";
bar.foo('world');
});
Wszystko jest w porządku, z wyjątkiem faktu, że chciałbym, aby wykonać kod w module main
bezpośrednio. Więc ostatnia definicja powinna być
define(["require", "exports", "bar"], ...
zamiast
define("main", ["require", "exports", "bar"], ...
Obecnie musiałbym trzeci skrypt napisany w JavaScript po prostu załadować moduł main
, i uważam, że to zły styl mieć main
moduł jako kod wielokrotnego użytku.
W jaki sposób uzyskać kompilator maszynopisu do wyprowadzenia main.ts
jako definicji wykonywalnej zamiast definicji modułu?
Nie używaj '/// <ścieżka odniesienia =" [TWOJE PLIK IMPORTU] "/>" z modułami. Po prostu "importuj" je. –