Πώς μπορώ να ορίσει ενότητες που εξαρτώνται σε γραφομηχανή AMD Ενότητες

ψήφοι
6

Πώς μπορώ να καθορίζουν τις ενότητες που εξαρτώνται σε μια μονάδα AMD με γραφομηχανή, συμπεριλαμβανομένων, για παράδειγμα, jQuery και υπογραμμίζουν. Χρησιμοποιώντας την Javascript για να κάνω, για παράδειγμα, ως εξής:

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

Πώς να το κάνετε αυτό, έτσι ώστε compiler γραφομηχανή δημιουργεί αυτόν τον κώδικα.

Δημοσιεύθηκε 08/10/2012 στις 14:44
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
3

Με την τρέχουσα υλοποίηση του μεταγλωττιστή (0.8) ο τρόπος για να επιτευχθεί αυτό που επιδιώκουν είναι η ακόλουθη.

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;

αν συγκεντρώνουν test.ts με το διακόπτη της μονάδας:

tsc --module AMD test.ts

θα δημιουργήσει το ακόλουθο αρχείο JS για εσάς:

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

Σημειώστε ότι αν βάλεις δηλώσεις εισαγωγής στο εσωτερικό της μονάδας θα σημειωθεί CODEGEN σωστά οφείλεται σε σφάλμα. Η ομάδα εργάζεται αυτή τη στιγμή για την επίλυσή του σε αυτό το σημείο, αλλά ελπίζω ότι δεν θα πρέπει να σας εμποδίσει.

Απαντήθηκε 08/10/2012 στις 17:22
πηγή χρήστη

ψήφοι
2

Αυτή τη στιγμή δεν λειτουργεί σωστά στη γραφομηχανή οφείλεται σε ένα σφάλμα στο μεταγλωττιστή (βλ StackOverflow ). Τι θα πρέπει να κάνετε είναι να ορίσετε μια μονάδα moduleAπου εισαγωγών jqueryκαι underscore, στη συνέχεια, την κατάρτιση που με -module amd. Βασικά, θα χρειαστείτε τα ακόλουθα τρία αρχεία:

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

Συγκέντρωση αυτά τα τρία αρχεία με tsc -module amdαποδόσεις τον ακόλουθο κώδικα για 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 = {}));

})

Όπως είπα και πιο πάνω, οφείλεται σε ένα σφάλμα στο μεταγλωττιστή, ο κώδικας αυτός είναι στην πραγματικότητα εσφαλμένη και θα διαμαρτύρονται για την απώλεια __jquery__κατά το χρόνο εκτέλεσης. Ωστόσο, όταν αυτό το σφάλμα είναι σταθερό το amdφορτωτή του node.jsθα πρέπει να είναι σε θέση να φορτώσετε τις ενότητες.

Απαντήθηκε 08/10/2012 στις 15:05
πηγή χρήστη

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