Как определить зависимые модули в модулях машинописи AMD

голоса
6

Как определить зависимые модули в Модуля AMD с машинопись, в том числе, например, JQuery и подчеркивания. Использование JavaScript я, например, так:

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

Как это сделать так, чтобы машинопись компилятор генерирует код.

Задан 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