├── .gitignore ├── README.md ├── babel.config.js ├── example ├── apiProviderInject │ ├── App.js │ ├── index.html │ └── main.js ├── componentEmit │ ├── App.js │ ├── index.html │ └── main.js ├── componentSlot │ ├── App.js │ ├── index.html │ └── main.js ├── currentInstance │ ├── App.js │ ├── index.html │ └── main.js ├── helloworld │ ├── App.js │ ├── index.html │ └── main.js ├── patchChildren │ ├── App.js │ ├── index.html │ └── main.js └── update │ ├── App.js │ ├── index.html │ └── main.js ├── index.html ├── lib ├── guide-mini-vue3.cjs.js └── guide-mini-vue3.esm.js ├── package.json ├── packages ├── index.ts ├── reactivity │ ├── __test__ │ │ ├── computed.spec.ts │ │ ├── effect.spec.ts │ │ ├── reactive.spec.ts │ │ ├── readonly.spec.ts │ │ └── ref.spec.ts │ └── src │ │ ├── baseHandlers.ts │ │ ├── computed.ts │ │ ├── effect.ts │ │ ├── index.ts │ │ ├── reactive.ts │ │ └── ref.ts ├── runtime-core │ └── src │ │ ├── apiInject.ts │ │ ├── component.ts │ │ ├── componentEmit.ts │ │ ├── componentProps.ts │ │ ├── componentPublicInstance.ts │ │ ├── componentSlots.ts │ │ ├── createApp.ts │ │ ├── h.ts │ │ ├── helpers │ │ └── renderSlots.ts │ │ ├── index.ts │ │ ├── renderer.ts │ │ └── vnode.ts ├── runtime-dom │ └── index.ts └── shared │ ├── index.ts │ └── shapeFlags.ts ├── rollup.config.js └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /yarn.lock -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mini-vue3 2 | 3 | > 实现一个简易的 Vue3 用来学习源码 4 | 5 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/babel.config.js -------------------------------------------------------------------------------- /example/apiProviderInject/App.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/apiProviderInject/App.js -------------------------------------------------------------------------------- /example/apiProviderInject/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/apiProviderInject/index.html -------------------------------------------------------------------------------- /example/apiProviderInject/main.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/apiProviderInject/main.js -------------------------------------------------------------------------------- /example/componentEmit/App.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/componentEmit/App.js -------------------------------------------------------------------------------- /example/componentEmit/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/componentEmit/index.html -------------------------------------------------------------------------------- /example/componentEmit/main.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/componentEmit/main.js -------------------------------------------------------------------------------- /example/componentSlot/App.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/componentSlot/App.js -------------------------------------------------------------------------------- /example/componentSlot/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/componentSlot/index.html -------------------------------------------------------------------------------- /example/componentSlot/main.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/componentSlot/main.js -------------------------------------------------------------------------------- /example/currentInstance/App.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/currentInstance/App.js -------------------------------------------------------------------------------- /example/currentInstance/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/currentInstance/index.html -------------------------------------------------------------------------------- /example/currentInstance/main.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/currentInstance/main.js -------------------------------------------------------------------------------- /example/helloworld/App.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/helloworld/App.js -------------------------------------------------------------------------------- /example/helloworld/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/helloworld/index.html -------------------------------------------------------------------------------- /example/helloworld/main.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/helloworld/main.js -------------------------------------------------------------------------------- /example/patchChildren/App.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/patchChildren/App.js -------------------------------------------------------------------------------- /example/patchChildren/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/patchChildren/index.html -------------------------------------------------------------------------------- /example/patchChildren/main.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/patchChildren/main.js -------------------------------------------------------------------------------- /example/update/App.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/update/App.js -------------------------------------------------------------------------------- /example/update/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/update/index.html -------------------------------------------------------------------------------- /example/update/main.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/example/update/main.js -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/index.html -------------------------------------------------------------------------------- /lib/guide-mini-vue3.cjs.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/lib/guide-mini-vue3.cjs.js -------------------------------------------------------------------------------- /lib/guide-mini-vue3.esm.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/lib/guide-mini-vue3.esm.js -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/package.json -------------------------------------------------------------------------------- /packages/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/index.ts -------------------------------------------------------------------------------- /packages/reactivity/__test__/computed.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/reactivity/__test__/computed.spec.ts -------------------------------------------------------------------------------- /packages/reactivity/__test__/effect.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/reactivity/__test__/effect.spec.ts -------------------------------------------------------------------------------- /packages/reactivity/__test__/reactive.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/reactivity/__test__/reactive.spec.ts -------------------------------------------------------------------------------- /packages/reactivity/__test__/readonly.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/reactivity/__test__/readonly.spec.ts -------------------------------------------------------------------------------- /packages/reactivity/__test__/ref.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/reactivity/__test__/ref.spec.ts -------------------------------------------------------------------------------- /packages/reactivity/src/baseHandlers.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/reactivity/src/baseHandlers.ts -------------------------------------------------------------------------------- /packages/reactivity/src/computed.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/reactivity/src/computed.ts -------------------------------------------------------------------------------- /packages/reactivity/src/effect.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/reactivity/src/effect.ts -------------------------------------------------------------------------------- /packages/reactivity/src/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/reactivity/src/index.ts -------------------------------------------------------------------------------- /packages/reactivity/src/reactive.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/reactivity/src/reactive.ts -------------------------------------------------------------------------------- /packages/reactivity/src/ref.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/reactivity/src/ref.ts -------------------------------------------------------------------------------- /packages/runtime-core/src/apiInject.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/runtime-core/src/apiInject.ts -------------------------------------------------------------------------------- /packages/runtime-core/src/component.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/runtime-core/src/component.ts -------------------------------------------------------------------------------- /packages/runtime-core/src/componentEmit.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/runtime-core/src/componentEmit.ts -------------------------------------------------------------------------------- /packages/runtime-core/src/componentProps.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/runtime-core/src/componentProps.ts -------------------------------------------------------------------------------- /packages/runtime-core/src/componentPublicInstance.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/runtime-core/src/componentPublicInstance.ts -------------------------------------------------------------------------------- /packages/runtime-core/src/componentSlots.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/runtime-core/src/componentSlots.ts -------------------------------------------------------------------------------- /packages/runtime-core/src/createApp.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/runtime-core/src/createApp.ts -------------------------------------------------------------------------------- /packages/runtime-core/src/h.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/runtime-core/src/h.ts -------------------------------------------------------------------------------- /packages/runtime-core/src/helpers/renderSlots.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/runtime-core/src/helpers/renderSlots.ts -------------------------------------------------------------------------------- /packages/runtime-core/src/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/runtime-core/src/index.ts -------------------------------------------------------------------------------- /packages/runtime-core/src/renderer.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/runtime-core/src/renderer.ts -------------------------------------------------------------------------------- /packages/runtime-core/src/vnode.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/runtime-core/src/vnode.ts -------------------------------------------------------------------------------- /packages/runtime-dom/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/runtime-dom/index.ts -------------------------------------------------------------------------------- /packages/shared/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/shared/index.ts -------------------------------------------------------------------------------- /packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/packages/shared/shapeFlags.ts -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/rollup.config.js -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/briver0825/mini-vue3/HEAD/tsconfig.json --------------------------------------------------------------------------------