Vue.jsのコンポーネントの基本は公式サイトで詳しく説明されているのですが、初心者にとってはわかりにくい。
特にこれを実際のアプリ開発でどう使えばいいのかの説明がもうちょっと欲しいところ。
という訳で、実際のアプリでVue.jsのComponentを作ってみました。
こんなモンを作りました。普通のVue.jsのテンプレート
にtodo App
を合わせるというなんとも適当なアプリです。適当ですが、他のサイトだとtodoアプリの説明だけおわる場合が多くて、理解力の乏しい僕は実際のアプリ開発で迷うことがあったので、ちょっと一歩踏み込んでみました。
適当なVue.jsのサンプルアプリですが、コンポーネントをサラッと学ぶには最適かと思います。
やりたいことはtodoアプリをVue.jsのテンプレート
で表示させるようにしたいだけなので、todoアプリのファイルをまとめるフォルダtodos
フォルダを作成し、その中に全部todoアプリのファイルを入れます。
必要なのは、todoアプリを構成するファイルだけなので、BaseInputText.vue
、TodoListItem.vue
、TodoList.vue
、variables.scss
の4つだけです。
上記の作業が終われば以下のような構成になると思います。
まず、vueテンプレートで使うtodoアプリ側のコンポーネントはどれか探します。
コードを見れば簡単にわかるのですが、todoアプリはBaseInputText.vue
、TodoListItem.vue
の2つのファイルをTodoList.vue
がimportすることで出来ています。
<!-- TodoList.vue -->
import BaseInputText from './BaseInputText.vue'
import TodoListItem from './TodoListItem.vue'
let nextTodoId = 1
export default {
components: {
BaseInputText, TodoListItem
},
なので、vueテンプレートにtodoアプリを使うにはTodoList.vue
だけをimportすればいいんです。
簡易図で説明するとこんな感じ。
コードはこんな感じ。
<!-- App.vue -->
import HelloWorld from "./components/HelloWorld";
import TodoList from "./components/todos/TodoList";
export default {
name: "App",
components: {
HelloWorld, TodoList
}
};
そして、これを表示するにはhtml側で<TodoList/>
とすればいいだけ。
<!-- App.vue -->
<template>
<div id="app">
<img width="25%" src="./assets/logo.jpg">
<HelloWorld/>
<TodoList/>
</div>
</template>
実際に作ったものはここにおいてます。