その他

MicroCMS×Vue.js

kurumin

SDKとCDNを読み込み

まず、microCMS SDKとVue.jsのCDNを読み込みます。

  <!-- microCMS SDK -->
  <script src="https://cdn.jsdelivr.net/npm/microcms-js-sdk/dist/umd/microcms-js-sdk.min.js"></script>
  <!-- Vue.js -->
  <script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.js"></script>

SDKとは、開発者が特定のプラットフォームやサービスを使うために必要なツールセットで、CDNとは、ウェブ上で公開されているライブラリを簡単に使えるようにするサービスです。

全体コード

// microCMSの認証設定
const { createClient } = microcms;
const client = createClient({
  serviceDomain: 'qc1v7w07dz', // XXXX.microcms.io の XXXX 部分
  apiKey: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
});

// Vue.jsアプリケーションの設定
const { ref, onMounted, createApp } = Vue;

// アプリケーションを作成
const app = createApp({
  setup() {
    // 変数の定義
    const lists = ref({});

    // 日付フォーマット(0000年0月0日)
	const formatDate = (inputDate) => {
		const date = new Date(inputDate);
		const year = date.getFullYear();
		const month = date.getMonth() + 1;
		const day = date.getDate();
		return `${year}年${month}月${day}日`;
	};

    onMounted(async () => {
      try {
        // APIを呼び出します
        client
          .get({
            endpoint: 'news',
            queries: queries
          })
          .then((res) => {
            // データをリアクティブな変数に代入します
            lists.value = res.contents;
            console.log(lists)
          });
      } catch (err) {
        // エラーが発生した場合
        console.error('mounted ERROR!!', err);
      }
    });

    // 他の場所(html)で使うために変数を返します
    return {
      lists,
      formatDate
    };
  },
});

// アプリケーションを「#app」要素にマウントします
app.mount('#app');

microCMSの認証設定

// microCMSの認証設定
const { createClient } = microcms;
const client = createClient({
  serviceDomain: 'qc1v7w07dz', // XXXX.microcms.io の XXXX 部分
  apiKey: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
});
createClient

これはmicroCMSのクライアントを作成するための関数です。

serviceDomain

これはサービスのドメイン名にあたる部分で、「XXXX.microcms.io」の「XXXX」の部分に対応します。

apiKey

microCMSのAPIキーです。このキーを使って、認証された通信を行います(安全のため、通常は環境変数などで管理します)。

Vue.jsアプリケーションの設定

const { ref, onMounted, createApp } = Vue;
ref

Vueのリアクティブな値を作成するための関数。このコードでは`lists`というリアクティブ変数を作っています。

onMounted

コンポーネントがマウントされたときに実行される関数。

createApp

Vueアプリケーションを作成するための関数。

Vueアプリケーションの作成

// アプリケーションを作成
const app = createApp({
  setup() {
    // 変数の定義
    const lists = ref({});

    // 可能ならここに日付フォーマット(0000年0月0日)の関数formatDate()を作成する

    onMounted(async () => {
      try {
        // APIを呼び出します
        client
          .get({
            endpoint: 'news',
            queries: queries
          })
          .then((res) => {
            // データをリアクティブな変数に代入します
            lists.value = res.contents;
            console.log(lists)
          });
      } catch (err) {
        // エラーが発生した場合
        console.error('mounted ERROR!!', err);
      }
    });

    // 他の場所(html)で使うために変数を返します
    return {
      lists,
      formatDate // 日付フォーマット関数を作成した場合
    };
  },
});
setup

コンポーネントのデータやメソッドを定義し、使用するための関数です。

lists

APIから取得したニュースデータを格納するための変数です。

formatDate

日付を「XXXX年XX月XX日」という形式にフォーマットするための関数です。

onMounted

コンポーネントが初めて表示されたときに、microCMSのAPIを呼び出して「news」エンドポイントからデータを取得します。取得されたデータは`lists`に保存されます。

アプリケーションのマウント

アプリケーションをページ内の特定の要素に関連付けます。

app.mount('#app');
mount

このVueアプリケーションをHTML内の`<div id=”app”>`にマウントします。これで、VueのデータとメソッドをそのHTML要素と連動させることができます。

まとめ

microCMSのクライアントを作成し、APIにアクセスできるようにする
// microCMSの認証設定
const { createClient } = microcms;
const client = createClient({
  serviceDomain: 'qc1v7w07dz', // XXXX.microcms.io の XXXX 部分
  apiKey: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
});
Vue.jsのアプリケーションを作成し、必要な機能をインポートする
// Vue.jsアプリケーションの設定
const { ref, onMounted, createApp } = Vue;

// アプリケーションを作成
const app = createApp({
  setup() {

   ・・・省略

  },
});
リアクティブなデータ(lists)を定義**する。これは、取得したニュース記事を格納する配列になる。
    // 変数の定義
    const lists = ref({});
コンポーネントがマウントされたとき(onMounted)に、microCMSのAPIからデータを取得する。このとき、async・awaitを使って非同期処理を行う。

取得したデータをlistsに格納する。これで、テンプレート側でlistsを使ってデータを表示できるようになる。

    onMounted(async () => {
      try {
        // APIを呼び出します
        const res = await client.get({
          endpoint: 'news',
          queries: queries
        });
        // データをリアクティブな変数に代入します
        lists.value = res.contents;
        console.log(lists)
      } catch (err) {
        // エラーが発生した場合
        console.error('mounted ERROR!!', err);
      }
    });
HTMLで使用するデータや関数をreturnで返す。
    // 他の場所(html)で使うために変数を返します
    return {
      lists,
      formatDate
    };
アプリケーションをマウントして、HTMLと紐付ける
// アプリケーションを「#app」要素にマウントします
app.mount('#app');

おまけ・日付フォーマット関数の例

    // 日付フォーマット(0000年0月0日)
    const formatDate = (inputDate) => {
      const date = new Date(inputDate);
      const year = date.getFullYear();
      const month = date.getMonth() + 1;
      const day = date.getDate();
      return `${year}年${month}月${day}日`;
    };

ABOUT ME
記事URLをコピーしました