質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vue CLI

Vue CLIは、Vue.jsでアプリケーション開発を行うためのコマンドラインインタフェース(CLI)に基づいた開発ツールです。インタラクティブなプロジェクトの雛形や設定なしで使用できるプロトタイプの作成など、さまざまな機能が用意されています。

Q&A

0回答

259閲覧

pwa+vue+routerでアイコン起動で初期画面が表示しない

kumakake

総合スコア42

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vue CLI

Vue CLIは、Vue.jsでアプリケーション開発を行うためのコマンドラインインタフェース(CLI)に基づいた開発ツールです。インタラクティブなプロジェクトの雛形や設定なしで使用できるプロトタイプの作成など、さまざまな機能が用意されています。

0グッド

0クリップ

投稿2019/07/25 03:52

PWAアプリをvueで作成しています。
※アプリって言っても、いいんでしょうか???(^^;

やってること)
vue create proj01

な感じで、生成したアプリを触っています。
今回複数ページが必要なので、router を指定して生成しています。

現象)
ブラウザで表示したときは、1ページめが表示されるのですが、
アイコンから起動した時、index.htmlのみが表示され、1ページめが
表示されません。

manifest.jsonのstart_urlを、生成時の"./index.html"から
URLに変更して、アイコンから起動したところ、1ページめが表示される
ようにはなったのですが、「ホームページに追加します」のイベント(?)が
発生しなくなりました。

質問)
「ホームページに追加」機能を活かしながらアイコンから起動した際も、
routerで指定された1ページめが表示される方法を教えて下さい。

ソースは生成された、ほぼそのままで、アイコンの指定のみを変えています。

manifest.json

1{ 2 "name": "proj02", 3 "short_name": "proj02", 4 "icons": [ 5 { 6 "src": "./img/icons/icon-192x192.png", 7 "sizes": "192x192", 8 "type": "image/png" 9 }, 10 { 11 "src": "./img/icons/icon-512x512.png", 12 "sizes": "512x512", 13 "type": "image/png" 14 } 15 ], 16// "start_url": "./index.html", 17 "start_url": "/app/pwa/test/", 18 "display": "standalone", 19 "background_color": "#000000", 20 "theme_color": "#4DBA87" 21}

index.html

1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width,initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 7 <link rel="icon" href="<%= BASE_URL %>favicon.ico"> 8 <link href="https://fonts.googleapis.com/css?family=Noto+Sans+JP&display=swap" rel="stylesheet"> 9 10 <link rel="apple-touch-icon" href="<%= BASE_URL %>img/icons/apple-touch-icon-72x72.png" sizes="72x72"> 11 <link rel="apple-touch-icon" href="<%= BASE_URL %>img/icons/apple-touch-icon-114x114.png" sizes="114x114"> 12 <link rel="apple-touch-icon" href="<%= BASE_URL %>img/icons/apple-touch-icon-120x120.png" sizes="120x120"> 13 <link rel="apple-touch-icon" href="<%= BASE_URL %>img/icons/apple-touch-icon-144x144.png" sizes="144x144"> 14 15 <title>RecepaQ</title> 16 </head> 17 <body> 18 <noscript> 19 <strong>We're sorry but proj02 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> 20 </noscript> 21 <div id="app"></div> 22 <!-- built files will be auto injected --> 23 </body> 24</html>

main.js

1import Vue from 'vue' 2import App from './App.vue' 3import router from './router' 4import store from './store' 5import './registerServiceWorker' 6 7Vue.config.productionTip = false 8 9new Vue({ 10 router, 11 store, 12 render: h => h(App) 13}).$mount('#app')

App.vue

1<template> 2 <div id="app"> 3 <div id="nav"> 4 <router-link to="/">Home</router-link> | 5 <router-link to="/about">About</router-link> 6 </div> 7 <router-view/> 8 </div> 9</template> 10 11<style> 12#app { 13 font-family: 'Avenir', Helvetica, Arial, sans-serif; 14 -webkit-font-smoothing: antialiased; 15 -moz-osx-font-smoothing: grayscale; 16 text-align: center; 17 color: #2c3e50; 18} 19#nav { 20 padding: 30px; 21} 22 23#nav a { 24 font-weight: bold; 25 color: #2c3e50; 26} 27 28#nav a.router-link-exact-active { 29 color: #42b983; 30} 31</style>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問