2016-12-17 1 views
0

Знаете ли вы, можно ли создавать интерактивные веб-страницы в Go? Например, с одной или несколькими кнопками или со списком, в котором обновляется страница с фильтруемыми данными в соответствии с выбором? Я пытался найти его, но не нашел ничего подходящего.Интерактивные веб-страницы в Go

Заранее спасибо.

+0

Вы должны использовать JavaScript, или язык transpile-к-JavaScript для создания интерактивных веб-страниц. TMK, Go не имеет никаких транспиляторов, чтобы превратить его в JS. –

+0

Спасибо за ваш ответ.Можно ли использовать GO для управления данными и JS для их отображения и взаимодействия с GO для получения новых данных, если это необходимо? – azekirel555

+0

Да, конечно, вы можете написать веб-сервер с Golang, который может обслуживать JSON и/или HTML для веб-клиента. Существует большой выбор между «серверными приложениями» и архитектурой SPA. Таким образом, у вас есть сервер, написанный в Голанге и веб-клиенте в JS. –

ответ

6

Браузеры не могут запускать код прямого доступа. Интерактивные веб-страницы на стороне клиента используют разные технологии, такие как HTML, Javascript и CSS.

Однако, это эффективный стек технологий, который использует вышеупомянутые языки на стороне клиента и делает все в Go на стороне сервера.

Это, как говорится, все еще есть некоторые рамки, которые позволяют вам писать все в Go, и они преобразуют ваш код Go в языки, понятные/поддерживаемые клиентской стороной, или они генерируют код для клиентской стороны, которые взаимодействуют с серверный код Go.

Для последнего есть Gowut (Go Web UI Toolkit) (раскрытие: Я являюсь автором). С Gowut вы можете писать все в Go (как на стороне клиента, так и на стороне сервера), а Gowut генерирует необходимый клиентский код «на лету», и он заботится о связи между сгенерированным кодом клиента и кодом сервера Go. Существует живая демонстрация Gowut, вы можете проверить ее и посмотреть, что здесь capabe: Gowut - Showcase of Features

Gowut создает полностью динамические веб-страницы, содержимое визуализируется и может меняться без перезагрузки страницы. И все же, все может быть сделано просто с помощью кода Go, но у вас есть возможность использовать код HTML/JS/CSS, чтобы оживить ситуацию - если у вас есть желание или необходимость сделать это.

Для первого есть GopherJS. GopherJS компилирует код Go для чистого кода Javascript, поэтому это не действительно веб-фреймворк, но вы можете написать код на стороне клиента в Go с этим. Вы по-прежнему должны заботиться о серверном коде и общении между ними.

В стандартной библиотеке также есть мощный движок шаблонов: html/template. Хотя шаблоны выполняются исключительно на стороне сервера, с помощью некоторого базового кода Javascript и вызовов AJAX (или веб-сайтов) вы можете сделать вашу клиентскую сторону динамичной и интерактивной. Для примера, чтобы эти вопросы и ответы:

Creating load more button in Golang with templates

Dynamically refresh a part of the template when a variable is updated golang

Referencing Go array in Javascript

+0

Спасибо за ваш ответ, я начал использовать Gowut. Не могли бы вы посоветовать мне, какую функцию использовать для хранения данных в двумерном массиве - например, с помощью Excel/Calc (я пытаюсь представить данные в такой структуре и обновлять ее в соответствии с тем, как я использую некоторые фильтры, которые я буду использовать добавить на веб-страницу)? Заранее спасибо. – azekirel555

+0

@ azekirel555 Для 2-мерного массива я бы использовал ['gwu.Table'] (https://godoc.org/github.com/icza/gowut/gwu#Table). – icza

+0

Большое спасибо, я собираюсь взглянуть на это. – azekirel555

0

Нет, вы не можете запрограммировать интерактивные веб-страницы в Go. Это происходит потому, что программы Go запускаются на сервере, а не в веб-браузере.

Чтобы сделать что-то интерактивное, вам необходимо написать программы для JavaScript, которые обмениваются с программой Go на сервере.

Программа Go каким-то образом связана с интерактивным веб-приложением, но интерактивность исходит из части JavaScript.

Смежные вопросы