こんにちは、今日は Vue.js を使ってシンプルなタスク管理アプリケーションを作成する過程を紹介します。
Vue.js は、ユーザーインターフェースを構築するための JavaScript フレームワークで、リアクティブなデータバインディングと再利用可能なコンポーネントにより、効率的にアプリケーションを作成することができます。
Vue.jsの学習のために自分でタスク管理が出来るWebアプリを作成しました。
必要最低限の機能しかないので、操作はシンプルです!

1. プロジェクトのセットアップ

最初に、Vue.jsをプロジェクトにインクルードします。今回はCDNを使ってVue.jsを読み込みます。
HTMLファイルの<head>タグの間に下記のコードを追加します。

<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>

2. Vueインスタンスの作成

下記のコードをHTMLファイルの<script>タグの中に、またはjsファイルに追加します。

new Vue({
  el: '#app',
  data: {
    newTask: '',
    newDeadline: '',
    newImportance: 'Medium',
    sortOrder: 'none',
    tasks: JSON.parse(localStorage.getItem('tasks')) || []
  },
  created() {
    this.tasks.forEach(task => {
      this.$watch(() => task.done, this.sortTasks)
    })
  },
  computed: {
    sortedTasks() {
      // ここでタスクをソート
    }
  },
  watch: {
    tasks: {
      handler: function(updatedTasks) {
        localStorage.setItem('tasks', JSON.stringify(updatedTasks));
        updatedTasks.forEach(task => {
          this.$watch(() => task.done, this.sortTasks)
        })
      },
      deep: true
    },
    sortOrder: function() {
      this.sortTasks();
    }
  },
  methods: {
    addTask() {
      // タスクの追加処理
    },
    removeTask(index) {
      this.tasks.splice(index, 1);
    },
    sortTasks() {
      // タスクのソート処理
    }
  }
});

このコードは、新しい Vue インスタンスを作成し、#app 要素にマウントしています。データオプションは、アプリケーションの状態を保持するためのものです。また、各種メソッドやコンピューテッドプロパティも定義しています。

見た目はCSSでお好みにカスタマイズしてください。

3. タスクの追加と削除

ユーザーが新しいタスクを追加できるようにするために、addTask メソッドを定義します。このメソッドは、新しいタスクの詳細を入力するためのフォームのsubmitイベントにバインドされます。

また、タスクを削除するための removeTask メソッドも定義します。各タスクに “Remove” ボタンを追加し、そのクリックイベントにこのメソッドをバインドします。

4. タスクのソート

ソート順を選択できるようにするために、select要素を使用します。v-model ディレクティブを使用して、この要素を sortOrder データプロパティにバインドします。

ソート順が変更されるたびに、タスクリストをソートするために sortTasks メソッドが呼び出されます。

5. タスクの完了

タスクを完了としてマークするために、チェックボックスを使用します。v-model ディレクティブを使用して、このチェックボックスを task.done プロパティにバインドします。これにより、チェックボックスの状態がタスクの done プロパティに自動的に同期されます。

タスクが完了したときには、タスクの背景色を変更し、タイトルに取り消し線を表示します。これを実現するために、v-if ディレクティブと CSS クラスを使用します。

以上で、Vue.jsを使用してシンプルなタスク管理アプリケーションを作成することができました。
Vue.jsを始めて使ってみる人にとって、良い練習になるのではないでしょうか。