Develop Note by J.S.

[Vue3] 다중 Instance 본문

FrontEnd/Vue3

[Vue3] 다중 Instance

js-web 2023. 6. 30. 14:53
반응형

SPA(Single Page Application)로 개발을 하다보면 여러 조건들과 권한에 따라 로직을 구분해야하는 상황이 발생합니다. 성격이 다른 페이지들을 단일 Vue Instance에서 구현하다보면 물리적으로 분리를 시키는 것이 더 효율적일 때가 있습니다. 이때 다중 Instance를 생성하여 해결 할 수 있습니다.

 

File 분리

Vue Instance를 생성할 파일의 경로를 분리하여 각각의 Instance를 생성합니다.

// vueInstance1/main.ts
import { router } from './router'
import { createApp } from 'vue'
import App from './App1.vue'

const app = createApp(App);
app.use(router);

app.mount('#app')


// vueInstance2/main.ts
import { router } from './router'
import { createApp } from 'vue'
import App from './App2.vue'

const app = createApp(App);
app.use(router);

app.mount('#app');

 

각 Instance의 디렉토리를 분리하였으며, 각각의 router, vue component를 생성하였습니다. 인스턴스는 분할하였으나 도메인은 공유하기 때문에 사용자에게는 동일한 URL 주소로 제공됩니다. 

 

이제 인스턴스를 분리하였으니 가장 중요한 webpack 설정이 남았습니다. 실제 Build -> 배포 후에는 브라우저에서 각 페이지별 URL로 접근하기 때문에 vue Instance 내 router로 이동 가능한 페이지들은 SPA로 동작되고, 분리된 vue Instance에 페이지로 이동시에는 해당하는 html 파일을 새로 불러와 브라우저에 표시됩니다. 

 

webpack 설정은 vue.config.js에서 pages 속성으로 설정 가능합니다.

 

 

 

 

//vue.config.js

module.exports = {
    pages: {
        instance1: {
            entry: 'src/instance1/main.ts',
            template: 'public/index.html',
            filename: 'index.html',
        },
        instance2: {
            entry: 'src/instance2/main.ts',
            template: 'public/instance2/instance2.html',
            filename: 'instance2/index.html',
        },

    },
};

entry :  filename으로 최초 진입 될 경로 및 FileName

template : 해당 Instance가 Mount될 템플릿

filename : build시 생성될 html파일 경로 (url 주소 절대경로)

 

 

참고사이트
https://mmong-mong.tistory.com/4

 

반응형

'FrontEnd > Vue3' 카테고리의 다른 글

[Vue3] Keep-Alive (비활성 컴포넌트 캐싱)  (0) 2023.07.28
[Vue3] 동적 Component  (0) 2023.07.21
[Vue3] Provide/ Inject  (0) 2023.06.28
[Vue3] v-model  (0) 2023.06.28
[Vue3] Watch  (0) 2023.06.19