2015-01-15 2 views
2

Могу ли я загрузить jQuery через RequireJS? Я не понимаю, как можно корректно обрабатывать время. Смотрите этот пример:Как загрузить jQuery Migrate для jQuery через RequireJS?

require([ 
    'jquery', 
    'jqmigrate' 
], function ($) { 
    if ($.browser.msie) {...} 
}); 

это не возможно, что jqmigrate загрузит перед тем jquery? Кроме того, я не хочу постоянно загружать jqmigrate в каждый модуль. Любой способ сделать это в require.config, так что он загружает jqmigrate автоматически, когда требуется jQuery?

ответ

2

с помощью прокладок работал для меня. Я застрял, потому что у меня были плюрализированные прокладки; shim

requirejs.config({ 
    paths: { 
     'jquery': '//code.jquery.com/jquery-2.1.4', 
     'jquery-migrate': '//code.jquery.com/jquery-migrate-1.2.1' 
    }, 
    shim: { 
     'jquery-migrate': { deps: ['jquery'], exports: 'jQuery' }, 
     'foo': ['jquery'] 
    } 
}); 
require(['jquery-migrate', './foo'], ($, foo) => { 
    console.log('bootstrapped', $, foo); 
}); 
2

Есть несколько вещей, которые вам понадобятся:

  1. убедитесь, что jqmigrate зависит от jquery.
  2. вы могли бы написать модуль обертки, которые включают как и вернуть JQuery, так что ваш require.config может выглядеть следующим образом:

Jquery-wrapper.js:

define(['jquery-src', 'jqmigrate'], function ($) { 
    return $; 
}) 

require.config

{ 
    paths: { 
    'jquery-src' : '/path/to/jquery', 
    'jqmigrate': '/path/to/jqmigrate', 
    'jquery': '/path/to/jquery-wrapper' 
    } 
} 
+0

Мне пришлось удалить '' 'из параметров' function', прежде чем этот метод будет работать для меня, иначе '$' не был определен. – Reuben

+0

Возможно, это означает, что вы принимаете его из глобальной области действия, а не из модуля requireJS. –

+0

Я, возможно, сейчас, но мне показалось странным, что возвращаемое значение 'jquery-src', которое, как я предполагал, будет экземпляром jQuery, не было заполнено в' $ '. – Reuben

1

JQuery Migrate 3.0.1 в настоящее время имеет дефект, которая делает его непригодным для использования для RequireJS или любого загрузчика AMD. Изменение требуется фрагмента UMD до реализации принятого ответа:

define([ "jquery" ], function ($) { 
    return factory($, window); 
}); 

Детали и решения являются here.

Смежные вопросы