monga3日記

Java+SpringでWebシステムの構築をやっていきます。

『Vue.js入門』輪読会 6章

gihyo.jp

 

6. 単一ファイルコンポーネントによる開発

6章の内容

 単一ファイルコンポーネントの説明

 


本に記述されているコードのサンプルは以下の公式URLからダウンロードできます。
gihyo.jp

6.1 ツールのインストール

Node.js、npmのインストール 

nodejs.org

インストール後に以下のコマンドを実行して、バージョンが表示されればインストール完了。

$ node --version
v10.14.2

Nodeインストール時に、npmというNode.jsモジュールの管理ツールもインストールされるので
以下のコマンドでバージョンが表示されるかどうか確認する。

$ npm --version
v10.14.2
6.4.1

 

6.1.1 Vue CLI

Vue CLIのインストール

$ npm install -g @vue/cli

> 省略
+ @vue/cli@3.4.0
added 668 packages from 500 contributors in 38.934s

以下のコマンドを実行して、バージョンが表示されればインストール完了。

$ vue --version
v10.14.2

6.2 単一ファイルコンポーネントとは

Vue.jsのコンポーネントを単独のファイルとして作成する機能
単一ファイルコンポーネントSFC(Single File Component)、
またはVueコンポーネントと呼ぶこともある。

単一ファイルコンポーネントコンポーネントのUIを構造化したテンプレート、
コンポーネントの振る舞いを定義したロジック、見た目のスタイルも含めて、
コンポーネントとして定義できる。

6.3 単一ファイルコンポーネントの仕様

単一ファイルコンポーネントを構成するtemplate、script、styleの各ブロックについての説明

6.3.1 templateブロック

コンポーネントのtemplateに対応していて、HTMLを記載する部分
v-で始まる属性のディレクティブも利用可能

6.3.2 scriptブロック

Javascriptを使用できる部分
ライブラリや他のコンポーネントのインポートをここで行う。

6.3.3 styleブロック

HTMLのstyle要素と同じでCSSを定義する部分

6.4 単一ファイルコンポーネントのビルド

単一ファイルコンポーネントはVue.js独自の仕組みのため、解析用のミドルウェアライブラリで
ビルドして、ブラウザで動作できるようにする。

6.5 単一ファイルコンポーネントの動作を体験する

作成した単一ファイルコンポーネントをVue CLIのserveコマンドを利用して確認します。

6.5.1 動作を押さえる

確認する3点のポイント

  • JavaScriptファイルへのバンドル化
  • HTMLとして描画されたテンプレート
  • 挿入されたスタイル

6.6 単一ファイルコンポーネントの機能

単一ファイルコンポーネントのほかにも便利な機能の紹介

6.6.1 外部ファイルのインポート

src属性を使用して、各ブロックで外部ファイルをインポートできます。
パスには単一ファイルコンポーネントからの相対パスを設定する。

<template src="./my-template.html"></template>
<script src="./my-component.js"></script>
<style src="./my-component.css"></style>
6.6.2 スコープ付きCSS

styleブロックにscoped属性を付与することで、その単一ファイルコンポーネントのみにCSSを適用できる。

<style scoped">
・・・CSSの記述
</style>
6.6.3 CSSモジュール

CSSモジュールでも、CSSのクラス名の衝突を防いでくれる。
以下の例ではtemplateブロックでstyleのクラスを指定している。

<template>
  <p :class="$style.message">こんにちは!</p>
</template>

<script>
// 省略
</script>

<style module>
.message { color: #4258b9; }
</style>

221ページのフォームテキストボックスに入力があるかどうかのサンプルを実行するコマンドが
間違っているので、気を付けましょう。

実行するファイル名が異なっています。indexではなくnamedです。
$ vue serve index.vue --open

$ vue serve named.vue --open
6.6.4 他言語実装のサポート

単一ファイルコンポーネントでは、以下の言語を使用できる。

lang属性を使用することで、他言語実装ができる。
本で記載されている例はtemplateブロックに「Pug」、scriptブロックに「TypeScript」、styleブロックで「stylus」です。

<template lang="pug">
</template>

<script lang="ts">
</script>

<style lang="stylus">
</style>

単一ファイルコンポーネントの知識は中規模以上のアプリケーション開発において必須になるということなので勉強しましょう。