Введение
🎯 Цель книги
Спасибо, что выбрали эту книгу!
Я действительно рад, если вы проявили хотя бы небольшой интерес к книге.
Позвольте мне сначала обозначить цель книги.
☆ Цель
- Углубить понимание Vue.js
Что такое Vue.js? Как он устроен? - Научиться реализовывать базовые функции Vue.js
Попробовать реализовать базовый функционал на практике. - Читать исходный код vuejs/core
Понять связь между нашими реализациями и официальным кодом, и понять, как они действительно построены.
Я предоставил общий план целей, но не обязательно выполнять их все или стремиться к совершенству.
Будете ли вы читать книгу от корки до корки или выберете только интересующие вас части – решать вам.
Я буду рад, если вы найдете полезной хотя бы небольшую часть этой книги!
🤷♂️ Для кого предназначена эта книга
- Тем, кто имеет опыт работы с Vue.js
- Умеющим писать на TypeScript
Имея только эти два предварительных условия, никаких других знаний не требуется.
Хотя в процессе чтения книги вы можете столкнуться с незнакомыми терминами, я постарался исключить необходимость в предварительных знаниях и объяснять все по ходу дела, стремясь сделать эту книгу самодостаточной.
Однако, если вы столкнетесь с терминами, которые не должны использоваться для Vue.js или TypeScript, я рекомендую сначала изучить их из соответствующих источников.
(Достаточно базовых функций! (Не нужно глубоко погружаться))
🙋♀️ О чем эта книга (и автор) заботится (и чего хочет достичь)
Прежде чем погрузиться в материал, я хотел бы поделиться некоторыми вещами, о которых я особенно заботился при написании этой книги.
Надеюсь, вы будете иметь это в виду при чтении, и если есть области, где я не достиг цели, пожалуйста, дайте мне знать.
Устранение необходимости в предварительных знаниях
Хотя это может перекликаться с разделом "Для кого предназначена эта книга", упомянутым ранее, я стремлюсь сделать эту книгу как можно более самодостаточной,
минимизируя необходимость в предварительных знаниях и предоставляя объяснения по мере необходимости.
Это потому, что я хочу сделать объяснения как можно более ясными для как можно большего числа читателей.
Те, у кого есть большой опыт, могут найти некоторые объяснения несколько многословными, но я прошу вашего понимания.Пошаговая реализация
Одной из целей книги является пошаговая реализация Vue.js вручную. Это означает, что книга фокусируется на практическом подходе,
и когда дело доходит до реализации, я подчеркиваю важность построения маленькими, инкрементными шагами.
Если быть более конкретным, речь идет о "минимизации нерабочих состояний".
Вместо того, чтобы иметь что-то, что не будет работать, пока оно не будет завершено, цель состоит в том, чтобы оно функционировало на каждом этапе.
Это отражает мой личный подход к кодированию – непрерывное написание нефункционального кода может быть обескураживающим.
Даже если что-то несовершенно, всегда иметь что-то в движении делает процесс более приятным.
Речь идет о том, чтобы испытывать маленькие победы, типа: "Да! Теперь это работает до этого момента!"Избегание предвзятости в отношении конкретных фреймворков, библиотек или языков
Хотя эта книга посвящена Vue.js, сегодня существует бесчисленное множество отличных фреймворков, библиотек и языков.
На самом деле, у меня есть свои любимые инструменты помимо Vue.js, и я часто получаю пользу от идей и сервисов, построенных с их помощью.
Цель этой книги заключается исключительно в "понимании Vue.js" и не затрагивает ранжирование или оценку других инструментов.
💡 Темы и структура этой онлайн-книги
Поскольку эта книга получилась довольно объемной, я установил этапы достижений и разделил ее на разные разделы.
Раздел "Минимальный пример"
Здесь Vue.js реализуется в своей наиболее базовой форме.
Хотя этот раздел охватывает минимальный набор функций, он будет иметь дело с
Virtual DOM, системой реактивности, компилятором и поддержкой SFC (однофайловых компонентов).
Однако эти реализации далеки от практичных и сильно упрощены.
Но для тех, кто хочет получить общее представление о Vue.js, этот раздел предлагает достаточное понимание.
Будучи вводным разделом, объяснения здесь более подробны, чем в других частях.
К концу этого раздела читатели должны чувствовать себя несколько комфортно при чтении официального исходного кода Vue.js. Функционально вы можете ожидать, что код будет примерно делать следующее...vue<script> import { reactive } from 'chibivue' export default { setup() { const state = reactive({ message: 'Hello, chibivue!', input: '' }) const changeMessage = () => { state.message += '!' } const handleInput = e => { state.input = e.target?.value ?? '' } return { state, changeMessage, handleInput } }, } </script> <template> <div class="container" style="text-align: center"> <h2>{{ state.message }}</h2> <img width="150px" src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/95/Vue.js_Logo_2.svg/1200px-Vue.js_Logo_2.svg.png" alt="Vue.js Logo" /> <p><b>chibivue</b> is the minimal Vue.js</p> <button @click="changeMessage">Добавить !</button> <br /> <br /> <div> Ввод: <input @input="handleInput" /> </div> <p>{{ state.input }}</p> </div> </template>
Раздел "Базовая система компонентов"
В предыдущем разделе "Минимальный пример" была реализована базовая система компонентов, но она была примитивной.
В этом разделе мы обогатим эту реализацию и создадим компонентную систему ближе к реальному фреймворку Vue.js.
Конкретно, мы рассмотрим регистрацию компонентов, slots (слоты), provide / inject, жизненный цикл и т.д.Раздел "Базовый компилятор шаблонов"
Как и в случае с системой компонентов, базовая система шаблонов (компилятор шаблонов и SFC) была реализована в "Минимальном примере", но была она крайне примитивной.
В этом разделе мы обогатим эту реализацию и реализуем более продвинутые функции,
такие как директивы (v-if / v-for), реализованные как преобразования компилятора, и поддержка компилятора для script setup.Раздел "Базовая система реактивности"
В "Минимальном примере" мы реализовали простейшую систему реактивности.
В этом разделе мы углубимся в реализацию системы реактивности Vue.js и реализуем более продвинутые функции,
в том числе вычисляемые свойства, watchEffect, ref и т.д.Раздел "Базовый Virtual DOM"
В "Минимальном примере" мы реализовали очень простой Virtual DOM, но это была чрезвычайно примитивная реализация.
В этом разделе мы создадим более продвинутый Virtual DOM для реализации эффективного рендеринга, включая разницу между рендерингами и патчингом.Дополнительный раздел
В этом разделе мы рассмотрим различные вещи, которые не вошли в основные разделы.
Например, реализация TypeScript, DevTools и т.д.