SlideShare une entreprise Scribd logo
1  sur  16
LaravelでVueを使うアレコレ
2019/04/12 sh-ogawa
Lara-Vue
● 全部Vueで作る
● 永続データはVuexに放り込む
● 多言語化はLaravel -> Vue I18n
● サーバサイドバリデーションエラーの表示
● サーバサイドからのflashメッセージの扱い
● ドメインロジックのエラーメッセージ
● アセットコンパイルするjsファイルは分ける
● webpackの設定を認識させる
全部Vueで作る
● async、deferが使えるようになるため、
ターンアラウンドタイムが短くなる可能性
● Blade噛ませると、タグ内が一瞬見える
● 部分的にやるなら、リアクティブに画面を動か
す場所だけに限定する
永続データはVuexに
放り込む
● コンポーネントが疎結合になる
● 永続化済データだけを入れるのがポイント
● 編集中データは入れてはいけない
● Vuex storeがmutation以外で更新されると
エラーログが出るので即修正
● storeの読込みはNuxt.jsをパクると良い
多言語化はLaravel
-> Vue I18n
● Composer required 
martinlindhe/laravel-vue-i18n-generato
● php artisan vue-i18n:generate
https://github.com/martinlindhe/laravel-vue-i18n-
generator
サーバサイドバリデーシ
ョンエラーの表示
● VueのerrorCapturedを使う
● rsp.data.errorsに入ってるからそれを投げる
● ErrorBoundaryで拾って表示
<error-boundary>
<hoge-screen />
</error-boundary>
サーバサイドからのflash
メッセージの扱い
● エラーはerrorCaptureに拾わせる
● 成功時は、Promise内でhref書き換えればOK
● その場で表示したい場合は、Event Hub使う
Event Hub
● 名前付いてるけど、専用のVueインスタンスを作
って、Vueプラグインとしてインストールするだ
け
● グローバルインスタンス経由でイベントのやり
取りを行うTIPS
Event Hub
const eventHub = {
install: function (Vue, options) {
Vue.prototype.$eventHub = new Vue()
}
}
export default eventHub
Event Hub
import EventHub from '@/EventHub'
Vue.use(EventHub)
```component.vue
this.$eventHub.$on(‘event-name’, (value) => {/* 処理 */})
this.$eventHub.$emit(‘event-name’, value)
ドメインロジックの
エラーメッセージ
● IlluminateSupportViewErrorBag使う
● PHPの癖にイミュータブルだから使い方注意
● response()->json([‘errors’ => $errors])
で返すとバリデーションエラーと同じになる
アセットコンパイルする
jsファイルは分ける
● 自前のjsとライブラリを分ける
● Laravel Mixのversionはファイルのハッシュ
取ってるだけだから、中身変わらなければ、
versionのIDは変わらない
● extractに外部ライブラリは全部記述する
アセットコンパイルする
jsファイルは分けるmix.js('resources/js/app.js', 'public/js')
.extract(['axios', 'bulma', 'lodash.defaultsdeep', 'vee-validate', 'vue', 'vue-i18n', 'vue-template-compiler', 'vuex'])
.sass('resources/sass/app.scss', 'public/css', {
implementation: require('node-sass')
})
.options({
processCssUrls: false
})
.version()
webpackの設定を認識
させる
● 相対パスがとにかく怠い
● エイリアスが無いと実際詰むと思う
● __ide.webpack.config.js作ってideaに認識さす
const path = require('path')
module.exports = {
entry: path.resolve(__dirname, "resources/js/app.js"),
output: {
path: path.resolve(__dirname, 'public/js'),
filename: 'app.js'
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': __dirname + '/resources/js'
}
}
}
Lara vue

Contenu connexe

Similaire à Lara vue

[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web Integration[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web IntegrationKazuchika Sekiya
 
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」Hiroaki NAKADA
 
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門irix_jp
 
OpenStack Object Storage; Overview
OpenStack Object Storage; OverviewOpenStack Object Storage; Overview
OpenStack Object Storage; Overviewirix_jp
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...Shinji Takao
 
Kubernetes環境で実現するWebアプリケーションセキュリティ
Kubernetes環境で実現するWebアプリケーションセキュリティKubernetes環境で実現するWebアプリケーションセキュリティ
Kubernetes環境で実現するWebアプリケーションセキュリティNGINX, Inc.
 
モダンJavaScript入門.pdf
モダンJavaScript入門.pdfモダンJavaScript入門.pdf
モダンJavaScript入門.pdfomochids0113
 
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudCloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudsamemoon
 

Similaire à Lara vue (10)

[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web Integration[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web Integration
 
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」
 
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
 
OpenStack Object Storage; Overview
OpenStack Object Storage; OverviewOpenStack Object Storage; Overview
OpenStack Object Storage; Overview
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
 
Kubernetes環境で実現するWebアプリケーションセキュリティ
Kubernetes環境で実現するWebアプリケーションセキュリティKubernetes環境で実現するWebアプリケーションセキュリティ
Kubernetes環境で実現するWebアプリケーションセキュリティ
 
モダンJavaScript入門.pdf
モダンJavaScript入門.pdfモダンJavaScript入門.pdf
モダンJavaScript入門.pdf
 
react-ja.pdf
react-ja.pdfreact-ja.pdf
react-ja.pdf
 
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudCloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloud
 
Vue.js + WordPress
Vue.js + WordPressVue.js + WordPress
Vue.js + WordPress
 

Plus de 小川 昌吾

Flutter first impression
Flutter first impressionFlutter first impression
Flutter first impression小川 昌吾
 
Flutter management statement
Flutter management statementFlutter management statement
Flutter management statement小川 昌吾
 
Laravel vue-project-upload
Laravel vue-project-uploadLaravel vue-project-upload
Laravel vue-project-upload小川 昌吾
 
今年はある意味当たり年だった! という一年振り返り
今年はある意味当たり年だった! という一年振り返り今年はある意味当たり年だった! という一年振り返り
今年はある意味当たり年だった! という一年振り返り小川 昌吾
 
Njug docker-20180623
Njug docker-20180623Njug docker-20180623
Njug docker-20180623小川 昌吾
 
アプリ屋のための Docker入門
アプリ屋のための Docker入門アプリ屋のための Docker入門
アプリ屋のための Docker入門小川 昌吾
 
Java屋からPHPerになって1年くらい経った
Java屋からPHPerになって1年くらい経ったJava屋からPHPerになって1年くらい経った
Java屋からPHPerになって1年くらい経った小川 昌吾
 
チュートリアルではじめるVue.js
チュートリアルではじめるVue.jsチュートリアルではじめるVue.js
チュートリアルではじめるVue.js小川 昌吾
 
受託、SES、WEBと経験したので比較してみた
受託、SES、WEBと経験したので比較してみた受託、SES、WEBと経験したので比較してみた
受託、SES、WEBと経験したので比較してみた小川 昌吾
 
ITの開発現場における最近の当たり前これからの当たり前(主観)
ITの開発現場における最近の当たり前これからの当たり前(主観)ITの開発現場における最近の当たり前これからの当たり前(主観)
ITの開発現場における最近の当たり前これからの当たり前(主観)小川 昌吾
 
非エンジニアに捧ぐツアーオブ構成管理
非エンジニアに捧ぐツアーオブ構成管理非エンジニアに捧ぐツアーオブ構成管理
非エンジニアに捧ぐツアーオブ構成管理小川 昌吾
 
Dynamo db はじめの一歩
Dynamo db はじめの一歩Dynamo db はじめの一歩
Dynamo db はじめの一歩小川 昌吾
 
スキトラ Spring + mybatis
スキトラ Spring + mybatisスキトラ Spring + mybatis
スキトラ Spring + mybatis小川 昌吾
 
テストコード入門
テストコード入門テストコード入門
テストコード入門小川 昌吾
 

Plus de 小川 昌吾 (20)

Effective flutter
Effective flutterEffective flutter
Effective flutter
 
Flutter first impression
Flutter first impressionFlutter first impression
Flutter first impression
 
Flutter management statement
Flutter management statementFlutter management statement
Flutter management statement
 
Laravel vue-project-upload
Laravel vue-project-uploadLaravel vue-project-upload
Laravel vue-project-upload
 
Atomic design+vue
Atomic design+vueAtomic design+vue
Atomic design+vue
 
今年はある意味当たり年だった! という一年振り返り
今年はある意味当たり年だった! という一年振り返り今年はある意味当たり年だった! という一年振り返り
今年はある意味当たり年だった! という一年振り返り
 
Njug docker-20180623
Njug docker-20180623Njug docker-20180623
Njug docker-20180623
 
アプリ屋のための Docker入門
アプリ屋のための Docker入門アプリ屋のための Docker入門
アプリ屋のための Docker入門
 
Njug 20180414
Njug 20180414Njug 20180414
Njug 20180414
 
Java屋からPHPerになって1年くらい経った
Java屋からPHPerになって1年くらい経ったJava屋からPHPerになって1年くらい経った
Java屋からPHPerになって1年くらい経った
 
チュートリアルではじめるVue.js
チュートリアルではじめるVue.jsチュートリアルではじめるVue.js
チュートリアルではじめるVue.js
 
受託、SES、WEBと経験したので比較してみた
受託、SES、WEBと経験したので比較してみた受託、SES、WEBと経験したので比較してみた
受託、SES、WEBと経験したので比較してみた
 
ITの開発現場における最近の当たり前これからの当たり前(主観)
ITの開発現場における最近の当たり前これからの当たり前(主観)ITの開発現場における最近の当たり前これからの当たり前(主観)
ITの開発現場における最近の当たり前これからの当たり前(主観)
 
非エンジニアに捧ぐツアーオブ構成管理
非エンジニアに捧ぐツアーオブ構成管理非エンジニアに捧ぐツアーオブ構成管理
非エンジニアに捧ぐツアーオブ構成管理
 
Dynamo db はじめの一歩
Dynamo db はじめの一歩Dynamo db はじめの一歩
Dynamo db はじめの一歩
 
スキトラGit
スキトラGitスキトラGit
スキトラGit
 
スキトラ Spring + mybatis
スキトラ Spring + mybatisスキトラ Spring + mybatis
スキトラ Spring + mybatis
 
テストコード入門
テストコード入門テストコード入門
テストコード入門
 
IoT検定
IoT検定IoT検定
IoT検定
 
MySQL入門
MySQL入門MySQL入門
MySQL入門
 

Lara vue

Notes de l'éditeur

  1. jsが動かないブラウザなら使えるテクニック。 ただ、全部くろみうむ化している現代において、ぶっちゃけそんなことはどうでも良くなりつつある 画面の特定部分だけに使う場合は、グローバルに登録はせずに、new Vueして使う。
  2. 画面の特定部分だけに使う場合は、グローバルに登録はせずに、new Vueして使う。
  3. これで、フロントとバックエンドで生成する文言のブレを排除する
  4. jsが動かないブラウザなら使えるテクニック。 ただ、全部くろみうむ化している現代において、ぶっちゃけそんなことはどうでも良くなりつつある 画面の特定部分だけに使う場合は、グローバルに登録はせずに、new Vueして使う。
  5. jsが動かないブラウザなら使えるテクニック。 ただ、全部くろみうむ化している現代において、ぶっちゃけそんなことはどうでも良くなりつつある 画面の特定部分だけに使う場合は、グローバルに登録はせずに、new Vueして使う。
  6. 多用すると死ぬので、必要な箇所だけに限定する。 イベントハブに登録するイベント名は、定数で管理しても良いかも