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

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

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

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

1回答

2663閲覧

Laravelの継承されたBladeテンプレートでのVue.jsの使用

kb10uy

総合スコア10

Vue.js

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2017/02/23 14:49

現在Laravel 5.4でVue.jsを使用したアプリを開発しているのですが、
全てのビューで使用する基底となるBladeテンプレート(base)とそこから@extendしたテンプレートと両方にVueで置換する要素があり、
Webpackによってアセットコンパイルが走る中でどのようにjsを分割すれば同じような記述のコピーを防ぎつつ上手くVue.jsで使用するdata, methodsを上手く書けるかを決め兼ねています。どういう記述/分割にするのが最もスマートかつ保守性が高いでしょうか。

###構成
Laravel 5.4 + Laravel Mix
Vue.js 2.0
jQuery
(未使用) axios, lodash

##前提

  • webpack.mix.jsではmix.js().extract()によってすでにmanifest.jsとvendor.jsとapp.jsが分割されています。
  • 上記3つのjsは全て基底テンプレートの最後で読み込まれています。

##暫定案

  • app.jsでVueインスタンスを初期化し、ビューの要求に応じて個別に読み込むjsからVueインスタンスにリアクティブプロパティを追加する。個別jsからapp.jsのVueインスタンスを取り込む方法に難がある可能性がある。あとmethodsへの追加が不明。
  • 個別のjsで毎回Vueインスタンスを初期化する。基底Bladeテンプレートで使うVue要素の記述が全ての個別jsに行き渡るので基底で変更があると全jsを変更する必要があり面倒。

###各ソース

javascript

1// webpack.mix.js 2// ... 3 4mix.js('resources/assets/js/app.js', 'public/js') 5 .extract(['vue', 'axios', 'lodash', 'jquery', 'laravel-echo', 'pusher-js']) 6 //個別js 7 .js('resources/assets/js/c-post.js', 'public/js') 8 .js('resources/assets/js/c-user.js', 'public/js'); 9 10// ...

javascript

1// app.js(抜粋) 2require('./bootstrap'); 3 4const app = new Vue({ 5 el: '#app', 6 data: { 7 //基底Bladeテンプレートで使用するデータ 8 information: { 9 message: '' 10 } 11 } 12}); 13

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

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

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

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

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

guest

回答1

0

自己解決

Vueのコンポーネントで再利用とリアクティブを両立できるようなのでこちらを使用します。

投稿2017/02/24 08:06

kb10uy

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問