2023. 10. 5. 15:47ㆍIT/Vue
환경 : NativeScript Vue3 beta9 + TypeScript 기반
본격적인 모바일 하이브리드 베이스 앱을 만들고 있다.
저번에는 Navigation Drawer(Side Menu) 를 만들어 보았으니, 이번에는 하단 탭 구조(BottomNavigation)를 만들어 볼 차례가 되었다.
하단 탭 구조는 네이티브 스크립트에서 기본 제공하는 TabView / TabViewItem 등을 이용해서 만들거나, ui-material-component 플러그인, Vuetify 플러그인 등을 이용해서 만들 수 있는데, 이번에는 ui-material-component 플러그인으로 만들어 보도록하겠다.
ui-material-component 플러그인으로 선택한 이유는 실제로 되기 때문이다. Vuetify는 아직 제대로 볼 시간이 없어서 적용할 수 없었고, 네이티브 스크립트의 TabView는 실행이 되지 않았다. 아마도 기존 Vue2 로 동작하는 것이 Vue3와 무언가 호환성 이슈가 있는것 같은데, 그런것은 네이티브 스크립트 개발자들이 해결해주리라 믿는다.
Vue2 기반 네이티브 스크립트는 그냥 구글링 후 적당히 붙여넣어도 잘되는데, Vue3 기반 네이티브 스크립트는 기본 코딩 자체가 타입스크립트로 변해서 타입 체크와 코딩룰이 엄격해져서 Vue2에서 쓰던 코드들이 호환이 잘 안되어 헤딩을 많이 해야 하는 상황이다. 특히 Vue3 가 컴포지션 API 로 변경되면서 구조가 많이 변해서.... 휴 빡세..
1. 플러그인 설치(터미널 실행)
ns plugin add @nativescript-community/ui-material-bottom-navigation
2. app.ts 또는 main.ts 에 플러그인 통합
import { createApp } from 'nativescript-vue';
import Home from './components/Home.vue';
import BottomNavigation from '@nativescript-community/ui-material-bottom-navigation/vue';
createApp(Home)
.use(BottomNavigation)
.start();
3. BottomTabNavigation.vue 생성 및 코딩
순수하게 컨텐츠와 하단 탭 구조 동작이 되는 간단한 코드이다.
구글링 계속하면서 결국 되는 코드로 만들어 둔 것이니 참고하면 되겠다.
<template>
<Page>
<GridLayout rows="*, auto">
<MDBottomNavigation
row="0"
selectedIndex="1"
:iosCustomPositioning="false"
backgroundColor="blue"
>
<!-- MDTabStrip 으로 하단 네비게이션 바를 생성한다. -->
<MDTabStrip>
<MDTabStripItem>
<Label text="First" />
</MDTabStripItem>
<MDTabStripItem>
<Label text="Second" />
</MDTabStripItem>
<MDTabStripItem>
<Label text="Third" />
</MDTabStripItem>
<MDTabStripItem>
<Label text="Fourth" />
</MDTabStripItem>
</MDTabStrip>
<!-- MDTabContentItem 으로 하다 네비게이션 버튼에 따른 컨텐츠 화면을 생성한다. -->
<MDTabContentItem>
<Page backgroundColor="transparent">
<GridLayout backgroundColor="transparent">
<Label
text="First Page"
class="h2 text-center"
></Label>
<Button
text="show alert"
verticalAlignment="center"
></Button>
</GridLayout>
</Page>
</MDTabContentItem>
<MDTabContentItem>
<GridLayout backgroundColor="transparent">
<Label
text="Second Page"
class="h2 text-center"
></Label>
</GridLayout>
</MDTabContentItem>
<MDTabContentItem>
<GridLayout backgroundColor="yellow">
<Label text="Third Page" class="h2 text-center"></Label>
</GridLayout>
</MDTabContentItem>
<MDTabContentItem>
<Page>
<GridLayout backgroundColor="transparent">
<Label
text="Fourth Page"
class="h2 text-center"
></Label>
<Button
text="show alert"
verticalAlignment="center"
></Button>
</GridLayout>
</Page>
</MDTabContentItem>
</MDBottomNavigation>
</GridLayout>
</Page>
</template>
<script lang="ts">
export default {};
</script>
4. 이제 컨텐츠 화면 작성하고, 각종 커스텀을 하면 앱이 뚝딱 나오겠다.
좀 더 이쁜 화면을 위해 Vuetify 기반의 컴포넌트를 통합해볼 예정이다. 사실 화면 외의 기능들은 그냥 적당히 하면 다 될거 같아서.. 눈에 보이는 화면 위주로 베이스 프로젝트를 만들어 둘 예정이다.
'IT > Vue' 카테고리의 다른 글
[Ionic+Vue3] 네이버지도 API 연동하기 (feat. typescript) (0) | 2024.04.09 |
---|---|
[Vue3] NativeScript 에서 Side 메뉴(Drawer) 만들기 (23년 9월 기준) (0) | 2023.09.27 |
[TypeScript] 자바스크립트(js) 파일 임포트하여 사용하기 (0) | 2023.09.20 |
[NativeScript+Vue3] Error is: Invalid Version: null. 에러 해결 (1) | 2023.09.18 |
[NativeScript+Vue3] 하이브리드 앱 신규 프로젝트 생성 방법 (0) | 2023.09.18 |