Благодаря возросшей мощности фреймворков JavaScript, таких как YUI, JQuery и Prototype, и инструментов отладки, таких как Firebug, создание приложения полностью на JavaScript на стороне браузера выглядит отличным способом создания простых приложений, таких как головоломки и специализированные калькуляторы.
Есть ли у этого какие-либо недостатки, кроме раскрытия исходного кода? Как следует обращаться с хранением данных для таких программ?
Обновлено: да, Gears и файлы cookie могут использоваться для локального хранилища, но вы не можете легко получить доступ к файлам и другим объектам, которые уже есть у пользователя. Вы также не можете сохранить данные в файл для пользователя, не запустив некоторые функции браузера, такие как печать в PDF или сохранение страницы в виде файла.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Шестерни может предоставить вам необходимое постоянное хранилище данных на стороне клиента. Однако не существует очень хорошего способа не раскрывать свой исходный код. Вы можете запутать это, но это только немного помогает.
Я сделал такие простые приложения для таких вещей, как Решатель судоку.
Обратной стороной этого может быть то, что вы зависите от них, включив js. Я не уверен, что сейчас это имеет большое значение. Практически каждый браузер поддерживает js и по умолчанию включен.
Конечно, другим недостатком будет производительность. Вы снова во власти клиента, выполняющего всю интенсивную работу. Это также может быть не так уж важно и будет зависеть от типа приложения, которое вы создаете.
Я никогда не использовал Gears, но похоже, что попробовать стоит. План резервного копирования заключался бы в запуске некоторого серверного скрипта через ajax, который куда-то сбрасывает ваши данные.
Не совсем на стороне клиента, ну да ладно.
SproutCore - это полностью размещенная на JavaScript платформа приложений, заимствующая концепции, в частности, из Cocoa (например, KVO) и Ruby on Rails (например, использование генератора CLI для ваших моделей, представлений и контроллеров). Он включает в себя Prototype, но помимо этого создает множество вещей, таких как сложные элементы управления. Его демонстрация Фото, возможно, впечатляет (особенно в Safari 3.1).
Грег уже указал вам на Gears; Кроме того, HTML 5 будет иметь стандартизованные средства локального хранения. Safari 3.1 поставляется с реализацией, в которой у вас есть база данных SQLite для каждого сайта с максимальным размером, задаваемым пользователем, а также встроенный браузер базы данных с SQL-запросами. К сожалению, нам придется долго ждать широкой поддержки браузерами. До тех пор Gears действительно является альтернативой (но не для Safari… пока что!). Для более простого хранения, конечно, всегда есть файлы cookie.
Нигилогический (не мой сайт) многое делает с Javascript. У них даже есть несколько игры, которые они сделали на Javascript.
Я также видел аккуратную рогаликовую игру, созданную на Javascript. К сожалению, не могу вспомнить, как это называлось ...
Вы можете столкнуться с проблемами производительности, поскольку вы полностью зависите от клиентского интерпретатора Javascript. Gears был бы хорошим способом хранения данных, но я не думаю, что он так сильно проник на рынок. Вы можете просто использовать файлы cookie, если вас это не беспокоит.
Автономные игры в GWT:
Я написал несколько приложений на JS, включая электронную таблицу.
Достоинства:
Обратная сторона:
Итог: дерзайте. Я сделал.
В IE8 Developer Tools есть хороший отладчик javascript. Я знаю IE = PureEvil, но подумал, что укажу на это. К черту IE становится все лучше.
Другой вариант разработки простого рабочего стола, такого как приложения или игры на JavaScript, - Adobe AIR. Вы можете создать код своего приложения либо на HTML + JavaScript, либо на Flash / Flex, либо на их комбинации. Он имеет то преимущество, что он кроссплатформенный (фактически кроссплатформенный, Linux, OS X и Windows. Не только Windows и OS X).
Черт возьми, это может быть единственный раз в вашей карьере разработчика, когда вы можете написать веб-страницу и использовать ТОЛЬКО ОДИН браузер.
С июня 2011 года Adobe AIR больше не поддерживает Linux. blogs.adobe.com/open/2011/06/…
Мои RSS-каналы сослужили мне хорошую службу - я обнаружил, что Javascript roguelike!
Он называется Гробницы Аскирота.
Я здесь со ScottKoon, Adobe AIR великолепен. На самом деле я пока сделал только один действительно хороший (imho) виджет, но я сделал это с помощью jQuery и Prototype.js, которые оказались такими замечательными, потому что мне не нужно было изучать совершенно новую модель событий. Adobe AIR действительно хорош, объем памяти не так уж и плох, обновление до новой версии встроено в AIR, поэтому оно почти автоматическое, и, что самое главное, кроссплатформенное ... у них даже есть альфа-версия для Linux , но он уже неплохо работает на моем Eee.
С июня 2011 года Adobe AIR больше не поддерживает Linux. blogs.adobe.com/open/2011/06/…
Учитывая, что вы все равно собираетесь писать какой-то серверный код, имеет смысл сохранить на сервере хранилище для множества доменов (адресные книги, результаты в покере, конфигурация графического интерфейса и т. д.). войдет в Webkit или Gears, возможно, вы также сможете оставить его на своем сервере.
Хранение его на сервере дает двоякое преимущество:
Серверный код для обработки этого также может быть довольно тривиальным, особенно если он написан с учетом этой задачи, поэтому это не большая когнитивная нагрузка.
Если вы хотите написать автономное приложение JavaScript, посмотрите XULrunner. Это то, на чем построен Firefox, но он также построен так, что вы можете распространять его как среду выполнения приложения. Вы напишете часть интерфейса на JavaScript и будете использовать JavaScript для своего кода.
Что касается сохранения файлов из приложения javascript:
Мне очень нравятся возможности клиентских приложений. Во Flash 10 появилась возможность создавать файлы для сохранения прямо в браузере. Я подумал, что это супер круто, поэтому я создал компонент javascript + flash, чтобы обернуть функцию сохранения. Сейчас он работает только для создания текстовых файлов (vcard, ical, xml, html, css и т. д.)
Я собираюсь в ближайшее время добавить поддержку нетекстовых файлов, но это только начало.
Пойдите с qooxdoo. Недавно они реализовали 1.0, хотя большинство пользователей говорят, что он созрел для 1.0 по крайней мере две версии назад.
Я сравнил qooxdoo с YUI и ext, и я думаю, что qooxdoo - это путь для программистов - YUI не так отполирован, как qooxdoo, с точки зрения программиста, а ext имеет не очень дружелюбную модель лицензирования.
Некоторые из сильных сторон (для меня) qooxdoo:
В нем также есть средство запуска для модульных тестов, генератор и программа чтения документов API, средство ведения журнала и несколько полезных функций для отладки, сгруппированных в так называемый Inspector.
Единственный недостаток - нет готовых тем (что-то вроде скинов) для qooxdoo. Но создать собственную тему довольно просто.
Я работал в Palm, когда я спросил об этом, а что Palm представила в начале 2009 года? webOS, система, в которой все приложения были написаны на JavaScript. :)