복붙노트

[JQUERY] 웹팩와 실제 창 개체에 jQuery를 노출

JQUERY

웹팩와 실제 창 개체에 jQuery를 노출

해결법


  1. 1.당신은 노출 로더를 사용해야합니다.

    당신은 노출 로더를 사용해야합니다.

    npm install expose-loader --save-dev
    

    당신이 그것을 필요로 할 때 당신은이 작업을 수행 할 수 있습니다 :

    require("expose?$!jquery");
    

    또는 당신은 당신의 설정에서이 작업을 수행 할 수 있습니다 :

    loaders: [
        { test: require.resolve('jquery'), loader: 'expose?jQuery!expose?$' }
    ]
    

    UPDATE :로 웹팩 2, 당신은 노출 로더를 사용하는 대신에 노출해야합니다

    module: {
        rules: [{
            test: require.resolve('jquery'),
            use: [{
                loader: 'expose-loader',
                options: '$'
            }]
        }]
    }
    

  2. 2.ProvidePlugin는 각각의 수입을 통해 다른 소스에서 기호를 대체하지만, 글로벌 네임 스페이스에 기호를 노출하지 않습니다. 전형적인 예는 jQuery를 플러그인입니다. 그들 대부분은 jQuery를 전 세계적으로 정의 될 것으로 기대합니다. ProvidePlugin하면 확인 jQuery를이 ( 'jQuery를') 요구의 웹팩 원 상당으로 대체 될 것 종속성 (예를 들어, 전에로드) 및 자신의 코드에서 jQuery를의 선두로부터 인 것을 만들 것입니다.

    ProvidePlugin는 각각의 수입을 통해 다른 소스에서 기호를 대체하지만, 글로벌 네임 스페이스에 기호를 노출하지 않습니다. 전형적인 예는 jQuery를 플러그인입니다. 그들 대부분은 jQuery를 전 세계적으로 정의 될 것으로 기대합니다. ProvidePlugin하면 확인 jQuery를이 ( 'jQuery를') 요구의 웹팩 원 상당으로 대체 될 것 종속성 (예를 들어, 전에로드) 및 자신의 코드에서 jQuery를의 선두로부터 인 것을 만들 것입니다.

    전역 네임 스페이스로 기호에 의존하는 외부 스크립트가있는 경우 (하자 년대는 외부에서 호스팅 JS 말처럼, 자바 스크립트는 셀레늄에 호출하거나 브라우저의 콘솔에서 기호를 액세스) 대신 노출 로더를 사용하고 싶습니다.

    즉 다음 노출 로더는 전역 기호에 런타임 종속성을 관리하는 반면 ProvidePlugin는 전역 기호에 빌드 타임 종속성을 관리합니다.


  3. 3.window 객체처럼 보인다는 모든 모듈에 노출되어있다.

    window 객체처럼 보인다는 모든 모듈에 노출되어있다.

    왜 그냥 가져 오기 / JQuery와 및 넣어 필요합니다

    window.$ = window.JQuery = JQuery;
    

    당신은 필요로하는 모듈 또는 사용되고있는 모듈에 하나,이 차종은 window.JQuery의 사용하는 모든 모듈을 가져 오기 / 요구하기 전에 발생하는지 확인해야합니다.


  4. 4.이것은 항상 날 위해 일했습니다. 웹팩 3 윈도우를 포함하여 $ = window.jQuery =이 필요합니다 ( "JQuery와.");

    이것은 항상 날 위해 일했습니다. 웹팩 3 윈도우를 포함하여 $ = window.jQuery =이 필요합니다 ( "JQuery와.");


  5. 5.의 없음 위의 나를 위해 일하지 않는다. (그리고 난 정말하지 노출 로더를 구문 좋아해요). 대신,

    의 없음 위의 나를 위해 일하지 않는다. (그리고 난 정말하지 노출 로더를 구문 좋아해요). 대신,

    나는 webpack.config.js에 추가 :

    var webpack = require('webpack');
    module.exports = {
       plugins: [
           new webpack.ProvidePlugin({
               $: 'jquery',
           })     
       ]
    }
    

    모든 모듈보다 $을 통해 jQuery를 통해 액세스 할 수 있습니다.

    당신은 웹팩에 의해 번들, 모듈의에 다음을 추가하여 창에 노출 될 수 있습니다 :

    window.$ = window.jQuery = $
    

  6. 6.웹팩 v2의 업데이트

    웹팩 v2의 업데이트

    매트 릭 의해 기술 된 바와 같이 노출 로더를 설치

    npm install expose-loader --save-dev
    

    그런 다음 코드를 당신의 webpack.config.js에 삽입 :

    module.exports = {
        entry: {
            // ...
        },
        output: {
            // ...
        },
        module: {
            loaders: [
                    { test: require.resolve("jquery"), loader: "expose-loader?$!expose-loader?jQuery" }
            ]
        }
    };
    

    합니다 (노출 로더 문서에서)


  7. 7.내 경우 작품에

    내 경우 작품에

    { test: require.resolve("jquery"), loader: "expose?$!expose?jQuery" } 
    
  8. from https://stackoverflow.com/questions/29080148/expose-jquery-to-real-window-object-with-webpack by cc-by-sa and MIT license