こんにちは、Webフロントエンドエンジニアの爲本、山本です。
先日開催された 「Vue Fes Japan 2024」にて、LINEヤフー株式会社はゴールドスポンサーを務めさせていただきました。LINEヤフー企業ブースでは、Vue.js に関するクイズを実施しました。この記事では、今回出題した全 6 問について解説します。
LINEヤフーでは、「LYPプレミアム」や「LINE公式アカウント」「LINEギフト」など、さまざまなプロダクトでVue.jsを使用しています。さらに、LINEヤフーはVue.jsのゴールドスポンサーとして、月500ドルの支援を行なっています。この支援を通じて、Vue.jsコミュニティの成長と発展に貢献しています。今回のVue Fes Japan 2024 では、選択問題から記述問題まで、Vue.jsに関する問題を時間を区切って全部で6つ出題しました。ブースに来ていただいた方には、付箋を貼っていただくことで、クイズを通じて LINEヤフーのスタッフとコミュニケーションを図りました。
問 1
設問
設問それぞれのコードはすべて正常に動作します。 Vue における SFC の記述方法で推奨されている書き方はどれでしょうか?(複数選択可)
(1)
<template>
<!-- ... -->
</template>
<script lang="ts">
/* ... */
</script>
<style scoped>
/* ... */
</style>
(2)
<script lang="ts">
/* ... */
</script>
<template>
<!-- ... -->
</template>
<style scoped>
/* ... */
</style>
(3)
<script lang="ts">
/* ... */
</script>
<style scoped>
/* ... */
</style>
<template>
<!-- ... -->
</template>
(4)
<template>
<!-- ... -->
</template>
<style scoped>
/* ... */
</style>
<script lang="ts">
/* ... */
</script>
解答
(1)、(2)
解説
Vue.js におけるシングルファイルコンポーネント(SFC)の書き方では、style セクションが最後にあることが重要です。これさえ守られていれば、template と script の順序については、どちらも推奨される形となっています。Vue 2.x の時代には、多くのプロジェクトで template が最初に書かれることが一般的でした。しかし、Vue 3.2 では script setup 構文が多く使われるようになり、Vue.js の公式ドキュメントでも script を最初に置いています。また、ファイルによって template が最初のものと、script が最初のものとが混在すると、管理が難しくなります。そのため、チーム内で統一したルールを決めることが重要です。筆者としては、エンジニアとデザイナーがそれぞれの作業を効率よく行えるように、script, template, style の順序で記述することをおすすめしています。この順番は、エンジニア/デザイナーの作業分担が明確で、エンジニアが主に script と template を担当し、デザイナーが template と style を担当するようなケースに適しています。この配置により、それぞれの作業エリアが隣接するため、従来の template, script, style の順序よりも、共同作業やコードの理解が向上します。
問 2
設問
下記コードはどの順番で実行されるでしょうか? また、その理由を記述してください。
- (1)1、4、5、2、3
- (2)1、5、4、2、3
- (3)1、2、3、4、5
- (4)1、4、2、5、3
<script setup lang="ts">
import { nextTick, onMounted } from "vue";
(async () => {
console.log(1);
await new Promise((resolve) =>
setTimeout(() => {
console.log(2);
return resolve("ok");
})
).then((_v) => {
console.log(3);
});
})();
nextTick(() => {
console.log(4);
});
onMounted(() => {
console.log(5);
});
</script>