環境
- Rails
- 5.1.1
- Vue.js
- 2.3.4
ES6について
Railsでwebpacker
を使ってVue.js
を設置した場合、いろんなライブラリがdefaultでインストールされる。その中でbabel-loader
というライブラリがある。
Package.json
を確認してみると、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
|
babel-loader
が置いてることが確認できる。
このbabel-loader
をconfig/webpack/loaders
にあるbabel.js
で読み込んでES6をトランスパイルしてくれる。
safariはまだES6をサポートしてくれないのでsafariで試してみる。
まず下記のようにbabel.js
のloaderにbabel-loader
を指定したときは
1 2 3 4 5 |
|
画像のように正しくリストが表示されてる。
しかし、loaderのところを一回消してみると
1 2 3 4 5 |
|
JSをES6で書いたので何も表示されてないことを確認できる。
もう一つ試してみる。
ES6的なclass
を定義してVueコンポーネントでそのclassの関数を呼び出してみる。
1 2 3 4 5 6 7 |
|
シンプルにこういうclass
を定義してVueコンポーネントのmountedで呼び出すと
1 2 3 4 5 |
|
TodoLog
のprinLog
という関数が呼び出されてブラウザにlogが出力されたのが確認できる。
アロー関数
vueでアロー関数を使うときは注意しなきゃいけないことがある。
アロー関数は既存のメソッドと違ってthis
が変わる。関数自体が親コンテキストにバインディングされているためVueインスタンスにはならない。
this
でVueのコンポーネントを呼ぶ処理をしたいならアロー関数は使ってはならない。
Vueのコンポーネントのmounted
をアロー関数を例にして試してみると既存のfunction()
だとちゃんとVueコンポーネントが出力されるが
1 2 3 4 5 6 7 8 |
|
アロー関数を使った場合はVueコンポーネントが出力されないし、$httpもエラーを出す。
1 2 3 4 5 6 7 8 |
|
vue-resource
install
まずnpmでvue-resource
をインストールする。
1
|
|
yarnを使ってもOK。
1
|
|
使い方
それからjs
でimport
して使う。
1 2 3 4 5 6 7 8 9 10 |
|
参考
Using ES6 arrow functions in Vue.js
ES6の新機能「class構文」 – 基礎編 –