designsupply.llc
  • aboutabout
  • servicesservices
  • worksworks
  • mediamedia
  • contactcontact
  • homeサイトトップ
  • about会社概要
  • services業務内容
  • works実績紹介
  • mediaメディア
  • contactお問い合わせ
ja/

media

メディア

  1. サイトトップ
  2. メディア
  3. プログラミングの記事
  4. 配列処理とv-modelを使ったシンプルなToDoリストでVue.jsの基本を学ぶ

配列処理とv-modelを使ったシンプルなToDoリストでVue.jsの基本を学ぶ

  • 2020.08.27
  • プログラミング
  • Vue.js
Updated: 2020.08.27
JavaScriptのフレームワークとして人気のVue.jsですが、JavaScriptの初学者が導入しようと思うとjQueryと比べても少しハードルが高いと感じる人もいるのではないでしょうか。ただ、うまく使うことでちょっとしたアプリケーションも簡単に作成することができるのもVue.jsの魅力です。今回はVue.jsの基本的な部分をToDoリストを作成していく中で学んでみたいと思います。今回は主に2つのキーワードがあります。それは「配列処理」と「v-model」です。どちらもVue.jsを使う上では重要な知識でもあり、実務でも使う場面が多々ありますので、ぜひどちらも覚えておきたいですね。   それでは早速作成してみたいと思います。まずはJavaScriptでVue.jsのコードを書いていきます。今回はVue.jsのライブラリをCDNなどで読み込む形での前提となります。その場合には新たにVueインスタンスを作成し、対象となる要素を指定するところまで進めてみます。 【JavaScript(Vue)】
const vueModel = new Vue({
  el: '#app',
  data: {
    newTask: '',
    tasks: [],
    isError: false
  },
  methods: {
    addTask() {
      if (this.newTask !== '') {
        this.tasks.push(this.newTask);
        this.newTask = '';
        this.isError = false;
      } else {
        this.isError = true;
      }
    },
    removeTask(index) {
      this.tasks.splice(index, 1);
    }
  }
});
  続いてdataオプションとmethodsオプションに追記していきます。今回はToDoリストの作成ということでそれぞれ下記のようなイメージをしておくとわかりやすいですね。
dataオプション アプリケーションで扱う値→追加タスク、登録済みタスク、エラーの有無
methodsオプション アプリケーションで扱う処理→タスクの追加、タスクの削除
  dataはVue.jsの中で扱う変数の集合になります。ToDoリストの要件の中で必要となる情報を保持できるようにします。今回の場合にはタスクの情報が扱うデータになります。そしてmethodsはVue.jsの中で実行する処理になりますので、タスクの追加や削除ができるように処理を追加していきます。上記では、追加タスクは1つしかないので文字列で、登録済みタスクは複数存在できるようにするので配列で、エラーの有無は2択しかないのでbooleanの値をデフォルトで設定しておきます。   そしてもう1点重要なものがあります。それは配列操作のメソッドです。今回はタスクの追加と削除を配列操作で行います。具体的にどういった形で処理が必要かを理解した上で、最適なメソッドを選択できるようにしておくことが重要です。今回は下記のような配列メソッドを採用しました。 タスクの追加:配列に値を追加する→Array.push(value); タスクの削除:配列にある特定の値を削除する→Array.splice(index, count);   配列処理についてはこちらの記事「JavaScriptで配列を扱う時によく使うメソッド#6【配列の値を追加・削除する】」や「JavaScriptで配列を扱う時によく使うメソッド#7【配列の値を切り取る・値を差し替える・配列を合体する】」もぜひ参考にしてみてください。   続いてHTMLを見ていきます。今回はPugで記述しているのでわかりにくいかもしれませんが、大きくはタスクの入力と表示という2つのエリアを用意しています。入力エリアにはタスクの名前を登録できるインプット要素を、表示エリアには、タスク名と削除ボタンをループ処理で表示させていきます。 【Pug】※一部抜粋
div#app
  div.input
    input(type="text" placeholder="タスクを入力" v-model="newTask")
    button(@click="addTask()").
      タスクを追加
    span(v-if="isError").error.
      ※タスクが空欄です
div.output
  ul.task-list
    li(v-for="(task, index) in tasks" :key="index" class="task-item")
      button(@click="removeTask(index)").
        完了
      span.
        {{ task }}
  jQueryなどではDOMの操作をするためにid属性なんかをたくさん使っていましたが、Vue.jsの場合にはメソッドをテンプレート上に直接指定できるのでDOM を操作することは少なくなります。またここではもう一つ重要な機能である「v-model」を理解しておく必要があります。v-modelはinputなどのフォーム要素の入力した値とdataを紐づける機能で、フォームの値を簡単に変数として扱うことができます。   双方向バインディングと呼ばれる特性で、入力値に変更があればすぐに変数側の値も更新されます。ToDoリストであれば、入力したタスク名がそのまま変数に格納できるので、すぐに一覧表示が可能となっています。もちろん削除するときも変数内の配列の値ごと削除するので、内容に応じたHTMLが展開させることができます。あとはそれぞれmethodsで定義した、タスク追加と削除の処理をHTML上でイベントによって呼び出せるようにしておきます。   最後はCSSです、これに関しては適宜デザインに合わせて調整するようにしましょう。特段変わったことはないかと思います。タスクの削除時にアニメーションを入れるなどしても面白いかもしれませんね。 【Sass(SASS)】※一部抜粋
.input
  display: flex
  align-items: center
  flex-wrap: wrap
  padding: 16px
  input[type="text"]
    padding: 8px
    margin: 0 8px 0 0
    min-width: 160px
  button
    padding: 5px
    margin: 0 8px 0 0
  .error
    font-weight: bold
    color: red
.output
  padding: 0 16px
  li
    padding: 16px 0
    border-top: 1px solid #ddd
    span
      padding: 0 0 0 8px
  これでVue.jsを使ったとてもシンプルなToDoリストアプリが出来上がりました。今回作成したサンプルはこちらになります。よければご参考に。  

See the Pen todolist_on_vue by designsupply (@designsupply) on CodePen.

 
  Vue.jsでは様々な便利機能が用意されていますが、初めて学ぼうとなると少し大変かもしれませんが、今回のようなToDoリストを作成するといったわかりやすいテーマがあれば、理解も早まるのではないでしょうか。まだそんなに勉強したことが無いという方はぜひ今回紹介しているような簡単なアプリケーションを作成してみてもいいかもしれませんね。

この記事を書いた人オガワ シンヤ

合同会社デザインサプライ代表兼CEO / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はダイエットコーラとチョコレートが欠かせないアラフォーWebクリエイター。

Sponsored Link

categories

  • WordPress(61)
  • JavaScript(49)
  • Vue.js(48)
  • CSS(46)
  • jQuery(34)
  • Nuxt.js(22)
  • Sass(21)
  • Gulp(17)
  • webpack(16)
  • PHP(14)
  • HTML(14)
  • GSAP(11)
  • React(10)
  • Vite(9)
  • Pug(9)
  • Laravel(8)
  • Cordova(8)
  • Linux(7)
  • Next.js(6)
  • Apache(5)
  • Shopify(4)
  • REST API(4)
  • Node.js(4)
  • Smarty(3)
  • Git(3)
  • JSON(3)
  • その他プログラミング(3)
  • Google Apps API(3)
  • Bootstrap(3)
  • 環境構築・システム(3)
  • TypeScript(2)
  • EJS(2)
  • RMS(2)
  • Docker(2)
  • Instagram API(2)
  • Excel VBA(2)
  • SVG(1)
  • Dart(1)
  • ECカートASP(1)
  • Markdown(1)
  • AMP(1)
  • Nginx(1)
  • XML(1)
  • shellscript(1)
  • Ruby(1)
  • MySQL(1)
  • 次の記事
  • 一覧に戻る
  • 前の記事

まだ依頼内容が決まっていなくても、ご相談ください。

課題の整理や小さな検証、UI/UX・フロントエンドの部分的な支援から始められます。

お問い合わせやご相談はこちらから

Webサイト・プロダクトの企画設計/UI・UXデザイン/フロントエンド開発合同会社デザインサプライ(DesignSupply. LLC)

Office:大阪府大阪市天王寺区清水谷町3-22
Email:info@designsupply-web.com
home
  • サイトトップ
about
  • 3つのポリシー
  • 経営理念
  • 代表・クリエイター紹介
  • 会社概要
services
  • ビジネス・プロダクト支援
  • UI/UX・フロントエンド開発支援
  • プロジェクトの進め方・支援体制
  • エデュケーション事業
works
  • 開発プロジェクト
  • クリエイティブ支援
  • 自社プロダクト
media
  • デザイン
  • プログラミング
  • マーケティング
  • Web開発
  • 写真・動画制作
contact
  • お問い合わせ
news
  • インフォメーション
privacy
  • プライバシーポリシー

WE THINK WITH YOU, DESIGN FOR PEOPLE, AND BUILD WHAT WORKS.

WE THINK WITH YOU, DESIGN FOR PEOPLE, AND BUILD WHAT WORKS.

© 2013 - 2026 DesignSupply.LLC
サイトトップへ
contact