машинопись 9.5+; импортировать загрузчик в модуль AMD, чтобы использовать расширения jquery

все.

Я использую require.js и TypeScript в режиме AMD, и у меня возникают проблемы с импортом Bootstrap в мои сценарии. У меня есть такие операторы импорта;

import $ = require('jquery');
import ko = require('knockout');
import bootstrap = require('bootstrap');

И он преобразует его в этот JavaScript;

define(["require", "exports", 'jquery', 'knockout'], 
    function(require, exports, $, ko) {
    ...
});

Обратите внимание, что Bootstrap отсутствует в списке необходимых модулей. Это потому, что TypeScript «умный», отметив, что я никогда не ссылаюсь на импорт Bootstrap таким образом;

// this never appears in my code
bootstrap.blah()

И удаление «неиспользуемого» импорта начальной загрузки. В обычных случаях это нормально, но бутстрап на самом деле расширяет jQuery, добавляя такие вещи, как

// bootstrap adds jQuery plugins like modal;
$(selector).modal()

Таким образом, отбрасывая включение, jQuery больше не расширяется с помощью modal() и т. д., и мой код не работает.

Что мне нужно, так это способ сообщить TypeScript, что ему действительно нужно включить 'bootstrap'module в список необходимых модулей.

Есть идеи?


person Steve Cooper    schedule 31.03.2014    source источник


Ответы (2)


Вы можете использовать этот (плохо задокументированный) небольшой трюк, добавив следующее в начало файла:

/// <amd-dependecy path="bootstrap">

Это добавит bootstrap в список зависимостей AMD.

person thomaux    schedule 07.04.2014
comment
Спасибо! Я скоро попробую. - person Steve Cooper; 11.04.2014

Что вам может понадобиться, так это раздел require.config и указать прокладку для boostrap.
Таким образом, и jquery, и boostrap экспортируют свои функции в любой селектор $ или jquery.

что-то типа :

require.config({
    baseUrl: '../',
    paths: {
        'jquery': 'lib/jquery-1.7.2',
        'boostrap': 'lib/boostrap',
    }, 
    shim: {
        jquery: {
            exports: '$'
        },
        boostrap: {
            exports: '$'
        }
    }
});
person blorkfish    schedule 31.03.2014