This project is a proof of learning from the Vue.js 3 Fundamentals with the Composition API course.
You can view a live demo of this project at https://vue-shopping-list-app.pages.dev/. The application is hosted on Cloudflare Pages.
- Vue.js 3 offers powerful built-in features for handling application state.
v-for
directive supports looping through both Array and Object keys.- Efficient use of
v-for
on component loops, improving code cleanliness. See v-for gotchas. - Two-way data binding works seamlessly with various form inputs (Select, Radio, Checkbox).
- Useful Vue.js shortcuts:
@submit.prevent
v-model.trim
v-model.number
@keydown.enter
@click
- Multiple options for implementing dynamic CSS classes (Array, Object, or combined).
- Computed properties are similar to React's
useMemo
. Best used for representation, avoiding direct mutations. reactive
vsref
:reactive
doesn't require.value
for changes but doesn't work with primitives.ref
is more versatile and recommended for most use cases.- Refs are ideal for DOM element manipulation, while reactive objects suit reactive state management.
- Use arrow functions for methods in
<script setup>
. - Wrap API interactions in
<form>
tags with@submit.prevent
. - Prefer
@
overv-on
for cleaner event handling (e.g.,@click
). - Use
:
as shorthand forv-bind
(e.g.,:disabled="newItem.length < 5"
). - Combine static and dynamic classes:
class="static-class" :class="[dynamicClass]"
. - Prefer Array of Object approach for dynamic CSS classes:
:class="[{strikeout: purchased}, {priority: highPriority}]"
This project utilizes Vue I18n for internationalization, allowing users to toggle between Japanese and English languages. Vue I18n is a powerful and easy-to-use internationalization plugin for Vue.js applications.
pnpm install
pnpm dev
pnpm build
Lint with ESLint
pnpm lint
VSCode + Volar (and disable Vetur).
TypeScript cannot handle type information for .vue
imports by default, so we replace the tsc
CLI with vue-tsc
for type checking. In editors, we need Volar to make the TypeScript language service aware of .vue
types.
See Vite Configuration Reference.
このプロジェクトは、Vue.js 3 Fundamentals with the Composition APIコースからの学習の証明です。
このプロジェクトのライブデモはhttps://vue-shopping-list-app.pages.dev/で見ることができます。アプリケーションはCloudflare Pagesでホストされています。
- Vue.js 3はアプリケーションの状態を扱うための強力な組み込み機能を提供しています。
v-for
ディレクティブは配列とオブジェクトのキーの両方をループ処理できます。- コンポーネントループでの
v-for
の効率的な使用により、コードの可読性が向上します。v-forの注意点をご覧ください。 - 双方向データバインディングは、様々なフォーム入力(Select、Radio、Checkbox)とシームレスに連携します。
- 便利なVue.jsのショートカット:
@submit.prevent
v-model.trim
v-model.number
@keydown.enter
@click
- 動的CSSクラスの実装には複数のオプションがあります(配列、オブジェクト、または組み合わせ)。
- 算出プロパティはReactの
useMemo
に似ています。表現に最適で、直接の変更を避けるべきです。 reactive
vsref
:reactive
は変更に.value
を必要としませんが、プリミティブでは動作しません。ref
はより汎用性が高く、ほとんどのケースで推奨されます。- refはDOM要素の操作に最適で、reactiveオブジェクトはリアクティブな状態管理に適しています。
<script setup>
内のメソッドにはアロー関数を使用します。- API操作は
<form>
タグで@submit.prevent
を使用してラップします。 - イベントハンドリングには
v-on
よりも@
を優先します(例:@click
)。 v-bind
の省略形として:
を使用します(例::disabled="newItem.length < 5"
)。- 静的クラスと動的クラスを組み合わせます:
class="static-class" :class="[dynamicClass]"
。 - 動的CSSクラスにはオブジェクトの配列アプローチを優先します:
:class="[{strikeout: purchased}, {priority: highPriority}]"
このプロジェクトでは、Vue I18nを使用して国際化を実現し、ユーザーが日本語と英語を切り替えられるようにしています。Vue I18nは、Vue.jsアプリケーション用の強力で使いやすい国際化プラグインです。
pnpm install
pnpm dev
pnpm build
ESLintによるLint
pnpm lint
VSCode + Volar(Veturは無効にしてください)。
TypeScriptはデフォルトで.vue
インポートの型情報を処理できないため、タイプチェックにtsc
CLIの代わりにvue-tsc
を使用します。エディタでは、Volarを使用して、TypeScript言語サービスが.vue
型を認識できるようにする必要があります。
Vite設定リファレンスをご覧ください。