Создание автономных приложений на JavaScript

Благодаря возросшей мощности фреймворков JavaScript, таких как YUI, JQuery и Prototype, и инструментов отладки, таких как Firebug, создание приложения полностью на JavaScript на стороне браузера выглядит отличным способом создания простых приложений, таких как головоломки и специализированные калькуляторы.

Есть ли у этого какие-либо недостатки, кроме раскрытия исходного кода? Как следует обращаться с хранением данных для таких программ?

Изменить: да, Gears и файлы cookie могут использоваться для локального хранилища, но вы не можете легко получить доступ к файлам и другим объектам, которые уже есть у пользователя. Вы также не можете сохранить данные в файл для пользователя, не запустив некоторые функции браузера, такие как печать в PDF или сохранение страницы в виде файла.

Ответов (14)

Решение

Я написал несколько приложений на JS, включая электронную таблицу.

Достоинства:

  • отличный язык
  • короткий цикл выполнения кода и обзора
  • Манипуляции с DOM отлично подходят для дизайна пользовательского интерфейса
  • клиенты на каждом компьютере (и телефоне)

Обратная сторона:

  • различия между браузерами (особенно IE)
  • масштабируемость базы кода (без встроенной поддержки пространств имен и классов)
  • нет хороших отладчиков (особенно опять же для IE)
  • производительность (хотя большой прогресс был достигнут с FireFox и Safari)
  • Вам также необходимо написать код сервера.

Итог: дерзайте. Я сделал.

Обратной стороной этого может быть то, что вы зависите от них, включив js. Я не уверен, что сейчас это имеет большое значение. Практически каждый браузер поддерживает js и по умолчанию включен.

Конечно, другим недостатком будет производительность. Вы снова во власти клиента, выполняющего всю интенсивную работу. Это также может быть не так уж важно и будет зависеть от типа приложения, которое вы создаете.

Я никогда не использовал Gears, но похоже, что попробовать стоит. План резервного копирования заключался бы в запуске некоторого серверного скрипта через ajax, который куда-то сбрасывает ваши данные.

Не совсем на стороне клиента, ну да ладно.

Автономные игры в GWT:

  1. http://gpokr.com/
  2. http://kdice.com/

Мои RSS-каналы сослужили мне хорошую службу - я обнаружил, что Javascript roguelike!

Он называется Гробницы Асцирота .

Nihilogic (не мой сайт) многое делает с Javascript. У них даже есть несколько игр, которые они сделали на Javascript.

Я также видел аккуратную рогаликовую игру, созданную на Javascript. К сожалению, не могу вспомнить, как это называлось ...

Gears может предоставить вам необходимое постоянное хранилище данных на стороне клиента. Однако не существует очень хорошего способа не раскрывать свой исходный код. Вы можете запутать это, но это только немного помогает.

Я создал такие простые приложения для таких вещей, как решатель судоку .

Вы можете столкнуться с проблемами производительности, учитывая, что вы полностью зависите от клиентского интерпретатора Javascript. Gears был бы хорошим способом хранения данных, но я не думаю, что он так сильно проник на рынок. Вы можете просто использовать файлы cookie, если вас это не беспокоит.

Другой вариант разработки простых настольных приложений, таких как приложения или игры на JavaScript, - это Adobe AIR . Вы можете создать код своего приложения либо на HTML + JavaScript, либо на Flash / Flex, либо на их комбинации. Он имеет то преимущество, что он кроссплатформенный (фактически кроссплатформенный, Linux, OS X и Windows. Не только Windows и OS X).

Черт возьми, это может быть единственный раз в вашей карьере разработчика, когда вы можете написать веб-страницу и использовать ТОЛЬКО ОДИН браузер.

SproutCore - это полностью размещенная на JavaScript платформа приложений, заимствующая концепции, в частности, из Cocoa (например, KVO) и Ruby on Rails (например, использование генератора CLI для ваших моделей, представлений и контроллеров). Он включает в себя Prototype, но на его основе построено множество вещей, таких как сложные элементы управления. Его демонстрация фотографий, возможно, впечатляет (особенно в Safari 3.1).

Грег уже указал вам на Gears; Кроме того, HTML 5 будет иметь стандартизованные средства локального хранения. Safari 3.1 поставляется с реализацией, в которой у вас есть база данных SQLite для каждого сайта с максимальным размером, задаваемым пользователем, а также встроенный браузер базы данных с запросами SQL . К сожалению, нам придется долго ждать широкой поддержки браузерами. До тех пор Gears действительно является альтернативой (но не для Safari…  пока! ). Для более простого хранения, конечно, всегда есть файлы cookie.

Я здесь со ScottKoon, Adobe AIR великолепен. На самом деле я пока сделал только один действительно хороший (imho) виджет, но я сделал это с помощью jQuery и Prototype.js, которые оказались такими замечательными, потому что мне не нужно было изучать совершенно новую модель событий. Adobe AIR действительно хорош, объем памяти не так уж и плох, обновление до новой версии встроено в AIR, поэтому оно почти автоматическое, и, что самое главное, кроссплатформенное ... у них даже есть альфа-версия для Linux , но он уже неплохо работает на моем Eee.

Учитывая, что вы все равно собираетесь писать какой-то серверный код, имеет смысл сохранить на сервере хранилище для множества доменов (адресные книги, результаты в покере, конфигурация графического интерфейса и т. Д.). войдет в Webkit или Gears, возможно, вы также сможете оставить его на своем сервере.

Хранение его на сервере дает двоякое преимущество:

  1. Вы можете довольно просто интегрировать его как слой модели в типичную платформу MVC, и
  2. Пользователи получают единообразное представление без привязки к своему браузеру / ПК или в неидеальной среде (Интернет-кафе).

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

Если вы хотите написать автономное приложение JavaScript, посмотрите XULrunner . Это то, на чем построен Firefox, но он также построен так, что вы можете распространять его как среду выполнения приложения. Вы напишете часть интерфейса на JavaScript и будете использовать JavaScript для своего кода.

Что касается сохранения файлов из приложения javascript:

Мне очень нравятся возможности клиентских приложений. Во Flash 10 появилась возможность создавать файлы для сохранения прямо в браузере. Я подумал, что это супер круто, поэтому я создал компонент javascript + flash, чтобы обернуть функцию сохранения. Сейчас он работает только для создания текстовых файлов (vcard, ical, xml, html, css и т. Д.).

  1. Загрузить домашнюю страницу
  2. Исходный код и документация на Github
  3. Посмотрите, как это используется в Starter для jQuery

Я собираюсь в ближайшее время добавить поддержку нетекстовых файлов, но это только начало.

Пойдите с qooxdoo. Недавно они реализовали 1.0, хотя большинство пользователей говорят, что он созрел для 1.0 по крайней мере две версии назад.

Я сравнил qooxdoo с YUI и ext, и я думаю, что qooxdoo - это путь для программистов - YUI не так отполирован, как qooxdoo, с точки зрения программиста, а ext имеет не очень дружелюбную модель лицензирования.

Некоторые из сильных сторон (для меня) qooxdoo:

  • чрезвычайно чистый код
  • лучшая модель программирования OO, которую я видел среди фреймворков Javascript
  • чрезвычайно богатая библиотека виджетов пользовательского интерфейса

В нем также есть средство запуска для модульных тестов, генератор и программа чтения документов API, средство ведения журнала и несколько полезных функций для отладки, сгруппированных в так называемый Inspector.

Единственный недостаток - нет готовых тем (что-то вроде скинов) для qooxdoo. Но создать собственную тему довольно просто.