Vue.jsでIonic(@ionic/vue)
目次
→2020年10月 ionic-vueが正式対応したそうです。
https://i-doctor.sakura.ne.jp/font/?p=45127
Ionicは、スマホアプリ(PWAを含む)作成のためのJavascriptフレームワークです。Ionic3まではAngular専用でしたが、Ionic4から、素のJavascript(Vanilla)、ReactとVueにも対応する予定だそうです。
2019年4月現在、@ionic/vueはbeta版です。まだ、beta版ということもあり、v-modelが使用できないそうです。(残念、、、)
https://blog.ionicframework.com/announcing-the-ionic-vue-beta/
公式GitHub
https://github.com/ionic-team/ionic/tree/master/vue
公式Documentation
https://ionicframework.com/docs
上記Blogを写経してみたいと思います。
ソースコードとDEMOサイト
ソースコード
https://github.com/adash333/ionic4-vue-modal
開発環境
Windows10Pro 1803 nvm 1.1.7 node 10.15.1 npm 6.4.1 yarn 1.13.0 ionic 4.12.0 VisualStudioCode 1.33.1
今回構築した環境
vue/cli 3.7.0
→@vue/cliでvueアプリを作成した後に、@ionic/vueとvue-routerをインストールするだけなので、CodeSandboxでも可能かもしれません。
ionic-cliのupdate(install)と@vue/cliのインストール
C:/vue/ フォルダを作成し、VisualStudioCodeで開き、Ctrl+@でターミナル画面を開きます。
ionic-cliをインストール済みの場合は、以下を入力してupdateします。
npm update -g ionic
ionic-cliをインストール未の場合は、以下を入力してインストールします。
npm install -g ionic
次に、@vue/cliをインストールします。
npm install -g @vue/cli
新規Vueアプリの作成
vue create ionic4-vue-app
Use https://registry.npm.taobao.org for faster installation?
と聞かれるので、Y+Enter
Vueアプリの起動
cd ionic4-vue-app yarn serve
ブラウザで、http://localhost:8080/ を開くと、以下のようになっています。
サーバを停止するときは、ターミナル画面で、Ctrl+C ⇒ y + Enterとなります。
vue-routerと、@ionic/vueの追加
src/main.jsの変更
src/main.jsで、@ionic/vueとionic用のcssを読みこみます。
import Ionic from '@ionic/vue'; import '@ionic/core/css/ionic.bundle.css'; Vue.use(Ionic);
変更して保存したら、自動更新に60秒くらいかかりました。
src/views/Home.vueの変更
以下に書き換えます。
<router-link to=“/about”>は使用できるかな?
<template> <div class="ion-page"> <ion-header> <ion-toolbar color="primary"> <ion-title slot="start">Hello World</ion-title> </ion-toolbar> </ion-header> <ion-content class="ion-padding"> <h1>Welcome To @ionic/vue</h1> <img alt="Vue logo" src="../assets/logo.png"> <router-link to="/about"> <ion-button color="primary" expand="full">About</ion-button> </router-link> </ion-content> </div> </template> <script> export default { name: "home", }; </script>
参考:https://ionicframework.com/docs/api/button
(変更後)
ボタンの部分をクリックすると、Aboutページへ移動します。
<router-link to=“/about”></router-link>は普通に使用できるようです。
src/router.jsとsrc/App.vueの変更
上記のままでもなんかよさそうな気がしなくもないのですが、ionicをちゃんと利用できるようにするためには、以下の設定を行わなければならないそうです。
src/router.jsを編集して、vue-routerのRouterではなく、@ionic/vueのIonicVueRouterを用いるように設定します。
import { IonicVueRouter } from '@ionic/vue'; Vue.use(IonicVueRouter); export default new IonicVueRouter({ ... });
また、それに応じて、src/App.vueにおいて、<router-view />を<ion-vue-router />に変更します。
<ion-vue-router />の部分が、src/router.jsで設定したコンポーネント(Home.vueやAbout.viewなど)で置き換えられることになります。
<template> <div id="app"> <ion-app> <ion-vue-router /> </ion-app> </div> </template>
src/views/Home.vueとAbout.vueの変更(ion-buttonとion-card)
題名と画像が左寄せになってしまったので、“<div text-center></div>“で囲んで水平方向真ん中に配置します。
src/views/Home.vueの変更
<div text-center> <h1>Welcome To @ionic/vue</h1> <img alt="Vue logo" src="../assets/logo.png"> </div>
Aboutページでは、Ionicのcardを使ってみたいと思います。
参考:https://ionicframework.com/docs/api/card
参考2:https://ionicframework.com/docs/v3/components/#card-image
https://ionicframework.com/docs/demos/api/card/madison.jpg から、madison.jpgをダウンロードして、src/assets/に保存します。
src/views/About.vue
<template> <div class="ion-page"> <ion-header> <ion-toolbar color="primary"> <ion-title>Hello World</ion-title> </ion-toolbar> </ion-header> <ion-content class="ion-padding"> <div text-center> <h1>This is an about page</h1> </div> <router-link to="/"> <ion-button color="secondary" expand="full">Home</ion-button> </router-link> <ion-card> <img alt="madison.jpg" src="../assets/madison.jpg"> <ion-card-header> <ion-card-subtitle>Card Subtitle</ion-card-subtitle> <ion-card-title>Card Title</ion-card-title> </ion-card-header> <ion-card-content> Keep close to Nature's heart... and break clear away, once in awhile, and climb a mountain or spend a week in the woods. Wash your spirit clean. </ion-card-content> </ion-card> <ion-card> <ion-item href="#"> <ion-icon name="wifi" slot="start"></ion-icon> <ion-label>Card Link Item 1</ion-label> </ion-item> <ion-item href="#"> <ion-icon name="wine" slot="start"></ion-icon> <ion-label>Card Link Item 2</ion-label> </ion-item> <ion-item> <ion-icon name="warning" slot="start"></ion-icon> <ion-label>Card Button Item 1</ion-label> </ion-item> <ion-item> <ion-icon name="walk" slot="start"></ion-icon> <ion-label>Card Button Item 2</ion-label> </ion-item> </ion-card> </ion-content> </div> </template> <script> export default { name: "about" }; </script>
画像つきカードCardを作成することができました。
ion-modalを試してみる
modalという、リンクをクリックすると一時的に出てくる画面を試してみます。
src/views/Modal.vueを新規作成し、
src/views/About.vueに”Open Modal”ボタンを設置し、そのボタンをクリックすると、Modal.vueが表示されるようにします。
参考:https://ionicframework.com/docs/api/modal
src/views/Modal.vueを新規作成
<template> <div> <ion-header> <ion-toolbar> <ion-title>{{ title }}</ion-title> </ion-toolbar> </ion-header> <ion-content padding> {{ content }} </ion-content> </div> </template> <script> export default { name: 'Modal', props: { title: { type: String, default: 'Super Modal' }, }, data() { return { content: 'Content', } }, } </script>
src/views/About.vue
// <template>内に、 <div text-center> <ion-button color="success" fill="outline" @click="openModal">Open Modal</ion-button> </div> // <script>内は、以下のように <script> import Modal from './modal.vue' export default { name: "about", methods: { openModal() { return this.$ionic.modalController .create({ component: Modal, componentProps: { data: { content: 'New Content', }, propsData: { title: 'New title', }, }, }) .then(m => m.present()) }, }, } </script>
Modal画面は開くことはできたが、Modal画面からAbout画面に戻ることができない。。。
Modal画面を閉じるボタンの実装($ionic.modalController.dismiss())
Modal画面を閉じるボタンを設置する場合は、Modal.vueの<template>内に@click="closeModal"のようにcloseModal関数を記載し、<script>内にmethodsでcloseModal()関数を定義します。
src/views/Modal.vue
// <template>内に以下を記載 <div text-center> <ion-button @click="closeModal">close modal</ion-button> </div> // <script>内に以下を記載 methods: { closeModal() { return this.$ionic.modalController.dismiss(); } }
これで、Modal画面の作成と、Modal画面を閉じるボタンの実装を行うことができました。
ソースコードとDEMOサイト
ソースコード
https://github.com/adash333/ionic4-vue-modal
@ionic/vueリンク
https://qiita.com/chan_kaku/items/bb894774c64c1f2fdd9b
@chan_kaku
2019年04月28日に更新
ionic/vueもβ版になったので触ってみた
https://qiita.com/chan_kaku/items/f8c0dd2a39ff6f67c65b
@chan_kaku
2018年12月26日に更新
Ionic Vueでネイティブアプリを作る
https://dev.to/paulhalliday/ionic-4-angular-vue-js-and-react-1o14
Ionic 4: Angular, Vue.js and React
paulhalliday
2019 Mar 27
→@ionic/vueがalpha版の頃の解説なので、@ionic/coreのインストールが必要になっているようです。
https://www.techiediaries.com/ionic-vue/
onic 4 Tutorial with Vue
20180215
vue-routerリンク
https://qiita.com/hshota28/items/765cf903f055754f7557
@hshota28
2019年02月25日に更新
今さら聞けない?Vue Router
ionicのcardのリンク
2019年4月現在、IonicのDocumentは、Version3の方が見やすいです。Ionic4とIonic3の違いは多少ありますが、Cardなどは、Ionic3のDocumentの方が分かりやすいです。
リンク