HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Рассказываю о своих впечатлениях после использования JS-фреймворка Svelte.</p>
1 <p>Рассказываю о своих впечатлениях после использования JS-фреймворка Svelte.</p>
2 <h2>Почему Svelte?</h2>
2 <h2>Почему Svelte?</h2>
3 <p>Знакомство с JavaScript-фреймворком Svelte началось с просьбы автоматизировать создание однотипных договоров. Фреймворк дружелюбен к новичкам и отлично подходил под задачу. Мне достаточно было создать форму и подставить данные из нее в нужные части договора, а реактивность и двустороннее связывание, которые обеспечавает Svelte, сильно упростили бы мне жизнь.</p>
3 <p>Знакомство с JavaScript-фреймворком Svelte началось с просьбы автоматизировать создание однотипных договоров. Фреймворк дружелюбен к новичкам и отлично подходил под задачу. Мне достаточно было создать форму и подставить данные из нее в нужные части договора, а реактивность и двустороннее связывание, которые обеспечавает Svelte, сильно упростили бы мне жизнь.</p>
4 <p>Отмечу, что Svelte - первый JS-фреймворк, который я решил попробовать.</p>
4 <p>Отмечу, что Svelte - первый JS-фреймворк, который я решил попробовать.</p>
5 <h2>Содержание</h2>
5 <h2>Содержание</h2>
6 <ul><li><a>Знакомство</a></li>
6 <ul><li><a>Знакомство</a></li>
7 <li><a>Настройка проекта</a></li>
7 <li><a>Настройка проекта</a></li>
8 <li><a>Использование Svelte</a></li>
8 <li><a>Использование Svelte</a></li>
9 <li><a>Расширение</a></li>
9 <li><a>Расширение</a></li>
10 <li><a>Немного про PDF</a></li>
10 <li><a>Немного про PDF</a></li>
11 <li><a>Итог</a></li>
11 <li><a>Итог</a></li>
12 </ul><h2>Знакомство</h2>
12 </ul><h2>Знакомство</h2>
13 <p>С чего начинается знакомство с любым фреймворком? Разумеется, с чтения документации. Поэтому первым делом я посетил<a>сайт</a>Svelte, где кроме документации есть учебник на русском языке.</p>
13 <p>С чего начинается знакомство с любым фреймворком? Разумеется, с чтения документации. Поэтому первым делом я посетил<a>сайт</a>Svelte, где кроме документации есть учебник на русском языке.</p>
14 <p>Изучив все материалы, я приступил к своему проекту.</p>
14 <p>Изучив все материалы, я приступил к своему проекту.</p>
15 <h2>Настройка проекта</h2>
15 <h2>Настройка проекта</h2>
16 <p>Первым делом я скачал официальный плагин для [WebStorm (<a>https://plugins.jetbrains.com/plugin/12375-svelte</a>), чтобы упростить работу с фреймворком в своей IDE. Затем настроил Webpack для работы со Svelte следующим образом:</p>
16 <p>Первым делом я скачал официальный плагин для [WebStorm (<a>https://plugins.jetbrains.com/plugin/12375-svelte</a>), чтобы упростить работу с фреймворком в своей IDE. Затем настроил Webpack для работы со Svelte следующим образом:</p>
17 <p>//npm i -D svelte-loader //Добавить в конфигурацию Webpack: rules: [{ test: /\.svelte$/, use: { loader: 'svelte-loader', }, }, //Другие правила ]</p>
17 <p>//npm i -D svelte-loader //Добавить в конфигурацию Webpack: rules: [{ test: /\.svelte$/, use: { loader: 'svelte-loader', }, }, //Другие правила ]</p>
18 <h2>Использование Svelte</h2>
18 <h2>Использование Svelte</h2>
19 <p>Основные компоненты фреймворка, которые пригодились в моем проекте:</p>
19 <p>Основные компоненты фреймворка, которые пригодились в моем проекте:</p>
20 <ul><li>Реактивность</li>
20 <ul><li>Реактивность</li>
21 <li>Двустороннее связывание</li>
21 <li>Двустороннее связывание</li>
22 <li>Хранилища</li>
22 <li>Хранилища</li>
23 <li>Система компонентов</li>
23 <li>Система компонентов</li>
24 </ul><p>Для данных, которые нужно добавлять в договор, я создал записываемые хранилища и использовал автоподписку: она помогает заносить данные из полей ввода с помощью связывания. Так же реактивно проверял условия с помощью $: if.</p>
24 </ul><p>Для данных, которые нужно добавлять в договор, я создал записываемые хранилища и использовал автоподписку: она помогает заносить данные из полей ввода с помощью связывания. Так же реактивно проверял условия с помощью $: if.</p>
25 <p>В результате получилась система, которая автоматически включает в договор данные, записанные пользователем. И все это без каких-либо промежуточных состояний и прослушивания событий: для реализации этой механики достаточно пары строчек кода.</p>
25 <p>В результате получилась система, которая автоматически включает в договор данные, записанные пользователем. И все это без каких-либо промежуточных состояний и прослушивания событий: для реализации этой механики достаточно пары строчек кода.</p>
26 <h2>Расширение</h2>
26 <h2>Расширение</h2>
27 <p>После завершения первой итерации проекта я подумал над тем, как упростить добавление новых шаблонов. В качестве решения я разбил те части программы, которые можно использовать повторно, на отдельные компоненты. В из число попавли поля ввода, форма и блок с договором.</p>
27 <p>После завершения первой итерации проекта я подумал над тем, как упростить добавление новых шаблонов. В качестве решения я разбил те части программы, которые можно использовать повторно, на отдельные компоненты. В из число попавли поля ввода, форма и блок с договором.</p>
28 <h2>Немного про PDF</h2>
28 <h2>Немного про PDF</h2>
29 <p>Для скачивания договоров я использовал<a>js-html2pdf</a>. Сложно назвать решение оптимальным: библиотека, на мой взгляд, не слишком удобна. В частности, в ней странно работает разрыв страниц, что доставило много неприятностей при работе.</p>
29 <p>Для скачивания договоров я использовал<a>js-html2pdf</a>. Сложно назвать решение оптимальным: библиотека, на мой взгляд, не слишком удобна. В частности, в ней странно работает разрыв страниц, что доставило много неприятностей при работе.</p>
30 <h2>Итог</h2>
30 <h2>Итог</h2>
31 <p>Svelte - простой и удобный фрейморк. Думаю, после завершения обучения я сделаю на нём несколько проектов для резюме.</p>
31 <p>Svelte - простой и удобный фрейморк. Думаю, после завершения обучения я сделаю на нём несколько проектов для резюме.</p>
32 <p>На этом у меня всё, итоговый результат (над которым ещё желательно поработать 😅) можете посмотреть<a>здесь</a>(<a>Web версия</a>).</p>
32 <p>На этом у меня всё, итоговый результат (над которым ещё желательно поработать 😅) можете посмотреть<a>здесь</a>(<a>Web версия</a>).</p>