Vue.jsの「el」とは?
Vue.jsの学習メモ。
Vue.jsの基本的なコードを見ると、「el」というプロパティーがあるけど、これって何なんだろう?と思いました。
↑この「el: '#app'」という部分ですね。
本ではサラッと説明されていて、いまいちピンと来なかったので、他の説明を調べてみました。
マウントする要素
まずは本書の説明です。
(p.43)
オプションには使用するデータやメソッドを定義していきます。
基本的なオプションの構成
こんな感じで、プロパティーやメソッドを詰め込んでいくんですね。
で、この「el」というプロパティーは何なのか?という話です。
(p.44)
el - マウントする要素
「el」はアプリケーションを紐付ける要素のセレクタです。
ソースコードで確認
「el」は「element」の省略形だろうと予想できるのですが、なぜ「el」という2文字で表記されているのか?が分かりませんでした。
(ある意味、どうでもいい些細なことだけど、ついつい知りたくなる性分ですw)
こういうときは、Vue.jsのソースコードで、どのように定義されているのか?を見ると調べられますね。
開発用の「vue.js」(バージョン2.5.17)のソースコードで、「var el =」という文字列を検索してみます。
Vue.jsは1万行超の長いコードでした。
isUnknownElementメソッドなど、9か所で定義されていていました。
チラッと眺めても、何だかよく分かりませんでしたが、要するに
「el」プロパティーで、Vueの表示をはめ込む場所=HTML要素のセレクター(id)を定義してるんですね?
参考
他にも、検索して分かりやすい説明があったのでメモ。
Vueインスタンス内のelというオプションについて確認しておきましょう。
elというオプションが指定した要素がVue.jsが作用を及ぼす範囲になります。
elはelementの略です。
Hypertext Candy | Vue.js入門 (1) el, data
el
'#app' のように、DOM要素を指し示すセレクタが指定されます。
このプロパティの値は、Vueアプリーケーションの範囲、Vueの管轄領域を表します。
<div id="app"> タグ内部がVueアプリケーションとして認識されるということです。
Vue.js初学者によるVue.jsのコトハジメ | creative tweet.
elやdataは、Vue.jsのAPIと呼ばれるもので、Vue.jsを扱う上での規格のようなものです。
用意されているAPIを使って、さまざまな処理を記述します。
new Vue({})の直下にあるものはAPIと思ってだいたい間違いないです。
自分的には「elはVueのAPI」という説明がしっくり来ました!
(参考)APIとは?
Vue.jsのAPI一覧
el
- 型: string | HTMLElement
- 制約: new 経由でインスタンス作成のみだけなので注意してください。
- 詳細:
既存の DOM 要素に Vue インスタンスを与えます。CSS セレクタの文字列、実際の HTML 要素をとることができます。
インスタンスがマウント後、解決された要素は vm.$el としてアクセス可能になります。
インスタンス化の際にオプションが有効ならば、そのインスタンスはただちにコンパイルの段階に入ります。さもなければ、ユーザーがコンパイルを始めるために手作業で明示的に vm.$mount() を呼ぶ必要があります。
与えられた要素は単にマウントするポイントとして機能します。Vue 1.x とは異なり、マウントされた要素は、全てのケースで Vue によって生成された DOM に置き換えられます。従って、ルートインスタンスを <html> または <body> にマウントすることは推奨されません。
render 関数または template オプションも存在しない場合、マウントしている DOM 要素にある HTML がテンプレートとして抽出されます。この場合、Vue のランタイムとコンパイラが同包された完全ビルドを使用する必要があります。
公式ドキュメントに「el」の説明がありました。
Vue.jsで用意されているAPIのそれぞれについて、使い方を理解すれば、Vue.jsを自由自在に使いこなせるようになるのでしょう!?!?!
(愚痴)
なんつーか、公式の説明は厳密で正確だけど、硬い文章で分かりづらいと思います。
これを読んで一発で理解できる人がいたら、ReactやAngularなど類似のJSフレームワーク経験者とか?
(公式の説明が分かりやすければ、解説書は不要という話にもなりそうw)
まとめ