見出し画像

Vue.jsでTodoアプリを作ってみよう

Vue.jsというユーザインターフェース構築のためのJavaScriptフレームワークがあります。

非常に人気のあるフレームワークなので、興味のある方もいらっしゃると思います。

そこで、本記事ではVue.jsで簡単なTodoアプリを一から作成する手順を紹介しようと思います。

Vue.jsでのアプリ開発がどのようなものかをざっと理解していただければと思います。

今回作成するTodoアプリは下図のような追加と削除ができるだけの簡単なものです。

画像12

Vue.jsでアプリ開発を行う上で知っておいていただきたいことは、アプリを小さい部品(コンポーネント)の集合として考えて開発を行うことができるという点です。

今回のTodoアプリは下図のようにApp、TodoForm、TodoListの3つのコンポーネントで構成されています。

画像13

実行環境

Vue.jsにはVue CLIというVue.jsでアプリ開発を行う際にいろいろと支援してくれる便利なツールがありますので、ここでもそのツールを使ってTodoアプリを作ることにします。

下記にVue CLIのサイトのリンクを貼っておきます。

本記事ではVue CLIが既にインストールされている状態から始めることにします。

画像1

実行手順

大きな流れは次の通りです。

1.プロジェクトの作成
2.Appコンポーネントの作成
3.TodoFormコンポーネントの作成
4.TodoListコンポーネントの作成
5.実行

1.プロジェクトの作成

「vue create mytodo」を実行します。

画像2

Default(Vue 3)を選択します。

画像3

mytodoという名前のプロジェクトが自動で作成され、プロジェクトの中には下図のようにフォルダやファイルが存在しています。

Screenshot from 2021-12-10 17-02-07 (コピー)

Vue CLIを使ってアプリ開発を行う場合は、プロジェクトの中に存在する自動生成されたファイルを変更したり、新しくフォルダやファイルを作成したりしながら開発を進めることになります。

2.Appコンポーネントの作成

既存のApp.vueを下記のように変更します。

App.vue

<template>
 <TodoForm v-on:add="addTodo"></TodoForm>
 <TodoList v-bind:todos="todos" v-on:delete="deleteTodo"></TodoList>
</template>

<script>
import TodoForm from './components/TodoForm';
import TodoList from './components/TodoList';

let nextId = 0;

export default {
 data () {
   return {
     todos: []
   }
 },
 components: {
   TodoForm,
   TodoList
 },
 methods: {
   addTodo (newTodo) {
     nextId = nextId + 1;
     this.todos = [...this.todos, { id: nextId, text: newTodo }];
   },
   deleteTodo (id) {
     this.todos = this.todos.filter(todo => todo.id !== id);
   }
 }
}
</script>

3.TodoFormコンポーネントの作成

components配下にTodoForm.vueを作成して下記のコードを入力します。

TodoForm.vue

<template>
 <h3>My Todo</h3>
 <input v-model="newTodo" placeholder="Input here...">
 <button v-on:click="addTodo">ADD</button>
</template>

<script>
export default {
 data () {
   return {
     newTodo: ''
   }
 },
 emits: ['add'],
 methods: {
   addTodo () {
     if (this.newTodo === '') return;
     this.$emit('add', this.newTodo);
     this.newTodo = '';
   }
 }
}
</script>

4.TodoListコンポーネントの作成

components配下にTodoList.vueを作成して下記のコードを入力します。

TodoList.vue

<template>
 <h5>Todo List</h5>
 <ul>
   <li v-for="todo in todos" v-bind:key="todo.id">
     {{ todo.text }}
     <button v-on:click="deleteTodo(todo.id)">DEL</button>
   </li>
 </ul>
</template>

<script>
export default {
 props: ['todos'],
 emits: ['delete'],
 methods: {
   deleteTodo (id) {
     this.$emit('delete', id);
   }
 }
}
</script>

5.実行

「npm run serve」を実行します。

画像4

ブラウザで「http://localhost:8080」を開くとアプリが起動します。

画像5

学習教材の紹介

上記では簡単なTodoアプリを一から作成する手順を紹介しましたが、Vue.jsでのアプリ開発のイメージを掴んでいただけたのではないでしょうか。

Vue.jsに興味を持たれてVue.jsの学習を始めてみようと思われた方もいらっしゃると思いますので、Vue.jsの学習教材について少し紹介しようと思います。

公式ドキュメント

Vue.jsに関して一番正確な情報源です。

画像20

下記にリンクを貼っておきます。

Qiitaの記事

例えば「vue.js 入門 qiita」という検索ワードで検索すると下図の様にいろいろと記事が見つかりますので、それらの記事を読んで学ぶのも良いと思います。

画像21

Taniaさんの記事

Web開発関連の記事を多く執筆されているTaniaさんが作成されたVue Tutorialは非常に有益だと思います。

以前下記の記事で紹介しましたので、興味のある方はご確認ください。

ネット上には非常に多くの学習教材がありますので、いろいろと検索して探してみるのも面白いと思います。

Vue.jsとTodoMVC

上記では追加と削除しかできない簡単なTodoアプリを作成しましたが、もっといろいろなことができるTodoMVCというものがあります。

todomvc-app-cssを使って作られた下図のような外見のアプリです。

画像22

todomvc-app-cssについては以前下記の記事で紹介しましたので、興味のある方はご確認ください。

実は、Vue.jsで作られたTodoMVCがあり、そのコードを見ることができます。

TodoMVCのコードが見れるのは次の2箇所です。

Vue.jsのドキュメント(v2)の中
Vuex(Vue.jsの状態管理ライブラリ)のGitHubリポジトリの中

Vue.jsのドキュメント(v2)の中

ドキュメントの中にTodoMVCが埋め込まれています。(動かすこともできます)

画像14

スライダーを右にずらすとコードが現れます。

画像15

下記にリンクを貼っておきます。

Vuex(Vue.jsの状態管理ライブラリ)のGitHubリポジトリの中

VuexのGitHubリポジトリにはexamplesというフォルダがあります。

画像7

examplesの中にTodoMVCが含まれています。

画像23

examplesを実行してTodoMVCを選択します。

画像8

TodoMVCを動かすことができます。

画像9

下記にリンクを貼っておきます。

TodoMVCのコード量はそれほど多くないので、Vue.jsを学習する際にはTodoMVCのコードを見ながらVue.jsの文法を理解していくのも良いと思います。

CypressとTodoMVC

CypressというWebアプリケーションの自動テストツールがあります。

Cypressについては以前下記の記事で紹介しました。

実はCypressとTodoMVCは深い関係があります。

Cypressのテスト対象としてTodoMVCがよく使われており、Cypressの公式サイトや公式のGitHubリポジトリを探してみると、TodoMVCをテストしているコードがいろいろと見つかります。

例えばCypressの公式ドキュメントのExamplesの中にTodoMVCがあります。

画像10

CypressでTodoMVCをテストしている実行画面です。

画像11

下記にリンクを貼っておきます。

他にも「testing-workshop-cypress」というCypressを学習するのに非常に有益なGitHubリポジトリもあります。

画像16

下記は初級者向けのコンテンツの一覧です。

画像17

下記は中上級者向けのコンテンツの一覧です。

画像18

上記のワークショップでは下図のようにバックエンドと通信を行うTodoMVCをCypressを使ってテストを行う方法を学ぶことができます。

画像19

Cypressには下記のような本格的なアプリを使った学習教材もありますが、TodoMVCよりかなり規模の大きいアプリを使った内容になっていますので、学習の難易度は高めです。

よって、これからCypressを学ぼうと思われている方はTodoMVCをテストしているコードから学習を始めて、Cypressに慣れてきたら下記の学習教材をチェックされるのが良いと思います。

画像24

下記にリンクを貼っておきます。