Jak lze definovat závislé moduly na stroji AMD moduly

hlasů
6

Jak lze definovat závislých modulů na AMD modul s psacím stroji, včetně například, jQuery a podtrhují. Pomocí JavaScriptu dělám, například takto:

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

Jak to lze provést tak, že na psacím stroji kompilátor vygeneruje tento kód.

Položena 08/10/2012 v 14:44
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
3

Při současném provádění kompilátoru (0,8) na způsob, jak dosáhnout toho, co hledáte, je následující.

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;

pokud při kompilaci test.ts pomocí přepínače modulu:

tsc --module AMD test.ts

bude generovat následující soubor JS pro vás:

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 = {}));
})

Všimněte si, že když dáte příkazu import uvnitř modulu bude na vědomí, CodeGen správně kvůli chybě. Tým je v současné době pracuje na opravu na této položce, ale doufejme, že tě neměl blokovat.

Odpovězeno 08/10/2012 v 17:22
zdroj uživatelem

hlasů
2

To v současné době nepracuje správně na stroji kvůli chybě v kompilátoru (viz StackOverflow ). Co budete muset udělat, je definovat modul moduleA, že dovoz jquerya underscore, a pak kompilovat, že se -module amd. Zjednodušeně řečeno, budete potřebovat následující tři soubory:

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";
}

Kompilace tyto tři soubory s tsc -module amdvýnosy následující kód 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 = {}));

})

Jak jsem řekl výše, kvůli chybě v kompilátoru, tento kód je vlastně nesprávné a bude stěžovat na chybějící __jquery__za běhu. Avšak poté, co tato chyba je fixovány amdnakladač node.jsby měl být schopen načíst moduly.

Odpovězeno 08/10/2012 v 15:05
zdroj uživatelem

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