Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Даунсайд:

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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

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

Не полностью клиентская сторона, но хорошо.

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

Я сделал такие простые приложения, как это, например, решатель Sudoku.

Ответ 8

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

Ответ 10

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

Ответ 11

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

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

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

Ответ 12

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

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

Ответ 13

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

Преимущество сохранения на вашем сервере в два раза:

  • Вы можете интегрировать его довольно просто как слой модели в типичной структуре MVC и
  • Пользователи получают согласованное представление, не привязанное к своему браузеру/ПК или в среде, отличной от идеальной (Internet Cafés).

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

Ответ 14

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

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

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

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

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

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