このリポジトリは Vue3 の学習を深めるために、TDD(テスト駆動開発)と TPP(変換優先原則)に基づいて、Vue3 の簡略版を実装しています。
ここでノートを見ることができます。
ノートには、このリポジトリの実装過程での考えや重要な知識点が記録されています。
Vue3 を深く学ぶためには、Vue3 のソースコードを読む必要があります。
しかし、Vue3 のソースコードには、エッジケースや互換性のためのロジックが多く含まれており、読むのが難しくなっています。
私たちはコアロジックに集中すべきで、このリポジトリの目的は Vue3 のソースコードからコアロジックだけを抽出し、核心部分のみを残すことです。
# リポジトリをクローン
git clone https://github.com/NansenHo/mini-vue.git
cd mini-vue
# パッケージをインストール
pnpm install
# 単体テストを実行
pnpm run test-unit
# e2eテストを実行
pnpm run test-e2e
pnpm run test-e2e:open
# ビルド
pnpm run build
Server を使用して example/*
ディレクトリ内の index.html
ファイルを開くだけです。
Live Server の使用を推奨します。
- TypeScript
- Vitest
- Cypress
- Rollup
runtime-core モジュール:
- コンポーネント型をサポート
- エレメント型をサポート
-
proxy
をサポート -
render
関数内でsetup
から返されたオブジェクトを取得可能 -
$el
API をサポート -
props
の初期化(event
を含む) - 基本的な
slots
をサポート - コンポーネントの
emit
をサポート -
setup
関数がprops
とcontext
にアクセス可能 -
provide
/inject
をサポート -
getCurrentInstance
をサポート - テキスト型ノードをサポート
-
props
の更新を実装 -
nextTick
を実装 -
watchEffect
をサポート
reactivity モジュール:
-
reactive
を実装 -
ref
を実装 -
track
で依存関係を収集 -
trigger
で依存関係をトリガー -
effect
がrunner
関数を返す -
effect.scheduler
をサポート -
effect.stop
をサポート -
isReadonly
をサポート -
isReactive
をサポート - ネストされた
reactive
をサポート - ネストされた
readonly
をサポート -
isRef
をサポート -
unRef
をサポート -
proxyRefs
をサポート -
computed
を実装
compiler-core モジュール:
- インターポレーションを解析
- エレメントを解析
- テキストを解析