Hoe kan ik definiëren afhankelijke modules met de schrijfmachine AMD Modules

stemmen
6

Hoe kan ik bepalen de afhankelijke modules in een AMD Module met typoscript, met inbegrip van, bijvoorbeeld, jQuery en onderstrepen. Met behulp van JavaScript ik doe, bijvoorbeeld als volgt uit:

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

Hoe kan dit doen, zodat typoscript compiler genereert deze code.

De vraag is gesteld op 08/10/2012 om 14:44
bron van user
In andere talen...                            


2 antwoorden

stemmen
3

Met de huidige implementatie van de compiler (0,8) de manier om te bereiken wat je zoekt is het volgende.

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;

als je test.ts compileren met behulp van de module switch:

tsc --module AMD test.ts

het zal de volgende JS bestand voor u genereert:

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

Merk op dat als je import statements in de module zal het correct mee codegen te wijten aan een bug. Het team werkt momenteel aan een oplossing op dat punt maar hopelijk dat moet je niet blokkeren.

antwoordde op 08/10/2012 om 17:22
bron van user

stemmen
2

Dit moment werkt niet goed met de schrijfmachine te wijten aan een bug in de compiler (zie Gebruiker ). Wat u zou moeten doen is definiëren een module moduleAdat de invoer jqueryen underscore, en vervolgens samen te stellen die met -module amd. In principe zou je de volgende drie bestanden nodig:

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

Het samenstellen van deze drie bestanden met tsc -module amdrendementen van de volgende code voor 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 = {}));

})

Zoals ik hierboven al zei, als gevolg van een bug in de compiler, deze code is feitelijk onjuist en zal klagen over het missen __jquery__tijdens de uitvoering. Echter, zodra deze fout wordt vastgesteld de amdlader van node.jsmoeten kunnen de modules geladen.

antwoordde op 08/10/2012 om 15:05
bron van user

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