0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Vue.js学習の個人メモ

Last updated at Posted at 2023-11-05

「一日で基本が身に付く!Vue.js」石亀 広大 [著]

この本を終えると、JavaScriptにおけるVue.jsのメリットがわかる!
ついでに以下のアプリを作成できる
・TODOアプリ
・画像ビューワー

Vue.jsはJavaScriptフレームワーク

プログレッシブ(斬新的)フレームワーク
 →規模によって段階的に利用できる
コンポーネント志向
 →部品の組み合わせで構築できる

フロントエンドのフレームワークは他にも
 RaectやAnglar

 例えばDjangoは?
  Pythonで実装されたWebアプリケーションフレームワーク

Vue.jsは学習コストが低い
→HTMLとJavaScriptに馴染みがあればすぐ理解できる

Vue.jsと比較されることが多い他のフレームワークでは、Babelやwebpackの利用が前提だが、Vue.jsは必要なし。
(Vue.jsでも必要に応じてwebpackなどツールを導入できる)

デバックにはDevToolsが欠かせない。
GoogleGhromeでは「Chrome DevTools」というWEB開発ツールが標準で用意されている。

「console.log()」はJacaScriptの通常開発と同様に利用可能。

script.jsファイル
new Vue({
  el: '#app'
  });
index.htmlファイル(CDN利用時)
 <body>
    <div id="app">hello Vue.js</div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="./script/script.js"></script>
  </body>

Vue.jsのポイント

通常のJacaScript
 1.HTMLの要素を取得
 2.データを変更
 3.HTMLへの繁栄

Vue.jsでは
 データバインディング機能により、保持しているデータと画面に表示されているデータが同じ状態になる

script.js
new Vue({
  el: '#app',
  data() {
    return {
      count: 0
    };
  },
index.html上にそのまま数値を表示できる。バインディング。
 <p>{{ count }}</p>

Vueインスタンスのプロパティ

・el →Vueインスタンスを結びつけるHTML要素を指定
・data →データを入れておく場所
・methods →メソッドを定義する場所
・computed →算出プロパティ。バリエーションに使える。
・template →HTMLテンプレート
・components →外部モジュールとして取り込んだコンポーネントをHTMLテンプレートとして使える

Vue.jsのキーワード

・レンダリング(以下の記述が人に説明しやすいので忘れ防止で記載する)
 →あるルールに従って記述されたデータを、人間が読める形に整形してブラウザに表示すること

・Vue.jsの「差分レンダリング」「仮想DOM」
 →更新が必要な部分だけレンダリングする差分レンダリング
 →通常のDOMとは違い、更新が必要な部分を検出するために利用する仮想DOM
 ※DOM(Document Object Model)→ JacaScriptから操作する際に使われる仕組み

・JavaScriptのメソッドの書き方
「this」はオブジェクトそのものを差し、同じオブジェクトのプロパティを利用するときに使う。

script.js
new Vue({
  el: '#app',
  data() {
    return {
      count: 0
    };
  },
  methods: {
    increment() {
      this.count++;
    },
    decrement() {
      this.count--;
    }
  }

・条件付きレンダリング
v-if, v-elseはVue.js特有の要素

・双方向バインディング
v-model

script.js
const app = new Vue({
  el: '#app',
  data() {
    return {
      name: 'name_test'
    };
  }
index.html
 <input v-model="name" type="text" name="" />

 →ただし、イベントハンドラ記載したほうが自由度が高い

・バリデーション
computedで記載

script.js
new Vue({
  el: '#app',
  data() {
    return {
      name: 'name',
    };
  },
  computed: {
    isInValidName() {
      return this.name.length < 4;

・リストレンダリング
v-for
v-bind
 :key="i" →v-bind:key="i"の短縮形
 v-forの変数i(indexが入っている)をkey属性にバインディングしている。 ※Vue.jsが識別できるようにする

・スタイルバインディングで見た目を動的に変える(以下、v-bindの省略)

script.js
new Vue({
  el: '#app',
  data() {
    return {
      range: 10,
    };
  },
  computed: {
    bindStyle() {
      return `width: ${this.range}px; height: ${this.range}px;`;
    }
  }
index.html(v-vind短縮)
<div :style="bindStyle"></div>

・クラスバインディング

script.js
new Vue({
  el: '#app',
  data() {
    return {
      isActive: true
    };
  },
index.html(v-vind短縮)
<div :class="{'is-active': isActive}"></div>
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?