Skip to content

自己实现一个简易版的 Vue, 了解其设计思路和原理

License

Notifications You must be signed in to change notification settings

AnaniZhu/DIY-Vue

Repository files navigation

DIY-Vue

自己动手实现一个简单版的 Vue, 深度掌握 Vue 的实现原理,学习 Vue 的设计思想。

先按照自己思路写,再跟 Vue 源码做对比,通过对比揣摩 Vue 的实现思路, 进而优化自身代码,并考虑 Vue 源码是否可以进一步优化?

本项目仅考虑 web 端的实现,且不做浏览器兼容处理,性能优化上也不会追求极致,专注于实现其核心功能。

具体实现代码的属性名、方法名尽量会跟 Vue 官方源码保持一致,部分实现可能会有偏差。

本仓库代码内有比较详细的注释解释其实现思路。

TODOLIST

  • observer
    • observe
    • dep
    • watcher
    • array
    • scheduler
  • instance
    • init
    • lifecycle (生命周期还存在部分问题,beforeDestroydestroyed 还未实现)
    • event
    • render
    • state
    • inject
  • complier
    • parser
    • codegen
    • directive
      • v-if & v-else & v-else-if
      • v-for
      • v-bind
      • v-on
      • v-model (目前只实现了最简单的 input 绑定)
      • v-html
      • v-text
      • v-show
      • v-pre
      • v-once
      • v-cloak
      • v-slot
    • Mustache 文本插值
    • filter
    • classstyle 数据格式(数组、对象)兼容
  • vdom
    • vnode
    • patch (指令以及组件的销毁操作还未完成)
    • create-element
    • create-component
    • create-functional-component
  • component
    • template (目前只实现常用功能, 可用指令及属性如上)
    • props
    • computed
    • watch
    • methods
    • slots & scopedSlots
    • 自定义事件
    • mixin
    • 生命周期
    • 函数式组件
    • 异步组件
    • keep-alive
    • transition
  • Vue.extend

About

自己实现一个简易版的 Vue, 了解其设计思路和原理

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published