Пишем собственный фреймворк с нуля, чтобы понять принципы работы других фреймворков: от движка шаблонов до управления состоянием → https://mfrachet.github.io/create-frontend-framework/