Hvordan kan jeg definere avhengige moduler i Loggfila AMD moduler

stemmer
6

Hvordan kan jeg definere de uselvstendige modulene i en AMD-modul med maskinskrevet manuskript, inkludert, for eksempel, jQuery og under. Ved hjelp av Java jeg gjør, for eksempel slik:

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

Hvordan kan du gjøre dette slik at Loggfila kompilatoren genererer denne koden.

Publisert på 08/10/2012 klokken 13:44
kilden bruker
På andre språk...                            


2 svar

stemmer
3

Med dagens implementering av kompilatoren (0,8) den måten å oppnå det du søker er følgende.

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;

Hvis du kompilere test.ts hjelp av modulbryteren:

tsc --module AMD test.ts

det vil generere følgende JS-fil for deg:

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ær oppmerksom på at hvis du setter import uttalelser inne i modulen vil det oppmerksom Codegen riktig på grunn av en feil. Teamet er for tiden jobber med en løsning på dette elementet, men forhåpentligvis det bør ikke hindre deg.

Svarte 08/10/2012 kl. 16:22
kilden bruker

stemmer
2

Dette øyeblikket fungerer ikke riktig i Loggfila på grunn av en feil i kompilatoren (se Stackoverflow ). Hva du trenger å gjøre er å definere en modul moduleAsom importerer jqueryog underscore, og deretter kompilere det med -module amd. I utgangspunktet må du ha følgende tre filer:

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

Kompilering disse tre filer med tsc -module amdavlinger følgende kode for 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 = {}));

})

Som jeg sa over, på grunn av en feil i kompilatoren, er denne koden faktisk feil og vil klage på mangler __jquery__ved kjøring. Men når denne feilen er fikset amdloader av node.jsbør være i stand til å laste modulene.

Svarte 08/10/2012 kl. 14:05
kilden bruker

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