Svelte — это популярная среда JavaScript для создания веб-приложений. Он известен своей простотой и производительностью, поскольку компилирует компоненты в обычный JavaScript во время сборки, что приводит к небольшим размерам пакетов и быстрому времени загрузки.
SvelteKit — это следующая эволюция Svelte, предлагающая полнофункциональную платформу веб-разработки, которая включает в себя рендеринг на стороне сервера, маршрутизацию и шлюз API. Он позволяет разработчикам создавать многофункциональные, производительные веб-приложения, используя знакомый синтаксис и соглашения Svelte.
В этом руководстве мы рассмотрим, как настроить новый проект SvelteKit и создать простое приложение CRUD (создание, чтение, обновление, удаление).
Настройка проекта SvelteKit
Для начала на вашем компьютере должны быть установлены Node.js и SvelteKit CLI (интерфейс командной строки). Если у вас еще нет Node.js, вы можете скачать его с официального сайта (https://nodejs.org/).
После установки Node.js вы можете установить интерфейс командной строки SvelteKit, выполнив следующую команду:
npm install -g sveltekit
Установив интерфейс командной строки SvelteKit, теперь вы можете создать новый проект SvelteKit, используя следующую команду:
sveltekit init
Это создаст новый каталог с необходимыми файлами и зависимостями для проекта SvelteKit.
Создание простого CRUD-приложения
Теперь, когда у нас настроен проект SvelteKit, давайте создадим простое CRUD-приложение. Мы создадим список элементов, которые можно добавлять, редактировать и удалять.
Во-первых, давайте создадим компонент для отображения списка элементов. Создайте файл с именем List.svelte
в каталоге src/routes
со следующим содержимым:
<script> let items = [ { id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }, { id: 3, name: 'Item 3' } ]; function removeItem(id) { items = items.filter(item => item.id !== id); } </script> <h1>Item List</h1> <ul> {#each items as item} <li> {item.name} <button on:click={() => removeItem(item.id)}>Delete</button> </li> {/each} </ul>
Этот компонент отображает список элементов и кнопку удаления для каждого элемента. Функция removeItem
удаляет элемент из списка на основе его id
.
Далее создадим компонент для добавления нового элемента в список. Создайте файл с именем AddItem.svelte
в каталоге src/routes
со следующим содержимым:
<script> let name = ''; function addItem() { // Add code to add the item to the list } </script> <h1>Add Item</h1> <label for="name">Name:</label> <input id="name" type="text" bind:value={name} /> <button on:click={addItem}>Add</button>
Чтобы завершить функциональность CRUD, нам нужно добавить код для фактического добавления элемента в список при вызове функции addItem
. Мы можем сделать это, отправив HTTP-запрос на внутренний сервер, который обрабатывает добавление элементов в базу данных.
Для создания внутреннего сервера мы можем использовать API-шлюз SvelteKit. Сначала создайте файл с именем items.js
в каталоге src/api
со следующим содержимым:
export async function create(request) { const { name } = request.body; // Add code to save the item to the database return { id: 123, name }; }
Эта функция обрабатывает запрос POST
на создание нового элемента. Он извлекает name
из тела запроса и сохраняет его в базе данных.
Далее нам нужно обновить функцию addItem
для отправки запроса POST
на внутренний сервер при нажатии кнопки. Замените функцию addItem
в AddItem.svelte
на следующую:
async function addItem() { const res = await fetch('/api/items', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name }) }); const item = await res.json(); // Add code to update the list of items with the new item }
Это отправляет запрос POST
в конечную точку /api/items
с name
нового элемента в теле запроса. Затем он обновляет список элементов новым элементом, возвращенным с сервера.
Наконец, нам нужно обновить компонент List
, чтобы отображать обновленный список элементов после добавления нового элемента. Мы можем сделать это, добавив функцию refresh
в компонент, который получает обновленный список элементов с сервера и обновляет переменную items
.
Обновите компонент List
следующим образом:
<script> let items = []; async function refresh() { const res = await fetch('/api/items'); items = await res.json(); } function removeItem(id) { items = items.filter(item => item.id !== id); } </script> <h1>Item List</h1> <button on:click={refresh}>Refresh</button> <ul> {#each items as item} <li> {item.name} <button on:click={() => removeItem(item.id)}>Delete</button> </li> {/each} </ul>
Выполнив эти шаги, вы должны получить работающее приложение CRUD, использующее SvelteKit. Вы можете попробовать добавлять, редактировать и удалять элементы из списка, чтобы увидеть функциональные возможности CRUD в действии.
SvelteKit — это мощная платформа для создания веб-приложений, а возможности рендеринга, маршрутизации и шлюза API на стороне сервера позволяют легко создавать многофункциональные и производительные приложения.