Создание веб-сайта с использованием Golang и Svelte.js вместе
Иногда нам необходимо использовать динамические или одиночные страницы на наших веб-сайтах. Для этого мы можем разработать реактивные инструменты программирования javascript (или фреймворки) и т. д.
В этом посте я покажу вам, как использовать Svelte.js
через наш сервер, написанный на Go.
В этом примере я предпочел пакет gofiber
как пакет веб-сервера.
Давайте начнем!
Создание базового веб-сервера Gofiber
Структура проекта для стороны Go будет такой, как показано ниже. Во-первых, нам нужно запустить файл инициализации.
Во-первых, мы должны инициализировать файл go.mod
.
В качестве второго шага мы можем создать файл main.go
следующим образом
package main
import (
"github.com/gofiber/fiber/v2"
)
func main() {
app := fiber.New()
app.Static("/public","./public")
app.Get("/", mainPage)
app.Listen(":3000")
}
func mainPage(c *fiber.Ctx) error {
//Эта функция скоро станет другой
return c.SendString("Hellö")
}
Мы изменим сторону Go после создания проекта Svelte.
Давайте создадим простой проект Svelte поверх этого проекта Go.
Создание базового проекта Svelte
Сюда,
npx degit sveltejs/template . --force
Мы используем флаг --force
, потому что эта папка проекта не пуста.
После,
npm install
для установки всех зависимостей.
Для тестирования мы можем запустить команду npm run dev
.
Если он работает, мы можем перейти к следующему шагу.
Таким образом, мы заполнили папку * public несколькими файлами.
Для использования Svelte с Go нам нужно изменить некоторые настройки на стороне Svelte.
Шаг 1
rollup.config.js
...
svelte({
compilerOptions: {
// включить проверки во время выполнения, когда они не находятся в рабочей среде
dev: !production,
customElement: true,
}
}),
...
Нам нужно добавить строку customElement: true,
.
Это дополнение помогает отделить элемент от базового проекта.
Таким образом, мы можем добавить компонент, используя имя элемента, как <App/>
в наших шаблонах Go.
Шаг 2
Редактирование файла ./src/main.js
.
Этот файл будет выглядеть, как показано ниже.
import App from './App.svelte';
Мы будем использовать только строку import
.
В этом коде мы импортировали компонент как приложение, но это имя не важно. Прежде всего, мы укажем тег компонента из файла компонента.
Шаг 3
Редактирование ./src/App.svelte
<script>
// В этом примере он может быть пустым
</script>
<svelte:options tag="my-app"/>
<p>My App</p>
<style>
/* Это может быть пустым */
</style>
С помощью этих процессов мы можем использовать компонент приложения как тег <my-app/>
.
Мы полная на стороне Svelte.js
. Теперь мы можем перейти на сторону Golang.
Прежде всего, мы собираемся определить движок рендеринга шаблонов.
Отредактируйте файл main.go
, как показано ниже.
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/template/html"
)
func main() {
//механизм рендеринга шаблонов
engine := html.New("./templates", ".html")
app := fiber.New(fiber.Config{
Views: engine, //установить в качестве движка рендеринга
})
app.Static("/public", "./public")
app.Get("/", mainPage)
app.Listen(":3000")
}
Не забывайте запускать команду go mod tidy
:)
Теперь мы собираемся изменить функцию mainpage
, как показано ниже.
func mainPage(c *fiber.Ctx) error {
return c.Render("mainpage", nil)
}
и изменить ./templates/mainpage.html
как показано ниже.
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>My Page</title>
<link rel='stylesheet' href='/public/global.css'>
<script defer src='/public/build/bundle.js'></script>
</head>
<body>
<my-app/>
</body>
</html>
Мы можем назвать компонент App
как my-app
.
Последний шаг
Мы можем запустить приложение с помощью этих команд.npm run build
строит связанный файл js
.go run .
запускает веб-сервер.
Подсказки
Мы можем запустить сервер простым способом, создав makefile
.
Создайте makefile
в каталоге проекта.
Сюда,
run:
npm run build
go run .
и с терминала запустите команду make run
.