프로그래밍/Js

vue3 Composition API 에서 jQuery 사용하기

소행성왕자 2023. 1. 17. 10:08

vue3 에서 jQuery 사용하는 방법을 알아보도록 하겠습니다.

jQuery 설치

npm install --save jquery

jQuery 설치 확인

보통 main.js 파일에 jQuery 를 import 해줍니다.

$ 한개 대신 $$ 두개를 사용하려고 합니다.

import { createApp } from 'vue'
import './style.css'
import App from './AppChart.vue'
import store from './store'
import AfterLoginClass from './js/class/AfterLogin'
import jQuery from 'jquery'
import mitt from 'mitt'
const emitter = mitt();


/*
createApp(App)
    .use(store)
    .use(mitt)
    .mount('#app')
*/

const coforwardUi = createApp(App);

coforwardUi.provide('emitter', emitter)
coforwardUi.use(store);
coforwardUi.use(AfterLoginClass);
coforwardUi.mount('#app');

global.$$ = jQuery;

그러나

Uncaught ReferenceError: $ is not defined 오류 발생

분명 main.js 에서 import 해주고 아래와 같은 방법으로도 해줬지만 계속 오류 발생

global.$ = jQuery;
window.$ = jQuery;

그래서

해당 component 에서 jQuery import 해줌

n-test.vue

<script setup>

import { 
    ref, 
    computed,
    onMounted,
    watch,
    inject,
} from 'vue';
import { useStore } from 'vuex';
import $ from 'jquery';

...
...
$('#h11').text('text')

 

최종 : 각 components 에 jqquery import 하는게 아니라 main.js 한번만 하는 방법

main.js

import { createApp } from 'vue'
import './style.css'
import App from './AppChart.vue'
import store from './store'
import common from './js/common'
//import AfterLoginClass from './js/class/AfterLogin'
import jQuery from 'jquery'
import mitt from 'mitt'
const emitter = mitt();


/*
createApp(App)
    .use(store)
    .use(mitt)
    .mount('#app')
*/

var coforwardUi = createApp(App);

coforwardUi.provide('emitter', emitter)
coforwardUi.use(store);
coforwardUi.use(jQuery);
coforwardUi.use(common);
//coforwardUi.use(AfterLoginClass);


//coforwardUi.config.globalProperties.$common = common;
//coforwardUi.provide('$common', common);

console.log('>>>> main.js');
console.log(coforwardUi.config);

window.coforwardUi = coforwardUi;

global.$ = jQuery;
window.$common = common;



coforwardUi.mount('#app');

이 .mount()메서드는 모든 앱 구성 및 자산 등록이 완료된 후에 항상 호출되어야 합니다. 

또한 자산 등록 방법과 달리 반환 값은 응용 프로그램 인스턴스가 아닌 루트 구성 요소 인스턴스라는 점에 유의하십시오.

https://vuejs.org/guide/essentials/application.html#the-root-component

 

Creating a Vue Application | Vue.js

 

vuejs.org