Аннотация: приложения для Windows 8 могут разрабатываться и кодироваться с использованием HTML / CSS / JS, как и приложения PhoneGap. И с очень небольшими усилиями вы можете использовать свои навыки и имеющиеся ресурсы, чтобы в кратчайшие сроки создать изящное современное приложение в стиле Windows 8.
Разработка PhoneGap и Windows 8 — больше похоже, чем вы думаете
PhoneGap — интересное животное. Хотя наиболее важным аспектом является кроссплатформенность приложений, которые вы можете создавать с его помощью, также интересно то, что вы используете HTML и JavaScript для создания приложений. Так как это зависит от базовой технологии мобильного браузера на каждой платформе, есть (время от времени) несколько небольших недостатков. Но в целом, это действительно обеспечивает хороший уровень абстракции. Вы можете использовать свои веб-навыки в игре, и все, что вам нужно сделать, это изучить некоторые особенности создания и публикации приложения на конкретной платформе, разработать пользовательский интерфейс с использованием HTML и CSS, кодировать его с помощью стандартного JavaScript, изучить несколько новых API, которые предлагает PhoneGap, и все готово. На самом деле, для некоторых команд кроссплатформенная природа является вторичной.Они приступили к разработке PhoneGap, потому что это позволило их командам повторно использовать свои навыки веб-разработки, свои любимые библиотеки, инструменты дизайна и многое другое.
Что это значит в контексте разработки Windows 8? Один из подходов к созданию новых приложений для Windows 8 — это использование HTML / CSS / CS. Если вы еще этого не сделали, я предлагаю вам прочитать о создании приложений в стиле Metro для Windows 8 с помощью JavaScript . Вот результат для разработчиков PhoneGap:
- Ваши навыки, ресурсы и, возможно, большая часть вашего чистого HTML / CSS и JavaScript-кода будут работать только в приложении для Windows 8.
- Вы можете без особых усилий обновить внешний вид своих приложений, используя встроенные стили для базовых элементов HTML, таких как <h1> и <button>, а также расширенные элементы управления Windows 8, такие как панель приложений , средство выбора даты , флип-просмотр , и более.
- Ваш код, взаимодействующий с PhoneGap API (для обработки таких вещей, как доступ к файлам, датчики и события жизненного цикла приложения), можно обновить, чтобы использовать библиотеку WinJS для выполнения тех же действий, которые вы выполняли в PhoneGap.
- Сценарии, в которых вам приходилось писать плагины PhoneGap, могут быть решены путем поиска функциональности в обширной библиотеке WinJS или путем включения собственного кода в приложение JavaScript для Windows 8.
Эта серия постов в блоге посвящена третьему пункту выше — выяснению того, как делать вещи в разработке приложений для Windows 8, которые вы знаете, как делать в PhoneGap. Мы начнем с простого примера, а затем углубимся в последующие недели.
Простой пример PhoneGap
Вот очень простое приложение PhoneGap, которое использует API геолокации PhoneGap для получения информации о местоположении устройства. Независимо от того, на какой платформе выполняется этот код PhoneGap, это будет работать. Это потому, что вызов getCurrentPosition в строке 28 вызывает API базовой платформы. Но для вашего кода он представлен как функция JavaScript.
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<title>Cordova WP7</title>
<link rel="stylesheet" href="master.css" type="text/css" media="screen" title="no title" charset="utf-8"/>
HTML-код приложения PhoneGap немного отличается от HTML-кода, который вы написали бы для браузера. Давайте посмотрим на различия и их эквиваленты в приложениях JavaScript для Windows 8.
Элемент DOCTYPE
Поскольку мы работаем не в браузере по выбору пользователя, а в конкретной среде выполнения, мы можем использовать стандартный тип документа HTML5, который просто «HTML». Это идентично в Windows 8.
Метатег, управляющий «окном просмотра»
Поскольку в PhoneGap хост-контейнер по сути является веб-браузером, этот тег говорит о том, что он ведет себя не так, как веб-браузер. То есть не позволяйте пользователю панорамировать и сжимать для увеличения, как если бы это была веб- страница . Нам не нужно это для приложений Windows 8, потому что нет прокрутки, панорамирования или масштабирования, как на веб- странице, так как это приложение .
Ссылка на таблицу стилей
Одним из замечательных аспектов разработки веб-страницы является гибкость и мощь CSS. Поскольку приложение также имеет дизайн, CSS можно использовать для разработки интерфейса приложения таким же образом. Здесь «master.css» взят из шаблона для создания приложений Windows Phone с PhoneGap. Когда вы разрабатываете приложение PhoneGap, вы захотите придать ему разный вид на каждой платформе. А замена файлов CSS при создании окончательного приложения для каждой платформы — это один из способов сделать это. Используемый вами CSS и общий дизайн должны быть адаптированы к платформе.
Приложения JavaScript для Windows 8 используют CSS для разработки пользовательского интерфейса, как браузер или приложение PhoneGap. При переносе этого кода в Windows 8 эта строка нам не понадобится, поскольку для каждого элемента управления есть стиль Windows 8 по умолчанию. Вам нужно только указать стили, если вы хотите настроить внешний вид. Позже в этой статье я покажу это в действии.
Сценарий ссылки на «Кордову»
Когда ваш код работает в PhoneGap, все стандартные API JavaScript доступны для использования. Внедрив этот файл сценария, вы можете использовать API-интерфейсы PhoneGap для выполнения более «аппендицитных» задач, таких как работа с файловой системой, реагирование на события жизненного цикла приложения и многое другое.
В Windows 8 у нас есть нечто похожее в виде WinJS. Так что это просто вопрос изучения того, что в WinJS API, как вы делали, когда вы впервые изучили PhoneGap.
Код приложения
Остальная часть исходного кода — это код и разметка для вашего приложения. Существует таблица, в которой отображается информация о местоположении, как только мы ее получим, и асинхронный вызов в API геолокации PhoneGap для получения результата.
Windows 8 эквивалент
Теперь, когда мы рассмотрели анатомию базовой страницы приложения PhoneGap, давайте рассмотрим эквивалент в Windows 8. Когда вы настраиваете компьютер (физический или виртуальный) с помощью Windows 8 Release Preview и Visual Studio 2012 Release Candidate, вы уметь создавать приложения для Windows 8 с помощью JavaScript и HTML. Чтобы узнать, как это работает, ознакомьтесь с этим введением .
При создании нового проекта JavaScript для Windows 8 вы получите следующий базовый HTML-код:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>SimpleLocation</title>
<!-- WinJS references -->
<link href="//Microsoft.WinJS.1.0.RC/css/ui-dark.css" rel="stylesheet" />
<script src="//Microsoft.WinJS.1.0.RC/js/base.js"></script>
1:
2: <script src="//Microsoft.WinJS.1.0.RC/js/ui.js">
1: </script>
2:
3: <!-- SimpleLocation references -->
4: <link href="/css/default.css" rel="stylesheet" />
5: <script src="/js/default.js">
</script>
</head>
<body>
<p>Content goes here</p>
</body>
</html>
Очень похоже на PhoneGap, а? Там тот же DOCTYPE, некоторые ссылки CSS и JS на внутренние ресурсы, а некоторые на стили и код для проекта. Итак, давайте приведем фрагменты из примера PhoneGap выше и внесем необходимые изменения, чтобы запустить его на Windows 8!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>SimpleLocation</title>
<!-- WinJS references -->
<link href="//Microsoft.WinJS.1.0.RC/css/ui-dark.css" rel="stylesheet" />
<script src="//Microsoft.WinJS.1.0.RC/js/base.js"></script>
1:
2: <script src="//Microsoft.WinJS.1.0.RC/js/ui.js">
1: </script>
2:
3: <!-- SimpleLocation references -->
4: <link href="/css/default.css" rel="stylesheet" />
5: <script src="/js/default.js">
1: </script>
2:
3: <script type="text/javascript">
4:
5: var getLocation = function () {
6:
7: // Success callback
8:
9: var success = function (p) {
10:
11: document.getElementById('latitude').innerHTML = p.coordinate.latitude;
12: document.getElementById('longitude').innerHTML = p.coordinate.longitude;
13: document.getElementById('tdAlt').innerHTML = p.coordinate.altitude;
14: document.getElementById('tdAcc').innerHTML = p.coordinate.accuracy;
15: document.getElementById('tdAltAcc').innerHTML = p.coordinate.altitudeAccuracy;
16: document.getElementById('tdHeading').innerHTML = p.coordinate.heading;
17: document.getElementById('tdSpeed').innerHTML = p.coordinate.speed;
18:
19: setLocationStatus("Done");
20: };
21:
22: // Fail callback
23:
24: var fail = function (e) {
25:
26: //setLocationStatus("Error: " + e.code);
27: setLocationStatus("Error: " + e.message);
28: };
29:
30:
31:
32: // Get location
33:
34: //navigator.geolocation.getCurrentPosition(success, fail, { enableHighAccuracy: true }); //, {timeout: 10000});
35:
36: var geolocator = Windows.Devices.Geolocation.Geolocator();
37: geolocator.desiredAccuracy = Windows.Devices.Geolocation.PositionAccuracy.high; //or default
38: geolocator.getGeopositionAsync().then(success, fail);
39:
40:
41: setLocationStatus("Retrieving location...");
42:
43:
44:
45: };
46:
47: /**
48:
49: * Set location status
50:
51: */
52:
53: var setLocationStatus = function (status) {
54:
55: document.getElementById('location_status').innerHTML = status;
56:
57: };
58:
59:
</script>
</head>
<body>
<h1>Location</h1>
<div id="info">
<b>Status:</b> <span id="location_status">Stopped</span>
<table>
<tr><td><b>Latitude:</b></td><td id="latitude"> </td></tr>
<tr><td><b>Longitude:</b></td><td id="longitude"> </td></tr>
<tr><td><b>Altitude:</b></td><td id="tdAlt"> </td></tr>
<tr><td><b>Accuracy:</b></td><td id="tdAcc"> </td></tr>
<tr><td><b>Altitude Accuracy:</b></td><td id="tdAltAcc"> </td></tr>
<tr><td><b>Heading:</b></td><td id="tdHeading"> </td></tr>
<tr><td><b>Speed:</b></td><td id="tdSpeed"> </td></tr>
</table>
</div>
<h2>Action</h2>
<button onclick="getLocation();">Get Location</button>
</body>
</html>
HTML-код практически не изменился, за исключением замены специфичного для приложения PhoneGap «master.css» на встроенный в Windows 8, который называется «ui-dark». И да, есть «ui-light», если вы хотите, чтобы у вашего приложения был светлый фон. Код немного отличается, потому что мы используем синтаксис .then объекта WinJS Promise для асинхронного выполнения задач. Параметр успеха стал координатой, а не координатами (но обратите внимание, что свойства имеют одно и то же имя!).
Ниже у меня есть несколько снимков экрана приложения PhoneGap, запущенного в эмуляторе Windows Phone, и приложения Windows 8 JavaScript.
Вывод
Когда вы начали использовать PhoneGap, вам пришлось проектировать для другой среды рендеринга (приложения) вместо браузера. И вам пришлось изучать новый набор API. Но вы все еще использовали свои навыки HTML / CSS / JS при создании приложений для браузера. И так же с Windows 8 HTML / JS разработки. В следующих статьях я расскажу о многих аспектах JavaScript-приложений для Windows 8 с точки зрения разработчиков PhoneGap.
У разработчика Windows 8 есть все основания для волнения. Имеется более 650 миллионов лицензий на Windows 7, впечатляющее новое оборудование от производителей, удобный для разработчиков магазин с отличным подходом к распределению доходов и множество ресурсов (онлайн и локальных), честно говоря, разработчиков PhoneGap, которые не ориентированы на Windows 8 просто скучаю по лодке.
Не забывайте, что у нас есть отличная программа, которая поможет вам перейти от идеи к приложению Windows 8 с нашей программой 30 to Launch, входящей в состав Generation App . Зарегистрироваться Сегодня!



