Недавно прошёл курс молодого бойца по веб-вёрстке. Хочу закрепить успех и сверстать какой-нибудь веб-интерфейс для своей программы. В связи с этим встал вопрос - а как, собственно, это делается? Не в одном же проекте с программой? А если в разных, то как потом их связать?
Вижу одно простое решение. Создать новый проект для веб-интерфейса, а потом копировать файлы с версткой в какую-нибудь папку рядом с ехе-шником программы, и выдавать браузеру эту папку при помощи сервера.
Но проблема в том, что в вижуалке нет шаблона проекта для веб-страниц
Обычно никак потому что мало кому надо делать веб-интерфейс для .ехе )) Как минимум потому что на серверах обычно линукс.
А так где что лежит не имеет значения, добавить путь в PATH переменную ОС или прописать путь в каком-нибудь конфиге.
А чего там шаблонить? Просто создать .html файл.
Там есть шаблоны для ASP .NET и т.п. А что-то более простое и нестандартное сложно угадать кому как надо, в вебе 100500 вариантов как делать всё. Наверно есть сторонние шаблоны для разных задач (Webpack, …) в расширениях и т.п.
Не понял, какая связь? Какая разница, линукс или не линукс?
Да это понятно, что путь какой хочешь можно задать. Я про другое немного.
Это тоже понятно (видимо, самое простое решение). Но ведь в вижуалке не будет подсветки HTML / CSS синтаксиса и автодописывания (как в VS code и шторме) Или будет?
Или просто папку с вёрсткой параллельно в VS code держать открытой и там редактировать
Смотря для чего интерфейс нужен, если у пользователя доступ только к нему (сервер делает что-то с .ехе у себя), то тогда линуксовый сервер не запустит .ехе ) Ну и обычно удобнее тогда переделать программу в библиотеку и т.п.
А если оба на десктопе, то такое мало кто делает, как и в целом десктопное ПО.
Должно быть, может быть для веба надо поставить галочку при установке студии.
Я уже смотрел, но там чёт слишком запутано. Не могу уловить суть В исходниках есть папка webui, а в релизе её нет. Не понятно, откуда он выдаёт файлы веб-интерфейса.
Наверное, стоит посмотреть ранние коммиты.
не совсем понял, при чём тут .exe Такую программу можно легко и под линукс на QT написать, наверное
Ну вот хотя-бы самый тупой пример. Ставим в качестве рута какую-нибудь папку, например D:\SharedFiles\. Потом в браузере заходим на 127.0.0.1:5555 и сервер выдаёт страницу со списком файлов в этой папке. Ну или страницу с текущем временем на сервере. Пока не важно, с чем именно.
Да это понятно. Сервер может выдавать что угодно на любой запрос.
Точно. Забыл, что можно выдавать из ресурсов.
Вот этого не знал На QT не пишу
Ну сервер ведь это программа, разве нет?
Я не собираюсь писать бэкэнд
Я хочу написать минимальный веб-интерфейс, который будет как-то взаимодействовать с программой. Например, нажимаем на кнопку и получаем от программы что-нибудь в ответ - например, текущее время.
Или чтобы программа по какому-нибудь событию сама что-то выводила на страницу (если хотя-бы один клиент подключен).
Как это делается?
Всмысле нельзя?
В uTorrent / qBittorrent через веб-интерфейс ведь можно запускать/останавливать/удалять раздачи. Редактировать трекеры, группы. Добавлять torrent-файлы. И даже менять некоторые настройки самого uTorrentа / qBittorrentа.
Естественно, функционал ограничен по причинам безопасности. Но почему “нельзя”-то? Как тогда это происходит, если нельзя?
Я, собственно, это и имел ввиду. Возможно, вопрос не совсем правильно сформулировал Мне казалось, что если речь идёт про веб-интерфейс, априори должно быть понятно, что имеется ввиду Ладно, попробую ещё раз
Пишем программу, в которой запускаем сокет на прослушивание (ака сервер). Где-нибудь в какой-нибудь папке верстаем веб-страницу с кнопкой. Потом из браузера заходим на 127.0.0.1:5555 и сервер выдаёт содержимое папки с вёрсткой (собственно, сам веб-интерфейс). Что должна послать кнопка, чтобы обратиться к серверу на “той” стороне?
Если я пошлю запрос GET http://127.0.0.1:5555/api/blabla, я ведь обращусь к тому “самому себе”, откуда зашел клиент То есть, если клиент и сервер будут находиться на разных компах, то такой запрос не сработает, правильно?
Думаю, это не обязательно. Можно написать сервер так, чтобы клиенты просто подключались и слушали сервер. А он при возникновении нужных событий будет слать клиентам сообщения.
А страница отдельно от сервера или что? В случае с торрентами это ж просто один сервер, который и страницы отдает, и команды выполняет. На него можно зайти и по 127.0.0.1, и по другим адресам (IP компа-сервера, …). На страницах (в формах, скриптах, ссылках) использовать относительные адреса типа /delete.