Сегодня мы рады объявить о раннем релизе Ionic 1.2. В него вошло более чем 100 исправлений, тонна подтвержденных пул реквестов и несколько новых восхитительных возможностей, о которых я скоро расскажу. Данный релиз так же является началом нашего перехода на Ionic нового поколения. Мы ищем повощь в тестировании этого релиза перед тем, как сделать его доступным для каждого в наших стартерах и шаблонах на следующей неделе (вам нужно будет вручную скачать сборку или обновиться через npm/bower).

Я действительно с нетерпением ждал момента, чтобы написать этот пост, по многим причинам. Не в последнюю очередь потому, что мне кажется, прошла вечность с момент мажорного релиза Ionic 1. Хочу извиниться за отсутствие коммуникации и улучшений для Ionic 1 в последнее время. Мы были так взволнованы Ionic 2 и проблемами, которые он будет решать для каждого из вас, что мы пренебрегали улучшением нашего основного дохода. Вы говорили нам, что любите Ionic 1 и хотите, чтобы он был лучше, поэтому сегодня мы рады дать вам то, чего вы хотели. Считайте это ранним подарком к новому году! 

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

Нативный Скроллинг

По умолчанию Ionic 1.2 будет использовать нативный скроллинг на всех платформах. Когда мы впервые собрали Ionic, браузерный скроллинг вел себя довольно глючно и, чтобы иметь возможности, которые мы привыкли ожидать от мобильных приложений (такие как потянуть для обновления и виртуальный скроллинг) мы решили, что нам нужен полный контроль над скролом области просмотра, поэтому мы использовали технику JS скроллинга. Как правило, это хорошо работало на iOS, но плохо на Android.

Несколько месяцев назад мы выпустили новую верию Ionic со многими родными функциями причастными к скроллингу и предназначенными для работы с современным переполняющим скроллингом на новых устройствах и браузерах (включая последние Web View на Android и Crosswalk). Сегодня мы делаем следующий шаг и включаем поддержку нативного скроллинга по умолчанию.

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

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

Чтобы использовать Javascript скроллинг, добавьте <ion-content overflow-scroll="false">. Примечание: collection-repeat все еще использует Javascript скроллинг, который будет заменен в 1.3.

Новый Slide Box

Наиболее часто запрашиваемым улучшение в Ionic был компонент Slide Box для UI, который позволяет пользователям свайпаться между набором слайдов.

Сегодня мы выпускаем новый Slide Box основанный на потрясающем виджете Swiper. Это, безусловно, многофункциональный и широко используемый слайдер, и не удивительно, что многие пользователи Ionic просили нас поддерживать его официально. Мы вас услышали, и с Ionic 2 придет новый слайдер и разметка, в чем скоро вы сможете убедиться сами!

В версии 1.2, мы все еще поддерживаем старый слайдер, но он помечен как устаревший и будет удален в будущих релизах.

Чтобы попробовать новый слайдер, используйте <ion-slides> тэг:

<ion-slides options="options" slider="slider">
  <ion-slide-page>
  </ion-slide-page>
</ion-slides>

Аргумент options передается напрямую в Swiper и поддерживает опции официального API. Установите $scope.$watch в slider, чтобы получить полный доступ к объекту для взаимодействия с его внутренним API.

Windows 10

Ionic 1.2 стал первым релизом, поддерживающим новую платформу. Сегодня, Ionic 1.2 поддерживает Windows 10 и Edge, которые поставляются с новой Windows Phone 10 платформой.

Для многих это, вероятно, не то обновления, которое вы ждали для Windows Phone 8, но мы просто не можем добиться хорошей работы Ionic приложений на этой платформе, чтобы официально ее поддерживать. Со всеми этими изменениями и обновлениями для Windows/Edge семейства за последние несколько месяцев, появился смысл просто подождать и посмотреть, что из этого получится.

Это функциональный релиз, чтобы убедиться, что существующие Ionic приложения запускаются на Windows 10, но последующие релизы увидят официальное обновление дизайна, направленные на соответствие с платформой.

Мобильный Веб

Ionic 1.2 стал первым релизом, в котором мы настоятельно рекомендуем Ionic для тех, кто собирается создать мобильный веб-сайт (а не только приложение для магазина). В последнее время мобильный веб стал центром внимания компании Google, которая меняет алгоритм выдачи сайтов, использующих промежуточные рекламные вставки. Это такой вид рекламы, который вы видите на мобильном сайте, когда вам предлагаеся скачать нативное мобильное приложение, вместо того, чтобы улучшить пользовательский опыт на мобильной версии сайта. Такие веб-сайты, будут наказываться.

Удивительно, как мобильный веб снова возвращается в моду. Я горжусь тем, что Ionic один из крупных игроков на этом рынке, которые активно поддерживает не только нативные приложения (что было бы шагом назазд), но и мобильные веб-сайты из коробки.

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

Мы увлеченно сосредоточены целиком на открытой веб платформе и продолжим поддержить использование Ionic и для приложений для магазина и для мобильного веба.

Form Inputs

В Ionic 1.2 мы больше не поддерживаем использование тэга <label> нигде в приложении. К сожалению, работать <label> сложно и он глючно ведет себя в большинстве браузеров, особенно при использовании нативного скроллинга.

Чтобы сделать работу легче и обеспечить вашему приложению ожидаемое поведение, мы будем двигаеться к новой директиве <ion-input>, которая так же является переходом к Ionic 2 (давайте посмотрим, что я тут делаю?):

<ion-input class="item item-input">
  <i class="icon ion-person"></i>
  <ion-label>Имя пользователя</ion-label>
  <input type="text">
</ion-input>

Обратите внимание, что <ion-label> теперь заменяет <span class="input-label"> и включает в себя полную поддержку ARIA доступности.

Radio и Checkbox

Мы убираем поддержку голой версии HTML и CSS для Radio и Checkbox. Вместо этого вы должны использовать директивы.

Например, вместо использования radio так:

<div class="item item-radio">
  <input type="radio" name="group" value="go" checked="checked">
  <div class="item-content">
    Погнали
  </div>
  <i class="radio-icon icon ion-checkmark"></i>
</div>

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

<ion-radio ng-model="choice" ng-value="'A'">Выберите A</ion-radio>
<ion-checkbox ng-model="test" ng-checked="test" ng-disabled="test">Отключенная директива</ion-checkbox>

Таким же образом эти компоненты работают в Ionic 2, поэтому вам будет проще осуществить переход, когда v2 увидит свет.

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

Cordova Help

Одна из наиболее частых проблем, с которой сталкиваются разработчики Ionic и Cordova это отсутствие вызова Platform.ready() или низкоуровневого события deviceready в их приложении. Как правило, эта проблема возникает, потому что один или более плагинов находятся в несогласованном состоянии.

Решением в большинстве случаев становится удалить эти плагины с помощью cordova plugin rm и добавить их снова, или можно удалить платформы, а затем добавить их обратно.

Чтобы помочь поиск момента, когда событие готовности устройства не срабатывает, мы теперь отслеживаем этот момент и оповещаем вас предупреждением в консоли. Это начало намного большей интеграции с плагинами Cordova, над которыми мы работаем для релизов 1.3 и Ionic 2.

ngCordova

Ionic 1.2 не меняет ngCordova, нашу библиотеку-компаньона для доступа к полной нативной мощи устройства через простые Angular 1 сервисы. Однако, мы работаем над новой библиотекой Ionic Native, которая решает набор проблем с ngCordova. А именно, обертки для этих плагинов со временем устареют и станут дополнительным уровнем над самими плагинами, который требует поддержки и тесно связан с Angular 1.

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

Ionic Native следует куда более простому подходу, оборачивая API плагина, а так же предоставляя TypeScript над существующими плагинами. Это означает, что вам надо всего лишь создать заглушку для своего плагина, скажем Camera, а Ionic Native правильно обернет публичный API в promise-ы, а поддержка observable-ов может быть использована любым, кто разрабатывает Cordova приложение, независимо от того, выберут ли они Ionic, Angular 1, Angular 2 или вообще другой фреймворк.

Для тех, кто испльзует ES6+ и TypeScript, который будет стандартом для Ionic 2, ваши плагины экспортируются как сервисы, которые вы можете использовать так же просто, как и оригинальный плагин. Добавим, что TypeScript определения позволят вам иметь потрясающий автокомплит для нативных плагинов, если будете использовать совместимую IDE, как VS Code или Atom.

Для тех, кто использует Ionic 1 и Angular 1, мы экспортируем сервисы с почти идентичные именами, как в ngCordova (типа $cordovaCamera), поэтому переход с ngCordova будет простым.

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

Мы так же продолжаем документировать и показывать примеры использования тех интересных плагинов, которые так привлекали в ngCordova. И, если вы уже сегодня используете ngCordova, будущий переход на Ionic Native должен стать простой заменой тэга script, поэтому пока оставьте все как есть.

Ionic View

Мы получили сообщения о проблемах и отсутствующих возможностей в Ionic View. Мы работаем над новым релизом, который будет готов где-то через несколько недель, для Android и iOS. В нем вы найдете намного больше нативных плагинов для работы в вашем приложении.

WKWebView

Сегодня команда Cordova анонсировала предварительную поддержку WKWebView в Cordova. Этот новый Web View поставляется с более полным javascript движком и мболее современной поддержкой Web API. NSHipster написал отличный пост об отличиях с UIWebView на iOS, поэтому обязательно прочитайте, если вам интересно.

WKWebView и Cordova/Ionic еще довольно сыры. У нас есть руководство для тестирования этого релиза и мы были бы рады услышить фидбэк о том, как он работает для вас. Это будущее для web views на iOS, поэтому однажды мы включим WKWebView по умолчанию, но до тех пор нам нужно полностью понять его влияние на Ionic и Cordova приложения.

В ожидании Ionic 2

Как мы знаем близится альфа и бета Ionic 2, а так же стабильный релиз в 2016 и мы видим массу возможностей рассказать вам о том, как обновить ваши Ionic 1 приложения для Ionic 2 и помочь сделать переход менее страшным.

В 1.2 мы начинаем приводить к одному виду имя директив, используемых в v2 для v1. Например, ion-inpution-slidesion-label и т.д. являются новыми директивами в 1.2, которые ссылаюст на v2 компоненты. Это круто, потому что означает меньшее колиество изменений в вашиъ шаблонах для перехода на v2.

Наш сторонник разработчик Mike Hartington начал серию статей добавление TypeScript в ваши Ionic 1 приложения. Это отличный способ "окунуть ваши пальцы" в мир, в котором живут Ionic и Angular 2.

Мы так же собираемся начать адаптацию проблем Ionic 1 для этапа v2. Многие проблемы, которые испытавают люди в Ionic 1, особенно с навигацией, будут решены в v2. Мы твердно верим, что разработчики ionic обновятся до v2 и заметят ощутимое увеличение пользовательского опыта и производительности. v2 не будет отдельным проектом навсегда, поэтому мы начинаем процесс интеграции проблем и кода из v1 в будущий мир v2.

Заключение

Ionic 1.2 несет в себе кучу изменений, исправлений и улучшений. Ознакомьтесь с ПОЛНЫМ СПИСКОМ, чтобы посмотреть, расправились ли мы с вашим любимчиком  ( (прим. пер.: явный сарказм. Имеется в виду баг, с которым вы уже давно боритесь и он стал вам привычен, как питомец).

От всей нашей команды Ionic мы хотим сказать вам спасибо за вашу продолжительную поддержку. Мы невероятно усердно работали "за кулисами", чтобы убедиться, что открытая веб платформа, которую мы все использовали десятилетиями, является первоклассным мобильным гражданином. Ionic 1.2 помогает нам двигаться в этом направлении и Ionic 2 возносит это на совершенно новый уровень.

Мы так рады срывать покровы с крупных объявлений в ближайшие месяцы, поэтому следите за обновлениями!


Оригинал статьи: http://blog.ionic.io/announcing-ionic-1-2/