Jak mogę określić moduły zależne w maszynopisie AMD Modules

głosy
6

Jak mogę określić moduły zależne w module AMD z maszynopisu, w tym, na przykład, jQuery i podkreślenia. Korzystanie JavaScript zrobić na przykład tak:

define('moduleA',
    ['jquery', 'underscore'], function ($, _) {
    }
});

W jaki sposób można to zrobić tak, że maszynopis kompilator generuje kod.

Utwórz 08/10/2012 o 14:44
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
3

Przy obecnej implementacji kompilatora (0,8) na drodze do osiągnięcia tego, co szukasz jest następujący.

test.ts:

import jquery = module("jquery");
import underscore = module("underscore");

export module A {
    console.log(jquery.$ + underscore._);
}

jquery.ts:

export var $ = null;

underscore.ts:

export var _ = null;

jeśli skompilować test.ts pomocą przełącznika modułu:

tsc --module AMD test.ts

wygeneruje następujący plik JS dla Ciebie:

define(["require", "exports", "jquery", "underscore"], function(require, exports, __jquery__, __underscore__) {
    var jquery = __jquery__;
    var underscore = __underscore__;
    (function (A) {
        console.log(jquery.$ + underscore._);
    })(exports.A || (exports.A = {}));
})

Zauważ, że jeśli umieścić instrukcje importu wewnątrz modułu będzie pamiętać Codegen poprawnie z powodu błędu. Zespół pracuje obecnie nad rozwiązaniem na tej pozycji, ale miejmy nadzieję, że nie powinno blokować.

Odpowiedział 08/10/2012 o 17:22
źródło użytkownik

głosy
2

To obecnie nie działa poprawnie w maszynopisie z powodu błędu w kompilator (patrz stackoverflow ). Co musisz zrobić, to określić moduł moduleA, że przywóz jqueryi underscore, a następnie skompilować, że z -module amd. Zasadniczo, to potrzebne są następujące trzy pliki:

moduleA.ts

export module moduleA {
    import jquery = module("jquery");
    import underscore = module("underscore");
    console.log(jquery.jquery);
    console.log(underscore.underscore);
}

jquery.ts

export module jquery {
    var jquery = "jquery";
}

underscore.ts

export module underscore {
    var underscore = "underscore";
}

Kompilacja te trzy pliki z tsc -module amdwydajnością następujący kod do moduleA.js:

define(["require", "exports"], function(require, exports) {
    (function (moduleA) {
        var jquery = __jquery__;

        var underscore = __underscore__;

        console.log(jquery.jquery);
        console.log(underscore.underscore);
    })(exports.moduleA || (exports.moduleA = {}));

})

Tak jak powiedziałem wyżej, z powodu błędu w kompilator, kod ten jest w rzeczywistości błędne i będzie narzekać brakuje __jquery__przy starcie. Jednak, gdy ten błąd jest naprawione amdładowarka od node.jspowinny być w stanie załadować moduły.

Odpowiedział 08/10/2012 o 15:05
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more