Vue.js/日記001
学習指針
Vue.jsの学習にあたって教材はどうしようかと思ったのですが、とりあえず公式サイトの資料でもたくさん学べそうにみえたので、そこからはじめてみようと思います。
はじめの一歩
Vue.jsのHello World!的なものが最初のサンプルとしてありましたので、それを実行してみて、概要を掴むことにしました。
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<div id="app">
{{ message }}
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
</script>
一行目はVue.jsのコアライブラリへのリンクですね。
次のdiv要素(#app)が実行結果の描画領域を表しているようです。最初から{{ message }}というテキストが入っていますが、このテキストが実行結果と置き換わるのですね。括弧の中が変数名といったところでしょうか。テンプレート機能として使えますね。
二番目のscript要素の中でVueクラスのインスタンスが作られています。どうやらこのVueクラスが肝で、そのインスタンスが一つのUIを規定するということになりそうです。Vueクラスのコンストラクタには一つのObjectが引数として渡され、その内容が「div#appの{{ messaga }}のところに'Hello Vue!'を出力せよ」という命令を表しているっぽいです。引き渡す内容に「el」「data」と名前がついてますが、それぞれ「表示部位」「表示内容」が分かれて記されていることになります。Vue.jsを学習するにあたって小耳にはさんでいたのですが、Vue.jsではMVVMという設計構造が意識されているそうです。
| Model | データ構造 | data |
| View | 表示部 | el |
| ViewModel | ViewとModelをつなぐもの | Vue.jsのコアライブラリがやってくれる? |
コンストラクタをみての通り、否が応でもModelとViewを意識して分ける必要がありますので、パッと見て何が何を表しているのかわかりやすいというのはメリットですね。個人で開発しているとあんまり気にならないのですが、チームで作業するときには人の手が加わることも考えてソースを書く必要がでてきますから、それが必然的にできるVue.jsを使ったUIは読みやすいソースになりそうです。
データバインディング
最初のサンプルでは、ViewModelの部分は一度データ(message)をテンプレート({{ message }})に挿入してその役割を終えてしまいましたが、ViewとModelはそれ以降もしっかりとつながっているそうです。Vueのインスタンス(app)はapp.messageにdataとして渡されたModelを保持しているので、コンソールからapp.messageを書き換えると
app.message = 'Hello World!'
Viewの{{ message }}の内容が'Hello World!'に変わりました。この辺がこのフレームワークを利用するにあたっての最重要部分で、あとはその応用と考えれば理解が早まりそうです。
- Vue.js/日記004今回Vue.jsのことを調べるきっかけになった案件で、実際にVue.jsが導入されました。その結果、1分ぐらいかかっていたDOMの操作が半分くらいに縮まったといâ¦
- Vue.js/Vue 3でいろいろ変わってた(5年くらい浦島太郎だった前提で書いてます。Vue 3で変わったこと、Vue 2で変わったこと、そもそも備わっていたけど知らなかっただけのことなど雑多に記しますâ¦
- Vue.js/日記002<div id="app"> {{ message }} </div> 前回、二重括弧({{}})で囲んだ部分がテンプレート機能のようにVue.jsの制御下に置â¦
- Vue.js/日記003WEBの特性でもあるインタラクティブな部分はVue.jsではどう記述するのかなと思ったら、メソッドを規定しておいて、操作対象の要素に必要なメソッドを紐づければいâ¦
- Vue.jsVue.js を使うケースにそれほど恵まれなかったのですが、久しぶりに採用しそうなので、今のVue.jsを再学習します。今は「Vue 3」にバージョンアップしてâ¦
- Vue.js/リストを作った「一覧画面」みたいに言われる画面を作りましょう。 rowsというデータに人名や年齢を詰め込んだリストを用意してみました。 v-forループを使って一覧表示しましâ¦
- Vue.js/メニューを作った試しにクリックして選ぶメニューを作ることにしました。 メニューからカテゴリーを選ぶ、といった用途のつもりです。データ部にはカテゴリーの選択肢リストと現在選択中のâ¦
- Vue.js/リストを改良した前回 、複数ある項目をリスト表示して、件数を数えて、絞り込み機能をつけました。絞り込まれたリスト(filteredRows)が現在の表示対象です。全部で6件あるâ¦
- Vue.js/ライフサイクル例によってデータを詰めたVueのAppを用意しました。このrowsの部分はよそのシステムやデータベースが出力したJSON的なものだったりして、事前に手を加えられâ¦
- 飴屋このサイトでは、「飴屋」の活動に関してご紹介しています。 飴屋は個人事業主として、千葉県浦安市で活動しています。 主な業務内容は、WEBサイトの制作、WEBシスâ¦