Vue.js
https://gyazo.com/525d7e99d0f9172fd4038823c8664cc4
View層に特化したライブラリ
特徴
学習コストが低い
コンポーネント指向によるUIの構造化
リアクティブなデータバインディング
設計思想
プログレッシブフレームワーク
フレームワークはどんなどきにでも、どんな規模でも、段階的に柔軟に使えるべきである。
段階的領域
https://gyazo.com/abf6c31625df0bd4ae025296c07497dd
宣言的レンダリング Declarative Rendering
宣言的なDOMレンダリングが必要な領域
Vue.jsの役割
HTMLレンプレートにレンダリングする対象を宣言的に(webブラウザがわかるように)記載することで、データの変更のたびにリアクティブなDOMレンダリングと、ユーザーによる入力データの同期が可能に
Component コンポーネント code
UIをモジュール化して再利用する必要がある領域
Vue.jsの役割
クライアントサイドルーティング Client-side Routing
webサイトがSPA Single Page Applicationとして動作する際に必要とされるWebアプリケーションの領域
Vue Routerの役割
ルーティング(アプリケーションのURL設計、指示)を行う
大規模向け状態管理 Large-scale State Management
コンポーエンント間で状態の共有方法が必要な領域
Vuexの役割
データフローアーキテクチャに沿った状態管理ライブラリ
ビルドシステム Build System
webアプリケーションのコンポーネントの管理、本番環境の配信、プロジェクト構成に関して考える必要のある領域
vue-cliなどの役割
楽にビルドできるツール
クライアントサーバーデータ永続化 Client-server Data Persistence
Webアプリケーションの複雑なデータ構造の永続化が必要な領域
axiosやGraphQLインテグレーションが可能なvue-apollo
Vueを支える技術
Component コンポーネント code
単一ファイルコンポーネント
リアクティブシステム
オブザーバーパターン
状態の変化を検知して自動的にDOMに反映
レンダリングシステム
仮装DOMによる高速なレンダリング
重要用語
Vueオブジェクト
コンストラクタ
Component コンポーネント code
テンプレート
ディレクティブ
Error エラー
Toast トースト Snackbar スナックバー UIでError エラー表示
vue-toasted
参考
💯Vuejs Axiosで共通的な例外をあつかう - SIerだけど技術やりたいブログ
💯Vue.jsでのDryなエラーハンドリングと排他処理 - Qiita
💯Vue.config.errorHandlerはどこで発生したエラーをキャプチャできるのか - Qiita
Vue.jsのエラーハンドリングについて調べた件(前編) - クソ雑魚エンジニアのメモ帳
Vue.jsのエラーハンドリングについて調べた件(後編) - クソ雑魚エンジニアのメモ帳
Logging ロギングについて
ライブラリ
コアチームが選ぶおすすめプラグインなど
バージョン
まもなくやってくる Vue.js 3 - Speaker Deck
ツール
Vue.js devtools
Vue.js Extension Pack - Visual Studio Marketplace
よく使われる拡張機能セット
駄目!
一部、scriptがtemplateと認識されるバグあり
実装例
GitHub.iconKiichiSugihara/vue-login: JWT Auth Project by Vue.js & Express& MongoDB
注意
APIで取得したアイテムの一部がconsoleでエラー
item.nameが存在するかわからないので怒られる
v-if v-showで存在保証
code:vue.js
<template v-if="userItem.name">
<span>{{ userItem.name.first + userItem.name.last }}</span>
</template>
html - Vue - error in render when trying to display data from nested object - Stack Overflow
参考
Vue.js入門 ―最速で作るシンプルなWebアプリケーション
Vue Mastery | The Ultimate Learning Resource for Vue.js Developers
#Front-end_Framework