Создание автономных приложений на JavaScript - PullRequest
20 голосов
/ 18 августа 2008

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

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

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

Ответы [ 14 ]

16 голосов
/ 19 августа 2008

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

Потенциал роста:

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

Даунсайд:

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

Итог: пойти на это. Я сделал.

7 голосов
/ 19 августа 2008

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

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

5 голосов
/ 19 августа 2008

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

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

2 голосов
/ 28 октября 2008

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

2 голосов
/ 19 августа 2008

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

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

2 голосов
/ 19 августа 2008

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

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

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

Не полностью на стороне клиента, ну да ладно.

1 голос
/ 21 ноября 2009

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

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

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

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

1 голос
/ 02 сентября 2008

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

1 голос
/ 19 августа 2008

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

  1. http://gpokr.com/
  2. http://kdice.com/
1 голос
/ 19 августа 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...