Vue3を始めてみる

今更感はある。
出来ればあまり手を加えず公式のやり方に寄せておきたい。
以下の内容はVue2をある程度使用していたことを想定している。

Hello World



いくつか方法はあるが今回はViteで構築する。とりあえず動くところまで。
https://v3.ja.vuejs.org/guide/installation.html
Node.jsをインストール済のこと。
npm init vite@latest [プロジェクト名] --template vue
npm init vite@latest HelloVue3 --template vue

cd HelloVue3
npm install
npm run dev
http://localhost:3000/ へアクセス

エディタにVSCode、拡張機能にVolarをインストールすることが推奨されている。
さらに拡張機能の@builtin TypeScript and JavaScript Language Features を無効化すると型チェックが走るようになる


ソースコードを確認してみる



HelloVue3/src/main.js


htmlから読み込まれるjsファイル。少し記述が変わっている。
createApp(App).mount('#app')

HelloVue3/src/App.vue


目新しい記述として<script setup> 構文がある。

従来との違いとしてはscriptを先に記述できるようになり、それに伴い宣言した変数をtemplate内で使用できるようになっている。
<script setup lang="ts">とすることでTypeScriptでの記述が可能(ただし標準だとエディタ上のチェックのみ)
setup以外は従来と変わった部分は見受けられない。

HelloVue3/src/components/HelloWorld.vue


https://v3.ja.vuejs.org/guide/reactivity-fundamentals.html
const count = ref(0)

countが下記のtemplate(html)内で使用できるようになっている(Vue2まではreturnする必要があった)
refを外した場合初期値は設定されるが動的に変更することが出来なくなる。

アプリケーションをビルドするには?



npm run build
distファイルにビルド結果が出力される。
とりあえず事前知識としてはこの辺りまで。
後は必要に応じて適宜調べながらやるのが良さそう。

以降はVue3を始める上でいろいろ調べた内容。

何を使ってどうやって開発するか。開発時のオプション



https://v3.ja.vuejs.org/guide/installation.html

CDN or ホスト


サーバに処理を寄せる場合はこっち。

今まで通りVue CLIを使用する


npm install -g @vue/cli
vue create [project]

Vue2から手順を変えたくない場合選択肢の一つ。
今後新しい機能が追加されることはないという情報を見かけたがそんなことはなさそう?
Vue2,3を選択可能。
以下のオプションが選択可能。
 ◯ Babel
 ◉ TypeScript
 ◯ Progressive Web App (PWA) Support
 ◉ Router
 ◯ Vuex
 ◯ CSS Pre-processors
 ◉ Linter / Formatter
 ◯ Unit Testing
 ◯ E2E Testing
PWA対応可能。
状態管理したい場合は
Saas等を使用する場合CSS Pre-processorsを有効化。
等々。

Vite


https://ja.vitejs.dev/
npm init vite@latest [プロジェクト名] --template vue
Vue CLIよりも高速とのこと。特にこだわりがなければこれで良いかもしれない
Vue専用というわけではなくReactも選択可能。
JSXがサポートされている。
Pinia(ルーティング)が利用できる。



Vue3新規機能



https://v3.ja.vuejs.org/guide/migration/introduction.html

Pinia


コンポーネント間の状態管理。
Vuexの代替。

Pinia


Viewとロジックの分離。

Teleport


用途はフルスクリーンのモーダル等。



参考



https://v3.ja.vuejs.org/
https://ja.vitejs.dev/
https://zenn.dev/ymgn____/articles/e7709e88948446
https://zenn.dev/azukiazusa/articles/676d88675e4e74


2022年5月1日日曜日