<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Vue.js | ばすにっきTips</title>
	<atom:link href="https://takabus.com/tips/category/vue-js/feed/" rel="self" type="application/rss+xml" />
	<link>https://takabus.com/tips</link>
	<description>プログラミングやサーバー、日々のTipsをメモしています。</description>
	<lastBuildDate>Mon, 12 Sep 2022 02:17:59 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.3</generator>

<image>
	<url>https://takabus.com/tips/wp-content/uploads/2022/12/cropped-tips-1-32x32.png</url>
	<title>Vue.js | ばすにっきTips</title>
	<link>https://takabus.com/tips</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【wkhtmltopdf】Vue.jsのPDF化には対応している？</title>
		<link>https://takabus.com/tips/536/</link>
					<comments>https://takabus.com/tips/536/#respond</comments>
		
		<dc:creator><![CDATA[ばすにっきTips]]></dc:creator>
		<pubDate>Mon, 01 Aug 2022 02:17:00 +0000</pubDate>
				<category><![CDATA[Vue.js]]></category>
		<guid isPermaLink="false">https://takabus.com/tips/?p=536</guid>

					<description><![CDATA[wkhtmltopdfはHTMLからPDFを生成してくれるライブラリです。Vue.js・NuxtJSでも動作するのか確認してみました。 レンダリングは可能 レンダリングは問題ありませんでした Vue.jsで作られているサ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>wkhtmltopdfはHTMLからPDFを生成してくれるライブラリです。Vue.js・NuxtJSでも動作するのか確認してみました。</p>



<h2 class="wp-block-heading">レンダリングは可能</h2>



<p>レンダリングは問題ありませんでした</p>



<p>Vue.jsで作られているサイトもPDF化できるのか不安でしたが、無事生成できました。Vuetifyで開発されているサイトも崩れることなくバッチリPDF化できました。</p>



<h2 class="wp-block-heading">VueRouterは動作しない</h2>



<p>VueRouterの一部機能は動作しませんでした。</p>



<p>クエリパラメータの取得などがうまく行われないケースが確認されました。watchも動作してくれるか微妙です。</p>



<p>このあたりは環境ごとにテストしてみる必要がありそうです。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://takabus.com/tips/536/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Vuetify】トグルボタン「v-btn-toggle」の使い方と注意点</title>
		<link>https://takabus.com/tips/1174/</link>
					<comments>https://takabus.com/tips/1174/#respond</comments>
		
		<dc:creator><![CDATA[ばすにっきTips]]></dc:creator>
		<pubDate>Mon, 11 Jul 2022 10:42:15 +0000</pubDate>
				<category><![CDATA[Vue.js]]></category>
		<category><![CDATA[Vuetify]]></category>
		<guid isPermaLink="false">https://takabus.com/tips/?p=1174</guid>

					<description><![CDATA[Vuetifyでトグルボタンを実装する方法を紹介します。Vuetifyではv-toggle-btnを使用すると、かんたんにトグルボタンを実装することができます。]]></description>
										<content:encoded><![CDATA[
<p>Vuetifyでトグルボタンを実装する方法を紹介します。</p>




<a rel="noopener" href="https://vuetifyjs.com/ja/components/button-groups" title="ボタントグルコンポーネント — Vuetify" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://cdn.vuetifyjs.com/docs/images/graphics/og-image.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">ボタントグルコンポーネント — Vuetify</div><div class="blogcard-snippet external-blogcard-snippet">ボタントグルコンポーネントを使用すると、選択可能な一連のボタンを単一の要素にまとめることができます。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://vuetifyjs.com/ja/components/button-groups" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">vuetifyjs.com</div></div></div></div></a>



<h2 class="wp-block-heading" id="サンプルコード">サンプルコード</h2>



<p>Vuetifyでは<strong>v-toggle-btn</strong>を使用すると、かんたんにトグルボタンを実装することができます。</p>



<p>はじめに基本となるサンプルコードを紹介します。</p>



<pre class="wp-block-code"><code>&lt;v-btn-toggle v-model="sample"&gt;
      &lt;v-btn&gt;A&lt;/v-btn&gt;
      &lt;v-btn&gt;B&lt;/v-btn&gt;
      &lt;v-btn&gt;C&lt;/v-btn&gt;
&lt;/v-btn-toggle&gt;</code></pre>



<p>複数のv-btnをv-btn-toggleで囲むことで、トグルボタンとすることができます。</p>



<h2 class="wp-block-heading" id="ボタンに任意の値を設定するには">ボタンに任意の値を設定するには？</h2>



<p>デフォルトでは、<strong>選択されているボタンのインデックス</strong>がv-btn-toggleのv-modelに格納されます。</p>



<pre class="wp-block-code"><code>&lt;v-btn-toggle v-model="sample"&gt;
      &lt;v-btn&gt;A&lt;/v-btn&gt;
      &lt;v-btn&gt;B&lt;/v-btn&gt;
      &lt;v-btn&gt;C&lt;/v-btn&gt;
&lt;/v-btn-toggle&gt;</code></pre>



<p>たとえば上のサンプルでAをクリックすると0、Bをクリックすると1がv-modelにセットされます。</p>



<p>ボタンを選択したときに反映される値を任意の値に変更したいときは、v-btnに<strong>value属性</strong>を設定します。</p>



<pre class="wp-block-code"><code>&lt;v-btn-toggle v-model="sample"&gt;
      &lt;v-btn <strong>:value="a"</strong>&gt;A&lt;/v-btn&gt;
      &lt;v-btn <strong>:value="b"</strong>&gt;B&lt;/v-btn&gt;
      &lt;v-btn <strong>:value="c"</strong>&gt;C&lt;/v-btn&gt;
&lt;/v-btn-toggle&gt;</code></pre>



<p><strong><span class="red">ここで注意すべきなのがコロンのつけ忘れ。</span></strong>コロンを忘れていると、v-modelに値が反映されませんので、要注意です。</p>



<h2 class="wp-block-heading" id="ボタンがクリックされたら処理を実行したいときは">ボタンがクリックされたら処理を実行したいときは？</h2>



<p>トグルボタンにもイベントを設定することができます。</p>



<p>トグルボタンのクリックをきっかけに処理を行いたいときは、<strong>v-btn-toggleに@change</strong>を設定します。いずれかのボタンがクリックされ、値が変更された場合に発火します。</p>



<p>特定のボタンがクリックされたときのみ処理を行いたいときは、<strong>v-btnに@click</strong>を設定します。</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://takabus.com/tips/1174/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WordPressの記事一覧をREST APIから取得してみる</title>
		<link>https://takabus.com/tips/1078/</link>
					<comments>https://takabus.com/tips/1078/#respond</comments>
		
		<dc:creator><![CDATA[ばすにっきTips]]></dc:creator>
		<pubDate>Tue, 01 Mar 2022 03:12:24 +0000</pubDate>
				<category><![CDATA[Vue.js]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[axios]]></category>
		<guid isPermaLink="false">https://takabus.com/tips/?p=1078</guid>

					<description><![CDATA[WordPressのREST APIから記事一覧を取得し、Vue.jsで表示するサンプルコードを紹介します。]]></description>
										<content:encoded><![CDATA[
<p>WordPressのREST APIから記事一覧を取得し、Vue.jsで表示するサンプルコードを紹介します。もちろんNuxt.jsでも使える方法です。</p>



<h2 class="wp-block-heading" id="サンプル">サンプル</h2>



<p>当サイト（ばすにっきTips）の新着記事を取得し、表示するサンプルです。</p>



<iframe src="https://codesandbox.io/embed/wordpress-restful-api-x-vue-js-3898c0?fontsize=14&amp;hidenavigation=1&amp;theme=dark" style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;" title="WordPress RESTful API x Vue.js" allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"></iframe>



<p>Vue.jsとAxiosで実装してみました。</p>



<h2 class="wp-block-heading" id="解説">解説</h2>



<p>まず、axiosでAPIにアクセスし、データを取得しています。</p>



<pre class="wp-block-code"><code>// 最新記事を取得する
axios
  .get("https://takabus.com/tips/wp-json/wp/v2/posts?_embed")
  .then((res) =&gt; {
    this.posts = res.data;
  });</code></pre>



<p>最新の投稿は<code>/wp-json/wp/v2/posts?_embed</code>からGETで取得できます。</p>



<p>例えば、hoge.comにwordpressのトップがあるとすると、<code>hoge.com/wp-json/wp/v2/posts?_embed</code>がAPIとなります。ブラウザからアクセスして確認してみましょう。URLと一緒にクエリパラメーターを追加することで、カテゴリ（<code>?categories</code>）やタグ（<code>?tags</code>）で絞り込んだりといったこともできます。</p>



<p>このほか多くのパラメーターが準備されており、かなり細かい指定が可能となっているようです。</p>




<a rel="noopener" href="https://developer.wordpress.org/rest-api/reference/posts/#arguments" title="Posts – REST API Handbook | Developer.WordPress.org" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://developer.wordpress.org/wp-content/themes/wporg-developer-2023/images/opengraph-image.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Posts – REST API Handbook | Developer.WordPress.org</div><div class="blogcard-snippet external-blogcard-snippet">Schema</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://developer.wordpress.org/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">developer.wordpress.org</div></div></div></div></a>



<p>取得したデータはdataに置いておき、v-forで各記事へのリンクとサムネイル・タイトルなどを表示させています。</p>



<pre class="wp-block-code"><code>&lt;!-- 記事ごと --&gt;
&lt;a :href="post.link" v-for="post in posts" :key="post.id" style="text-decoration:none;color:#2c2c2c;"&gt;
    &lt;div class="card" style="max-width: 540px;"&gt;
        &lt;div class="row g-0"&gt;
            &lt;div class="col-4"&gt;
                &lt;img class="d-block w-100"
                    :src="post._embedded&#91;'wp:featuredmedia']&#91;0].media_details.sizes.thumb320.source_url"
                    alt="..." /&gt;
            &lt;/div&gt;
            &lt;div class="col-8"&gt;
                &lt;div class="card-body p-2"&gt;
                    &lt;h6 class="card-title mb-0"&gt;{{post.title.rendered}}&lt;/h6&gt;
                    &lt;div&gt;
                        &lt;small&gt;{{post.date.substr(0,10)}}&lt;/small&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/a&gt;</code></pre>



<p>余分なクラスやスタイルを取り払うとこんな感じとなります。</p>



<pre class="wp-block-code"><code>&lt;a :href="post.link" v-for="post in posts" :key="post.id"&gt;
    &lt;div&gt;
    &lt;img :src="post._embedded&#91;'wp:featuredmedia']&#91;0].media_details.sizes.thumb320.source_url" /&gt;
    &lt;h6&gt;{{post.title.rendered}}&lt;/h6&gt;
    &lt;small&gt;{{post.date.substr(0,10)}}&lt;/small&gt;
    &lt;/div&gt;
&lt;/a&gt;</code></pre>



<p>よくつかうであろうキーは以下のとおりです。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>項目</th><th>JSONのキー</th></tr></thead><tbody><tr><td>記事のタイトル</td><td>post.title.rendered</td></tr><tr><td>記事の投稿日時</td><td>post.date</td></tr><tr><td>サムネイル画像のURL<br>(320px)</td><td>post._embedded.wp:featuredmedia[0].media_details.sizes.thumb320.source_url</td></tr></tbody></table></figure>



<p>なお、サムネイル画像は<code>?_embed</code>をつけないと取得できません。</p>



<h2 class="wp-block-heading" id="まとめ">まとめ</h2>



<p>WordPressサイトの記事一覧をほかのサイトに埋め込みたいときなどに便利そうですね。例えばWebアプリのお知らせサイトをWordPressで制作し、Webアプリ内にお知らせを埋め込む、なんて使い方が考えられます。</p>



<p>▼こちらのURLで実際に運用しているサンプルも公開しています。Nuxt.jsを使用したサイトですが、記事内容はサーバーサイドレンダリング、新着記事のところは当記事の方法を使いクライアントサイドでレンダリングすることで、つねに最新の記事が表示される仕組みとなっています。実際のユースケースとして、参考にしていただければ幸いです。</p>



<figure class="wp-block-image size-large"><a href="https://takabus.com/buszukan/"><img loading="lazy" decoding="async" width="1024" height="465" src="https://takabus.com/tips/wp-content/uploads/2022/03/image-1024x465.png" alt="" class="wp-image-1096" srcset="https://takabus.com/tips/wp-content/uploads/2022/03/image-1024x465.png 1024w, https://takabus.com/tips/wp-content/uploads/2022/03/image-300x136.png 300w, https://takabus.com/tips/wp-content/uploads/2022/03/image-768x349.png 768w, https://takabus.com/tips/wp-content/uploads/2022/03/image.png 1195w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>




<a rel="noopener" href="https://takabus.com/buszukan/" title="バスずかん" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://takabus.com/buszukan/ogp.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">バスずかん</div><div class="blogcard-snippet external-blogcard-snippet">バスの写真をたくさん掲載！バスずかんでは仙台を中心としたバスの写真を掲載しています。バスにっきとあわせてごらんください。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://takabus.com/buszukan/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">takabus.com</div></div></div></div></a>
]]></content:encoded>
					
					<wfw:commentRss>https://takabus.com/tips/1078/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【PWA】ランタイムキャッシュを実装するには？動かないときにチェックするところは？</title>
		<link>https://takabus.com/tips/350/</link>
					<comments>https://takabus.com/tips/350/#respond</comments>
		
		<dc:creator><![CDATA[ばすにっきTips]]></dc:creator>
		<pubDate>Thu, 07 Oct 2021 07:43:58 +0000</pubDate>
				<category><![CDATA[Vue.js]]></category>
		<category><![CDATA[PWA]]></category>
		<guid isPermaLink="false">https://takabus.com/tips/?p=350</guid>

					<description><![CDATA[PWAでのランタイムキャッシュに関することをまとめておきます。実装方法から動かないときの対処法までメモしておきます。]]></description>
										<content:encoded><![CDATA[
<p>PWAでのランタイムキャッシュに関することをまとめておきます。</p>



<h2 class="wp-block-heading">ランタイムキャッシュとは？</h2>



<p><span class="marker-under"><strong>動的にアクセスされたリソースをキャッシュさせること</strong></span>をいいます。</p>



<p>例えば、APIで取得したjsonを保存しておき、オフラインでも見れるようにするといったことができます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="442" height="265" src="https://takabus.com/tips/wp-content/uploads/2021/10/image-18.png" alt="chrome devtool" class="wp-image-351" srcset="https://takabus.com/tips/wp-content/uploads/2021/10/image-18.png 442w, https://takabus.com/tips/wp-content/uploads/2021/10/image-18-300x180.png 300w" sizes="(max-width: 442px) 100vw, 442px" /><figcaption>キャッシュを参照させることで、パケットやローディングタイムを削減できます。</figcaption></figure>



<h2 class="wp-block-heading">@vue/cli-plugin-pwaならかんたんに実装できる！</h2>



<p>Vueで作成したプロジェクトであれば、<strong><span class="bold-red">@vue/cli-plugin-pwa</span></strong>というパッケージを追加することで、かんたんにランタイムキャッシュを実装できます。</p>




<a rel="noopener" href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa" title="vue-cli/packages/@vue/cli-plugin-pwa at dev · vuejs/vue-cli" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://opengraph.githubassets.com/845c070c378d4899a47ff9b5acdff764eff713805489e3216abf72a48ad3bfcd/vuejs/vue-cli" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">vue-cli/packages/@vue/cli-plugin-pwa at dev · vuejs/vue-cli</div><div class="blogcard-snippet external-blogcard-snippet">🛠️ webpack-based tooling for Vue.js Development. Contribute to vuejs/vue-cli development by creating an account on GitHu...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">github.com</div></div></div></div></a>



<p>通常はservice-workerを手動で実装する必要がありますが、このパッケージを入れてしまえばイチコロです！</p>



<h2 class="wp-block-heading">手順</h2>



<p>さっそくランタイムキャッシュを実装する手順を紹介。</p>



<h3 class="wp-block-heading">@vue/cli-plugin-pwaをインストール </h3>



<p>npmなどで @vue/cli-plugin-pwaをインストールします。</p>



<pre class="wp-block-code"><code>npm install "@vue/cli-plugin-pwa"</code></pre>



<p>PWA対応だけではなく、プレキャッシュやランタイムキャッシュ（APIキャッシュ）も容易に実装できます。</p>



<div class="wp-block-cocoon-blocks-icon-box information-box common-icon-box block-box">
<p><span class="bold"><span class="fz-22px"><span class="marker-under">プレキャッシュは自動的に有効になる</span></span></span></p>



<p>@vue/cli-plugin-pwaをインストールすれば、自動的にプレキャッシュは有効になります。</p>



<p>jsやcss、画像ファイルなどのアセットは、初回アクセス時に自動的にキャッシュされるようになります。</p>
</div>



<h3 class="wp-block-heading">ランタイムキャッシュを有効にする</h3>



<p>この記事の本題であるランタイムキャッシュ。</p>



<p>@vue/cli-plugin-pwaなら、vue.config.jsに以下を追加するだけでOKです。</p>



<pre class="wp-block-code"><code>module.exports = {
pwa: {
    name: 'PWAアプリケーション名',
    themeColor: 'テーマカラー(#aabbccなどで指定する)',
    manifestOptions: {

        background_color: "#adcdff"
    },
    workboxPluginMode: 'GenerateSW',
   <strong> workboxOptions: {
        runtimeCaching: &#91;{
            // キャッシュするファイルのURLを正規表現で指定する
            urlPattern: new RegExp( "https://hoge.com/.*"),
            handler: 'CacheFirst',
        }]
    }</strong>
},
}</code></pre>



<h3 class="wp-block-heading">ビルドする</h3>



<p>npm run buildを実行し、ビルドします。</p>



<p>すると、service-worker.jsが自動的に作成され、ランタイムキャッシュが有効になります。</p>



<p>あとはサーバーにアップすれば、キャッシュが動作するようになります。</p>



<h2 class="wp-block-heading">動かないときのチェックポイント</h2>



<p>ここまで実装方法を記してみましたが、うまくいかないときのチェックポイントをまとめておきます。</p>



<h3 class="wp-block-heading">チェック① service-worker.jsにランタイムキャッシュの部分が出力されているか？</h3>



<p>まずはここをチェックしましょう。</p>



<p>buildすると、distフォルダにservice-worker.jsというファイルが出力されます。これにランタイムキャッシュの部分が正しく出力されているか確認します。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="915" height="734" src="https://takabus.com/tips/wp-content/uploads/2021/10/image-19.png" alt="" class="wp-image-353" srcset="https://takabus.com/tips/wp-content/uploads/2021/10/image-19.png 915w, https://takabus.com/tips/wp-content/uploads/2021/10/image-19-300x241.png 300w, https://takabus.com/tips/wp-content/uploads/2021/10/image-19-768x616.png 768w" sizes="(max-width: 915px) 100vw, 915px" /><figcaption>registerRouteという記載があれば、正しく出力されています。</figcaption></figure>



<p>出力されていない場合は、vue.config.jsを確認し、記述があっているか確認してください。</p>



<h3 class="wp-block-heading">チェック② URLパターンがあっているか？</h3>



<p>問題なくランタイムキャッシュさせるコードが出力されている場合は、内容があっているか確認します。urlPatternが正しいかチェックします。</p>



<pre class="wp-block-code"><code>urlPattern: new RegExp("https://korekore.com/hoge/.*")</code></pre>



<p>urlPatternにはRegExpを使うことができます。</p>



<ul><li>HTTPSであること</li><li>ホストは自由に指定できる（PWAをホストするサーバーとは別のホストでも動作します）</li><li>Javascriptの正規表現で指定すること</li></ul>



<h2 class="wp-block-heading">チェック③ ホスティング環境が対応しているか？</h2>



<p>ホスティング環境にも制限があります。</p>



<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul><li>httpsに完全対応していること</li><li>完全な証明書でホストされていること（自己署名証明書では動作しない）</li><li>なので、テスト環境ではうまく動作しないことがある</li><li>サーバーのトップディレクトリに配置すること（設定のいかんによってはサブディレクトリでも可能だが、通常はトップディレクトリに配置する必要あり）</li><li>ポートは自由（1200や8080でホストしてもOK。ただしHTTPSに対応していること）</li><li></li></ul>
</div>



<p>いろいろと制限があるので、ひとつひとつ確認していく必要があります。</p>



<h2 class="wp-block-heading">axiosでは動かない？→動きます</h2>



<p>axiosでは動かず、fetchをつかってAPIにアクセスしなければならないという話がありますが、これは違います。</p>



<p>axiosでもまったく問題なくキャッシュされます。特殊な仕込みは不要です。</p>



<h2 class="wp-block-heading">参考</h2>



<p>ページにたどり着きにくいので、参考になるドキュメントもメモしておきます。</p>



<p>PWAに関するconfig</p>




<a rel="noopener" href="https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin#full_generatesw_config" title="Workbox  |  Chrome for Developers" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdevelopers.google.com%2Fweb%2Ftools%2Fworkbox%2Fmodules%2Fworkbox-webpack-plugin%23full_generatesw_config?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Workbox  |  Chrome for Developers</div><div class="blogcard-snippet external-blogcard-snippet">Build progressive web apps (PWAs) with Workbox - the Service Worker library from the Chrome team</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://developer.chrome.com/docs/workbox" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">developer.chrome.com</div></div></div></div></a>



<p>ランタイムキャッシュに関するオプション</p>




<a rel="noopener" href="https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-build#.RuntimeCachingEntry" title="Modules  |  Chrome for Developers" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdevelopers.google.com%2Fweb%2Ftools%2Fworkbox%2Freference-docs%2Flatest%2Fmodule-workbox-build%23.RuntimeCachingEntry?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Modules  |  Chrome for Developers</div><div class="blogcard-snippet external-blogcard-snippet">Dig deeper into specific Workbox modules.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://developer.chrome.com/docs/workbox/modules" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">developer.chrome.com</div></div></div></div></a>
]]></content:encoded>
					
					<wfw:commentRss>https://takabus.com/tips/350/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Vue.js】数字から始まる名前のJSONの値を取得する方法</title>
		<link>https://takabus.com/tips/100/</link>
					<comments>https://takabus.com/tips/100/#respond</comments>
		
		<dc:creator><![CDATA[ばすにっきTips]]></dc:creator>
		<pubDate>Fri, 10 Sep 2021 10:09:42 +0000</pubDate>
				<category><![CDATA[Vue.js]]></category>
		<guid isPermaLink="false">https://takabus.com/tips/?p=100</guid>

					<description><![CDATA[から始まる名前のJSONの変数を取得する方法をメモしておきます。]]></description>
										<content:encoded><![CDATA[
<p>数字から始まる名前のJSON(オブジェクト)の変数を取得する方法をメモしておきます。</p>



<p>どういうことかというと、たとえば</p>



<pre class="wp-block-code"><code>{
    "hoge": {
    "1a": "a",
    "2a": "b",
    "3a": "c",
    "4a": "d",
    "5a": "e"
  }
}</code></pre>



<p>というjsonをaxiosで取得し、dataaに格納したとします。</p>



<p>hogeの1aの値を取得したいとき、ふつうに</p>



<pre class="wp-block-code"><code>this.dataa.hoge.1a</code></pre>



<p>としてしまうと、エラーが発生してしまい、うまくいかないのです。</p>



<h2 class="wp-block-heading">解決法</h2>



<p><span class="marker-under">こういうときは配列の記法を使います。</span></p>



<pre class="wp-block-code"><code>this.dataa.<strong>hoge&#91;"1a"]</strong></code></pre>



<p>Objectは配列のようにキーで取得することができます。</p>



<p>この方法なら先頭に数字がついていても、変数を取得できます。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://takabus.com/tips/100/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
