Dart в действии

ПредисловиеВступлениеБлагодарностиОб этой книгеОб иллюстрации на обложке ВВЕДЕНИЕ В DART Здравствуй, Dart Что такое Dart? Знакомый синтаксис помогает в освоении языка Архитектура одностраничного приложения Первый взгляд на язык Dart Строковая интерполяция Факультативные типы в действии Традиционная структура на основе классов Определение подразумеваемого интерфейса Фабричные конструкторы для предоставления реализации по умолчанию Библиотеки и область видимости Функции как полноценные объекты Параллелизм с помощью изоляторов Веб-программирование на языке Dart dartihtml: удобная библиотека для работы с моделью DOM браузера Dart и HTML5 Инструментальная экосистема Dart Редактор Dart Виртуальная машина Dart Dartium dart2js: конвертер Dart в JavaScript Управление пакетами с помощью pub Резюме Программа «Здравствуй, мир» на Dart ВМ Dart для командных приложений Программа «Здравствуй, мир» в редакторе Dart Знакомство с инструментами, встроенными в Редактор Dart Editor Dart-скрипты и HTML-файлы Запуск приложения «Здравствуй, мир» в Dartium Использование dart2js для конвертации в JavaScript Генерация документации с помощью dartdoc Отладка Dart-кода с помощью точек останова Импорт библиотек для работы с пользовательским интерфейсом в браузере Импорт библиотек Dart Доступ к элементам DOM с помощью dart:html Динамическое добавление новых элементов на страницу Резюме Создание и тестирование Dart-приложения Конструирование пользовательского интерфейса с помощью dart:html Создание экземпляра Element из фрагмента HTMi____78 3.1.4. Создание элементов по имени тега Добавление элементов в HTML-документ Добавление интерактивности с помощью событий браузера Добавление предмета в список по нажатии кнопки Применение гибкого синтаксиса функций в Dart для обработки событий Реагирование на события браузера Рефакторинг прослушивателя событий для повторного использования Запрос HTML-элементов в dart:html Инкапсуляция структуры и функциональности с помощью классов Классы в Dart не таят неожиданностей Конструирование класса Packltem Инкапсуляция функциональности с помощью методов чтения и установки Автономное тестирование программы Создание автономных тестов Определение ожидаемых результатов теста Создание пользовательского сравнивателя Резюме ЯЗЫК DART Функции и замыкания Функции в Dart Тип возвращаемого функцией значения и ключевое слово return Передача функции данных с помощью параметров Функции как полноценные объекты Объявления локальных функций Определение строгого типа функции Замыкания Резюме Библиотеки и ограничение доступа Определение и импорт библиотеки Определение библиотеки с помощью ключевого слова library Импорт библиотек Сокрытие функциональности путем ограничения доступа к частям библиотеки Ограничение доступа в классах Использование закрытых функций в библиотеках Организация исходного кода библиотеки Ключевые слова part и part of Упаковка библиотек Скрипты - это исполняемые библиотеки Резюме Классы и интерфейсы Определение простого класса Программирование относительно интерфейса класса Формализация интерфейса путем явного его определения Реализация нескольких интерфейсов Объявление акцессоров свойств Конструирование классов и интерфейсов Конструирование экземпляров класса Проектирование и использование классов с несколькими конструкторами Использование фабричных конструкторов для создания экземпляров абстрактных классов Применение фабричных конструкторов для повторного использования объектов Использование статических методов и свойств совместно с фабричными конструкторами Создание константных классов с неизменяемыми полями Финальные значения и свойства Блок инициализации конструктора Использование ключевого слова const для создания константного конструктора Резюме Расширение классов и интерфейсов Расширение классов с помощью наследования Наследование класса Наследование конструкторов Переопределение методов и свойств Включение абстрактных классов в иерархию наследования Все является объектом Использование отношения «является» применительно к Object Использование метода toStringO, унаследованного от класса Object Перехват обращений к методу noSuchMethod() Прочая функциональность класса Object Знакомство с типом dynamic Использование аннотации типа dynamic Резюме Классы коллекций Работа с коллекциями данных Коллекции объектов Использование конкретных реализаций интерфейса Collection Создание специализированных коллекций с помощью обобщенных типов Хранение списков пар ключ-значение в обобщенных словарях Создание обобщенных классов Определение обобщенного класса Использование своего обобщенного класса Ограничения на параметрические типы Перегрузка операторов Перегрузка операторов сравнения Неожиданное применение перегрузки операторов Перегрузка операторов доступа по индексу Резюме Асинхронное программирование с применением обратных вызовов и будущих значений Почему веб-приложение должно быть асинхронным Преобразование приложения в асинхронное Использование обратных вызовов в асинхронном программировании Добавление асинхронных обратных вызовов в Лотерею Dart Ожидание завершения всех асинхронных обратных вызовов перед продолжением Вложенные обратные вызовы как средство управления порядком асинхронного выполнения Знакомство с типами Future и Completer Передача будущих значений из одного места программы в другое Упорядочение асинхронных вызовов путем сцепления будущих значений Ожидание завершения всех запущенных операций получения будущих значений Преобразование обычных значений в будущие Автономное тестирование асинхронных API Тестирование асинхронных функций обратного вызова Тестирование будущих значений Резюме КЛИЕНТСКИЕ DART-ПРИЛОЖЕНИЯ Создание веб-приложения на Dart Структура одностраничного веб-приложения Приложение DartExpense - постановка задачи Структура Dart-приложения Поток выполнения в Dart-приложении Конструирование пользовательского интерфейса с помощью dart:html Интерфейс Element Конструкторы элементов в действии Организация взаимодействия с представлениями и элементами Построение простой обобщенной сетки Обработка браузерных событий с помощью dartihtml Управление порядком прохождения события в браузере Наиболее распространенные типы событий Резюме Навигация и локальное хранение данных Интеграция навигации с браузером Применение функции pushState() для добавления элементов в браузерную историю навигации Подписка на событие popState Использование куков браузера для повышения удобства работы Сохранение данных в куке Чтение данных из кука Локальное хранение данных с помощью Web Storage API Преобразование объектов Dart в формат JSON Преобразование JSON-строк в Dart-объекты Сохранение данных в браузере Резюме Взаимодействие с другими системами и языками Взаимодействие с JavaScript Отправка данных из Dart в JavaScript Получение в JavaScript данных, посланных из Dart Отправка данных из JavaScript в Dart Взаимодействие с внешними серверами Правило одного домена Построение допускающих установку браузерных приложений, не требующих сервера Применение технологии AppCache для запуска приложений в автономном режиме Создание пакета приложения, допускающего установку в Chrome Резюме DART НА СТОРОНЕ СЕРВЕРА Работа с файлами и протоколом HTTP на сервере Запуск серверного Dart-скрипта Доступ к аргументам командной строки Доступ к файлам и папкам с помощью dart:io Обслуживание HTTP-запросов от браузера Класс HttpServer Передача статических файлов по HTTP REST API для клиентов Отправка содержимого каталога в формате JSON Отправка содержимого файла в формате JSON Добавление пользовательского интерфейса на стороне клиента Резюме Отправка, синхронизация и сохранение данных Передача приложения DartExpense с сервера Использование веб-сокетов для организации двусторонней связи Соединение через веб-сокет на стороне клиента Обработка подключения через веб-сокет на сервере Использование веб-сокетов для межбраузерной синхронизации Сохранение данных в базе CouchDB с помощью класса HttpCIient Краткое введение в CouchDB Совместное использование модельного класса Expense в коде клиента и сервера Добавление поддержки сохранения данных на сервере Резюме Организация параллелизма с помощью изоляторов Использование изоляторов как единиц работы Создание изолятора Односторонняя связь с изолятором Двусторонняя связь с изолятором Динамическая загрузка кода Создание изолятора для загружаемого файла Определение динамически загружаемого исходного файла Запуск нескольких исполнителей РезюмеА. Справочное руководство по языкуА.1. Объявления переменныхА. 1.1. Объявление переменных с ключевым словом var или именем типаА. 1.2. Объявление финальных (доступных только для чтения) переменныхА. 1.3. Синтаксис литераловА. 1.4. Обобщенные списки и словариА.2. ФункцииА.2.1. Длинная синтаксическая формаА.2.2. Короткая синтаксическая формаА.2.3. Параметры функцииА.2.4. Функции как полноценные объекты З. Управление потоком выполнения и итерированиеА.3.1. Ветвление потока выполнения З.2. Циклы и итерированиеВ. Определение классов и библиотек 1. Классы и интерфейсы 1.1. Определение классовВ. 1.2. Наследование классовВ. 1.3. Абстрактные классыВ.1.4. Неявные интерфейсыВ.1.5. Статические свойства и методыВ.2. Библиотеки и ограничение доступаВ.2.1. Определение библиотекВ.2.2. Ограничение доступа к элементам библиотекиПредметный указатель
 
РЕЗЮМЕ След >