2017-01-27 42 views
9

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?

Odpowiedz

-1

Podczas korzystania z funkcji "importuj ...", TypeScript będzie kompilować moduły AMD, takie jak wyświetlane w pytaniu. Czy mógłbyś wypróbować następujący kod (sprawdź także ten samouczek: http://www.codebelt.com/typescript/typescript-amd-with-requirejs-tutorial/), aby sprawdzić, czy to wynik, o który pytasz?

/// <reference path="[YOUR IMPORT FILE]" /> 
/// ... 

/** 
* Main entry point for RequireJS 
*/ 
require(
    [ 
     // YOUR IMPORT DEFINITIONS 
    ], 
    (/* YOUR IMPORT VARIABLES */) => { 
     'use strict'; 

     // YOUR CODE HERE 
    } 
); 
+1

Nie używaj '/// <ścieżka odniesienia =" [TWOJE PLIK IMPORTU] "/>" z modułami. Po prostu "importuj" je. –