2015-01-15 4 views
2

RequireJS를 통해 jQuery 마이그레이션을로드 할 수 있습니까? 타이밍을 올바르게 처리 할 수있는 방법을 이해하지 못합니다.jQuery를로드하는 방법 RequireJS를 통해 jQuery를 마이그레이션 하시겠습니까?

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

이 아닌가 jqmigratejquery 전에로드 할 가능성이있다 :이 예제를 참조하십시오? 또한 모든 모듈에 명시 적으로로드를 유지하고 싶지 않습니다. require.config에서 이것을 수행 할 수있는 어떤 방법이라도 jQuery가 필요할 때 jqmigrate을 자동으로로드합니까?

답변

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에 의존합니다.

JQuery와 - wrapper.js :

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

require.config

당신의 require.config 모습 수 있도록
  • 당신은, 모두 포함 래퍼 모듈을 작성하고 jQuery를 반환 할 수
    { 
        paths: { 
        'jquery-src' : '/path/to/jquery', 
        'jqmigrate': '/path/to/jqmigrate', 
        'jquery': '/path/to/jquery-wrapper' 
        } 
    } 
    
  • +0

    이 방법이 나를 위해 작동하기 전에'function' 매개 변수에서'$'을 제거해야했습니다. 그렇지 않으면'$'가 정의되지 않았습니다. – Reuben

    +0

    이것은 아마도 requireJS 모듈이 아니라 전역 범위에서 가져온 것임을 의미합니다. –

    +0

    필자는 아마 지금이지만, jQuery 인스턴스가 될 것이라고 가정 한'jquery-src'의 반환 값이'$'에 채워지지 않았다는 것이 이상하다고 생각했습니다. – Reuben

    1

    jQuery를 마이그레이션 3.0.1 현재 RequireJS 또는 AMD 로더는 사용할 수 없게 결함을 갖는다. 변경은 허용 대답을 구현하기 전에 UMD 조각에 필요합니다

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

    세부 사항 및 솔루션 here이다.