Можно ли написать локальное веб-приложение, которому не нужен сервер? - PullRequest
7 голосов
/ 05 декабря 2011

Я хочу создать локальное приложение с пользовательским интерфейсом на основе браузера, а не с автономным графическим интерфейсом на основе MFC / Qt / и т. Д. Если я не хочу запускать веб-сервер на локальном компьютере, как я могу это сделать?реализовать динамические части моего приложения?Можно ли в браузере указать локальные сценарии, исполняемые файлы или библиотеки на компьютере?Могу ли я использовать локальную базу данных напрямую> Какие подводные камни существуют при таком подходе?

Ответы [ 3 ]

4 голосов
/ 05 декабря 2011

Да, но с ограничениями. Основным ограничением является то, что вы не можете делать какие-либо вещи CGI, потому что браузер откроет и отобразит ваш исходный код скрипта вместо того, чтобы выполнять их. Это имеет несколько последствий:

  1. Вы не можете подключиться к базе данных. Это затрудняет выполнение общих задач, таких как хранение состояний и пользовательских данных.
  2. Вы не можете установить тип контента. Это означает, что вы не можете делать какие-либо фантастические вещи XML, такие как обслуживание файлов SVG или использовать XML в XMLHttpRequest.
  3. Вы не можете создавать динамические изображения (с помощью ImageMagick или GD). Хотя с HTML5 вы можете сделать это с помощью canvas.
  4. Вы не можете читать или писать в файловую систему. Опять же, это ограничивает вашу способность сохранять данные. Но это можно сделать с правильными разрешениями пользователя (подробнее об этом ниже).

Но есть обходные пути. HTML5 позволяет хранить данные в локальном хранилище, но, очевидно, это не будет работать в старых браузерах. Вместо этого вы можете хранить данные в куки, но это имеет ограничения по размеру. Наконец вы можете сохранить в файл. Вы должны проинструктировать своих пользователей, чтобы они изменили настройки браузера, чтобы ваш скрипт мог это сделать, но это можно сделать. Одним из примеров этого является TiddlyWiki . Это отдельная личная вики в одном HTML-файле. Каждый раз, когда вы сохраняете новый контент, страница изменяется и сохраняет себя. Возможно, вы захотите посмотреть, как они делают это для вдохновения.

2 голосов
/ 05 декабря 2011

Я полагаю, что в этом сценарии единственными вариантами сценариев будут Javascript.(Или Java-апплеты или Flash, но я не думаю, что вы этого хотите)

Я бы посоветовал взглянуть на встроенный веб-набор QT.Вы можете использовать это для встраивания браузера в простое приложение QT и использовать его для большей части вашего пользовательского интерфейса, тогда у вас есть возможности C ++ / QT для вашего бэкэнда.QT может напрямую связать код C ++ с Javascript.

См. класс QWebFrame , особенно метод addToJavaScriptWindowObject и Qt WebKit Bridge .

1 голос
/ 05 декабря 2011

Если вы хотите чистый HTML-маршрут, HTML5 позволит вам создать локальную базу данных в браузере; Имея достаточный опыт написания кода на JavaScript, вы можете написать на нем целый сайт, который отображает все в JS, а не загружает HTML-файлы. Загружает один файл и отрисовывает все после этого, используя движок javascript.

Если это значимое приложение, и вы можете написать его таким образом, не сходя с ума, приветствую вас.

Если вы работаете в Windows, вы можете использовать читы и использовать Active x / vbscript - но если вы делаете это, почему бы не написать приложение .net. Без какого-либо компонента приложения веб-сервера браузер не сможет общаться с традиционным ядром базы данных.

...