Node.js + Chromium = node-webkit: ещё более перспективный вариант второго шага эволюции веборазработчика

Original author: Roger Wang
  • Translation
Предисловие от переводчика.  В постскриптуме к моей вчерашней блогозаписи я указал, что AppJS — это не единственное такое средство, которое позволяет создавать приложения с GUI (графическим интерфейсом пользователя) при помощи вебоподобных методов разработки на языках HTML, CSS и JavaScript с использованием движка Node.js. Естественной иллюстрацией к этому постскриптуму является нижеследующий перевод гитхабовской страницы проекта node-webkit. И сразу скажу: я предвижу заранее, что непредвзятый взгляд ваш сочтёт node-webkit ещё более удобным и развитым средством, чем AppJS.



Введение


node-webkit — среда для запуска приложений, основанная на Chromium и Node.js. При помощи node-webkit можно создавать традиционные графические приложения посредством HTML и JavaScript. Также node-webkit позволяет вызывать модули Node.js прямо из DOM и тем обеспечивает новый способ создания таких приложений и употребления веботехнологий в них.

node-webkit создан и разрабатывается в Интеловском Центре технологий с открытым исходным кодом (Intel Open Source Technology Center).

Введение в node-webkit (слайды).

Достоинства


  • Приложения создаются при помощи современных HTML5, CSS3, JS и WebGL.
     
  • Полная поддержка API Node.js и созданных другими разработчиками модулей.
     
  • Вызов API Node.js без потерь в производительности.
     
  • Лёгкость упаковки и распространения приложений.

Файлы для скачивания


Примечания к выпуску v0.2.6

Сборки версии v0.2.6:


Ищете более старые версии?

Демонстрационные приложения:


Руководство по быстрому началу работы


Создайте index.html:

<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
Мы используем Node.js версии <script>document.write(process.version)</script>.
</body>
</html>

Создайте package.json:

{
  "name": "nw-demo",
  "main": "index.html"
}

Упакуйте index.html и package.json в ZIP-архив, а затем переименуйте его в app.nw:

app.nw
|-- package.json
`-- index.html

Скачайте сборку node-webkit для вашей системы и используйте её для открытия файла app.nw:

$ ./nw app.nw

Примечание:  в Windows можно перетащить app.nw и кинуть на nw.exe, чтобы открылся.

Читайте дальнейшие сведения о написании, упаковке и запуске приложений:


Ещё больше сведений изложено в нашей вики.

Сообщество


В качестве списка рассылки мы используем node-webkit на Google Groups, подписывайтесь при помощи node-webkit+subscribe@googlegroups.com.

Лицензия


node-webkit распространяется по Лицензии MIT (см. прилагаемый файл LICENSE).



Послесловие переводчика.  Итак, вот список заметных достоинств node-webkit по сравнению с тем проектом AppJS, о котором я сообщил вчера:

  • Более непосредственный стиль обращения к API Node.js: в вышеизложенном примере node-webkit использует process.version, тогда как в AppJS пришлось бы использовать node.process.version.
     
  • AppJS не издаёт звук при помощи тега <audio>, тогда как node-webkit не имеет этой проблемы.
     
  • В node-webkit есть поддержка ZIP-упаковки приложений и даже пристыковывания их в хвост к файлу движка. AppJS не имеет (ещё) ничего подобного.
     
  • Документация node-webkit более или менее подробна (вики особенно). Документация AppJS почти совершенно отсутствует.
     
  • Манифест приложения node-webkit позволяет ограничить минимальную и максимальную ширину окна приложения. Средствами AppJS этого не достигнуть (по крайней мере, так просто).
     
  • node-webkit поддерживает значок и меню в системном лотке, а AppJS — (ещё) нет. То же самое можно сказать и о некоторых других ништяках (получение имён файлов, управление меню, доступ к буферу обмена).
     
  • Как сказано на Гитхабе, создание и разработка node-webkit идёт при некоторой поддержке Intel.
Share post

Similar posts

Comments 30

    +2
    Обязательно буду пробовать, спасибо за наводку.
      +2
      Уже попробовал, супер вещица)

      Долго пытался освоить GUI Qt, WX под Python. Но что-то было не то. Что то коробило меня. А тут все что угодно можно написать не беспокоясь о том под какой платформой сидит пользователь, какой браузер и так далее. Прелесть)

      Теперь можно будет спокойно писать десктопные приложения и не беспокоится о: кроссбраузерности || кроссплатформенности.
        0
        а AIR от Adobe не пробовали? Очень похоже на описанный выше продукт.
          +3
          К сожалению, «Adobe AIR for Linux is no longer supported». Можно пользоваться только старыми версиями, на которых не получается запустить приложения для новых.
            +1
            * не поддерживается на linux
              +1
              спасибо, не знала
          +3
          Это нереально круто для десктопной разработки: возможность очень дёшево (см.стоимость верстальщиков), довольно быстро и качественно делать приложения! С другой стороны, на текущий момент HTML5 API неполноценно в большом количестве вопросов (e.g. audio), и слишком избыточно в анимации. То есть, любое крупное приложение становится очень зависимо от тормознутости развития спецификации HTML и багов webkit'а, причём без особых шансов обойти это без патча исходников.
          • UFO just landed and posted this here
              +2
              Столкнулся с той-же проблемой, хотя убунта 11.04. Но ответ нашел быстро.

              sudo add-apt-repository ppa:ubuntu-toolchain-r/test
              sudo apt-get update
              sudo apt-get install libstdc++6

              Остальное под дебиан пофиксите сами думаю.
              0
              Я сразу решил, что это Вашу прошлую статью кто-то перевел)
                +4
                Спасибо. Это уже гораздо лучше, чем app-js.
                По крайней мере, моё WebGL-ное приложение на node-webkit совершенно не тормозит по сравнению с app-js.
                И радует, что само web-приложение и движок можно распространять отдельно.
                  +1
                  Для любителей JavaScript и HTML есть возможностьписать приложения используя Qt, даже в QtCreator уже готовый шаблон HTML + JS приложения есть…
                    +2
                    Уделил немного времени и написал под sublime плагин, который будет собирать и запускать проект на node-webkit без лишних телодвижений.

                    Собственно прошу github.com/Zerstoren/sublime-node-webkit-builder
                      0
                      Сам-то я не пользуюсь Sublime, но убеждён, что другие читатели окажутся Вам благодарны.
                        0
                        Другое дело, что, может быть, всякий раз собирать проект и не нужно.

                        Вы обратили внимание на то, что проект для node-webkit может лежать в некотором подкаталоге и запускаться из родительского каталога командою «nw имяПодкаталога», а не обязательно быть упакованным в архив .nw (переименованный из ZIP)?
                          0
                          (Я спрашиваю потому, что этого нет в демонстрационном примере, мною переведённом из гитхабного README, а есть только в вики, так что Вы могли ведь и не дочитать до соответствующего места.)
                            0
                            Можно конечно не указывать .nw, это я знаю, но ZipFile Python позволяет сразу писать zip архив с расширением .nw.
                            По этому я тут геморроя не испытал.
                          0
                          Можно ли создавать приложения, выглядящие как родные для данной OS?
                          Или эта система больше подходит для рисованных игрушек и проч.?
                            +1
                            Поидее для вебкита доступны родные системные цвета, которые можно использовать в дизайне своего приложения.
                            Мне вот больше интересно, можно ли это дело завернуть в бинарник.
                            +2
                            Он умеет делать бинарники!
                            # windows
                            copy /b nw.exe+app.nw app.exe
                            #linux
                            cat /pat/to/nw ./app.zip > app
                              0
                              Ну да. Но в вики сказано, что к ним всё равно надо nw.pak прилагать (а я подозреваю, что и все рядом лежащие DLL).
                              0
                              А как быть с базами данных?
                              Можно ли в локальном приложении использовать локальную же БД, которая бы жила в .nw (и, желательно, в .exe) и была бы транспортабельна вместе с приложением?
                                0
                                Есть в хромиуме SQL, NoSQL так что да, есть там БД.
                                  0
                                  Можете попробовать node-sqlite3 скомпилировать.
                                  0
                                  Опробовал на днях node-webkit, все очень здорово работает, локальные ресурсы не связаны ограничениями доступа (cross-origin), имеется доступ к localStorage и куча всего еще, но так же появилась и пара вопросов:
                                  — как установить иконки для исполняемого файла и для окна
                                  — как добавить некий прогресс бар пока запускается приложение или splash screen

                                  Если кто-то уже разобрался, было бы не плохо оставить тут комментарий на эту тему.
                                    0
                                    1) Пока еще никак, вроде фавиконка не пашет.
                                    2) Попробуйте открыть новое окно, кажись window.open, если у него будут бордюры, то никак. Можете написать на гитхаб разрабу. Может быть захотят сделать.
                                      0
                                      Официально объявлено, что со значками под Windows всё плохо. Средство для изменения значков исполняемого файла (и кучи всего другого) запланировано со временем выпустить.

                                      Единственное уведомление «Запускается…», которое мне удалось сделать — внутрь объекта в package.json добавить свойство window.title со значением, равным строке «Starting…». (Подробности про смысл свойств из package.json указаны в вики.) Другого покамест ничего нет.
                                        +1
                                        Понял, спасибо.
                                      0
                                      Ссылка на "Файловый менеджер" мертвая. Насколько понимаю, репозиторий переехал сюда.
                                        0

                                        Only users with full accounts can post comments. Log in, please.