Ionic in Action Hybrid Mobile Apps with Ionic and AngularJS 1st Edition Jeremy Wilken install download https://ebookmeta.com/product/ionic-in-action-hybrid-mobile-apps- with-ionic-and-angularjs-1st-edition-jeremy-wilken/ Download more ebook from https://ebookmeta.com
We believe these products will be a great fit for you. Click the link to download now, or visit ebookmeta.com to discover even more! Ionic Cookbook Recipes to create cutting edge real time hybrid mobile apps with Ionic 3rd Edition Singh https://ebookmeta.com/product/ionic-cookbook-recipes-to-create- cutting-edge-real-time-hybrid-mobile-apps-with-ionic-3rd-edition- singh/ Xamarin in Action Creating native cross platform mobile apps 1st Edition Jim Bennett https://ebookmeta.com/product/xamarin-in-action-creating-native- cross-platform-mobile-apps-1st-edition-jim-bennett/ Building Versatile Mobile Apps with Python and REST: RESTful Web Services with Django and React 1st Edition Art Yudin https://ebookmeta.com/product/building-versatile-mobile-apps- with-python-and-rest-restful-web-services-with-django-and- react-1st-edition-art-yudin/ Falling Deep Instalove Single Dad Curvy Girl short romance Instalove Steamy Short romance series 1st Edition Fern Fraser https://ebookmeta.com/product/falling-deep-instalove-single-dad- curvy-girl-short-romance-instalove-steamy-short-romance- series-1st-edition-fern-fraser-2/
Radiography examination 10th Edition Dorothy A. Saia https://ebookmeta.com/product/radiography-examination-10th- edition-dorothy-a-saia/ You Are Mine The Lycans 2 1st Edition Jenika Snow https://ebookmeta.com/product/you-are-mine-the-lycans-2-1st- edition-jenika-snow/ Cognitive Behavioral Therapy for Avoidant Restrictive Food Intake Disorder 1st Edition Jennifer J. Thomas https://ebookmeta.com/product/cognitive-behavioral-therapy-for- avoidant-restrictive-food-intake-disorder-1st-edition-jennifer-j- thomas/ Dark Mire Kildevil Cove Murder Mysteries 2 1st Edition J S Cook https://ebookmeta.com/product/dark-mire-kildevil-cove-murder- mysteries-2-1st-edition-j-s-cook-2/ The Nature of Sufism An Ontological Reading of the Mystical in Islam 1st Edition Milad Milani https://ebookmeta.com/product/the-nature-of-sufism-an- ontological-reading-of-the-mystical-in-islam-1st-edition-milad- milani/
Philosophical Perspectives on Modern Qur ■nic Exegesis Key Paradigms and Concepts 1st Edition Massimo Campanini https://ebookmeta.com/product/philosophical-perspectives-on- modern-qur-anic-exegesis-key-paradigms-and-concepts-1st-edition- massimo-campanini/
Ionic in Action: Hybrid Mobile Apps with Ionic and AngularJS Jeremy Wilken Copyright For online information and ordering of this and other Manning books, please visit www.manning.com . The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. 20 Baldwin Road PO Box 761 Shelter Island, NY 11964 Email: orders@manning.com ©2016 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher.
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid- free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine. Manning Publications Co. 20 Baldwin Road PO Box 761 Shelter Island, NY 11964 Development editor: Helen Sturgis Technical development editor: Gregor Zurowski Copyeditor: Jodie Allen Proofreader: Katie Tennant Technical proofreader: Matthew Merkes Typesetter: Dottie Marsico Cover designer: Marija Tudor ISBN 9781633430082 Printed in the United States of America
1 2 3 4 5 6 7 8 9 10 – EBM – 20 19 18 17 16 15 Brief Table of Contents Copyright Brief Table of Contents Table of Contents Foreword Preface Acknowledgments About this Book About the Cover Illustration Chapter 1. Introducing Ionic and hybrid apps Chapter 2. Setting up your computer to build apps Chapter 3. What you need to know about AngularJS
Chapter 4. Ionic navigation and core components Chapter 5. Tabs, advanced lists, and form components Chapter 6. Weather app, using side menus, modals, action sheets, and ionScroll Chapter 7. Advanced techniques for professional apps Chapter 8. Using Cordova plugins Chapter 9. Previewing, debugging, and automated testing Chapter 10. Building and publishing apps Appendix A. Additional resources Index List of Figures List of Tables List of Listings
Table of Contents Copyright Brief Table of Contents Table of Contents Foreword Preface Acknowledgments About this Book About the Cover Illustration Chapter 1. Introducing Ionic and hybrid apps 1.1. What is Ionic? 1.2. Types of mobile experiences 1.2.1. Native mobile apps
1.2.2. Mobile websites (web apps) 1.2.3. Hybrid apps 1.3. Understanding how the Ionic stack works 1.3.1. Ionic: user interface framework 1.3.2. Angular: web application framework 1.3.3. Cordova: hybrid app framework 1.4. Why Ionic? 1.4.1. Why Ionic is good for developers 1.4.2. Drawbacks of using Ionic 1.5. Prerequisites for building apps with Ionic 1.5.1. Experience with HTML, CSS, and JavaScript 1.5.2. Experience with web applications and Angular 1.5.3. Access to a mobile device
1.6. Supported mobile devices and platforms 1.6.1. Apple iOS 1.6.2. Google Android 1.7. Summary Chapter 2. Setting up your computer to build apps 2.1. Quick-start guide 2.1.1. Setting up your development environment 2.1.2. Starting a new project 2.1.3. Project folder structure 2.1.4. Previewing in a browser 2.2. Setting up previewing environments 2.2.1. Installing platform tools 2.2.2. Setting up emulators
2.2.3. Setting up a connected device 2.2.4. Adding a platform to the project 2.2.5. Previewing in an emulator 2.2.6. Previewing on a mobile device 2.3. Summary Chapter 3. What you need to know about AngularJS 3.1. AngularJS at a glance 3.1.1. Views and templates: describing the content 3.1.2. Controllers, models, and scope: managing data and logic 3.1.3. Services: reusable objects with methods 3.1.4. Two-way data binding: sharing between controller and view 3.2. Setting up for the chapter project
3.2.1. Getting the project files 3.2.2. Starting the development server 3.3. Basics for an Angular app 3.4. Controllers: for controlling data and business logic 3.5. Loading data: using the controller to load and display data in the view 3.5.1. Filters: convert data to display in the view 3.6. Handling click events to select a note 3.7. Create a directive to parse a note with Markdown 3.8. Using models to manage content editing 3.9. Saving and deleting a note 3.9.1. Adding the save() method 3.9.2. Using Angular forms for validation
3.9.3. Adding the remove method 3.10. Continuing with Angular 3.11. Chapter challenges 3.12. Summary Chapter 4. Ionic navigation and core components 4.1. Set up chapter project 4.1.1. Create a new app and add code manually 4.1.2. Clone the finished app and follow along 4.2. Setting up the app navigation 4.2.1. Designing good app navigation 4.2.2. Declaring the app views with the state provider 4.3. Building the home view 4.3.1. Creating a content container
4.3.2. Using CSS components and adding a simple list of links 4.3.3. Adding icons to the list items 4.4. Using a controller and model for the reservation view 4.5. Loading data into the weather view 4.5.1. Adding the template for the weather view 4.5.2. Create weather controller to load external data 4.5.3. Adding a loading indicator to the weather view 4.6. Infinite scroll with cards for the restaurants view 4.7. Using the slidebox component for app intro tour 4.8. Chapter challenges 4.9. Summary Chapter 5. Tabs, advanced lists, and form components 5.1. Set up chapter project
5.1.1. Create a new app and add code manually 5.1.2. Clone the finished app and follow along 5.2. ionTabs: adding tabs and navigation 5.2.1. Adding tabs container and three tabs to the app 5.3. Adding ionNavView for each tab 5.4. Loading and displaying current Bitcoin rates 5.5. Display a currency’s details in the same tab view 5.6. Refresh the Bitcoin rates and display help 5.6.1. ionRefresher: pull-to-refresh the rates 5.6.2. $ionicPopover: showing help in a popover 5.7. Charting historical data 5.7.1. Setting up third-party libraries 5.7.2. History tab template using Highcharts and a select box to toggle currency
5.7.3. History tab controller loads data and sets up chart 5.8. Currencies tab with list reordering and toggles 5.8.1. ionReorderButton: adding reordering to a list 5.8.2. ionToggle: adding toggles to list items 5.9. Chapter challenges 5.10. Summary Chapter 6. Weather app, using side menus, modals, action sheets, and ionScroll 6.1. Setting up the chapter project Create a new app and add code manually Clone the finished app and follow along 6.2. Setting up the side menu and views 6.3. Searching for locations
6.4. Adding settings view and data services 6.4.1. Create services for locations and settings 6.4.2. Show favorites in side menu list 6.4.3. Adding the settings template 6.4.4. Settings view controller 6.5. Setting up the weather view 6.5.1. Get a Forecast.io API key 6.5.2. Using Ionic CLI proxies 6.5.3. Add the weather view controller and template 6.6. ionScroll: building custom scrolling content 6.6.1. Using ionScroll with paging 6.6.2. Creating filters for forecast data 6.7. Action sheet: displaying a list of options
6.8. ionModal: displaying the sunrise and sunset chart 6.8.1. Setting up a modal 6.8.2. Collection repeat: making the sunrise and sunset list fast 6.9. Popup: alert and confirm changes to favorites 6.10. Chapter challenges 6.11. Summary Chapter 7. Advanced techniques for professional apps 7.1. Set up chapter project 7.1.1. Get the code 7.2. Custom Ionic styling using Sass 7.2.1. Setting up Sass 7.2.2. Customize Ionic with Sass variables 7.2.3. Using Sass for your own styling
7.3. How to support online and offline mode 7.4. Handling gesture events in Ionic 7.4.1. Listen for events with Ionic event directives 7.4.2. Listen for events with $ionicGesture service 7.4.3. Available gesture events 7.5. Storing data for persistence 7.5.1. Using localStorage 7.5.2. Using Web SQL, IndexedDB, and SQLite 7.5.3. Other options from Cordova plugins 7.6. Building one app for multiple platforms 7.6.1. One size doesn’t always fit all 7.6.2. Adapt styling for a platform or device type 7.6.3. Adapt behavior for a platform or device type
7.7. Modify default behaviors with $ionicConfigProvider 7.8. Summary Chapter 8. Using Cordova plugins 8.1. Cordova plugins 8.1.1. Considerations when using plugins 8.1.2. Installing plugins 8.1.3. Using plugins 8.1.4. Using plugins with emulators 8.1.5. Plugins and platform limitations 8.1.6. Angular and Cordova gotchas 8.1.7. Solutions to common issues with devices or emulators 8.2. ngCordova 8.2.1. Installing ngCordova
8.3. Using a camera and photos in the resort app 8.3.1. Setting up the camera project 8.3.2. Adding the camera plugin 8.3.3. Creating the photo book view 8.4. Using geolocation in the weather app 8.4.1. Setting up the geolocation example 8.4.2. Adding the geolocation plugin and ngCordova 8.4.3. Requesting a user’s location 8.4.4. Improving the weather app 8.5. Chapter challenges 8.6. Summary Chapter 9. Previewing, debugging, and automated testing 9.1. The differences among previewing, debugging, and testing
9.1.1. Why testing is important 9.2. Setting up the chapter example 9.3. Additional ways to preview apps 9.3.1. Ionic Lab 9.3.2. Ionic View 9.4. Debugging from a device 9.4.1. Debugging from an Android device 9.4.2. Debugging from an iOS device or emulator 9.5. Automated testing 9.5.1. Unit tests with Jasmine and Karma 9.5.2. Integration tests with Protractor and WebDriver 9.6. More test examples 9.7. Summary
Chapter 10. Building and publishing apps 10.1. Building for production: an overview 10.2. Building icons and splash-screen assets 10.2.1. Creating the primary icons 10.2.2. Creating the splash-screen images 10.3. Preparing your app for production 10.4. Building Android apps and publishing to Google Play 10.4.1. Setting up for signing your apps 10.4.2. Build the release app file 10.4.3. Signing the APK file 10.4.4. Optimize the APK 10.4.5. Building an updated version of your app 10.4.6. Creating the app listing and uploading the app to the Play Store
10.4.7. Updating the app listing or uploading a new version 10.4.8. Using alternative Android stores 10.5. Building iOS apps and publishing to the AppStore 10.5.1. Set up certificates and ID 10.5.2. Set up an app ID identifier 10.5.3. Create listing in iTunes Connect 10.5.4. Build and upload app with Xcode 10.5.5. Complete the iTunes Connect app listing 10.5.6. Updating the app 10.6. Summary Appendix A. Additional resources A.1. Ionic
A.2. Angular A.3. Cordova A.4. Blogs Index List of Figures List of Tables List of Listings Foreword This book is the result of nine months of dedicated work by Jeremy Wilken, a top Ionic developer with whom we’ve had the pleasure of collaborating since we built Ionic and open sourced it in 2013. This book provides an excellent introduction to the Ionic Open Source SDK, and it also offers plenty of rich information for experienced Ionic developers. Jeremy built three Ionic apps for this book, using just about every Ionic component in existence. Because of that, the book is a solid reference for using the components in an integrated way. The first app, which a resort might use to provide value for guests, incorporates our slidebox, lists, cards, content containers, and basic navigation. The second, a Bitcoin market app, provides real-time
currency rates for Bitcoin and uses pull-to-refresh, popovers, tabs, charts, advanced lists, and nested views. The third, a weather app, uses modals, a custom scroll area (paginated scrolling), externally loaded data, side menus, and a search view. The apps are unique and robust. They are 80% developed for deployment to an app store, with the obvious missing pieces listed at the end of the chapter to challenge readers to complete them. For experienced developers, the book explains how to target a platform if, for example, they want to use the action sheet in iOS and the popover in Android. The book also provides background about the Ionic ecosystem, explaining how to leverage Cordova and plugins; discussing Ionic’s platform services, such as Ionic View; and providing instruction about how to improve Ionic development with advanced techniques and testing. Jeremy provides great examples and insight into how to set up and write your own tests. Prior to creating Ionic with Max Lynch and Ben Sperry, I joined their company to help develop their already successful products, including Codiqa, which was a jQuery Mobile drag-and-drop interface builder. As we worked on Codiqa, we realized devices and browsers were not being used to their full potential, and users were continually asking for more from our tools. Eventually, we decided to create our toolkit for hybrid applications, in order to push mobile devices to their limits. With the added power of Angular, we’ve been able to bring hybrid mobile app development to a place where it presents a viable challenge to native application development. Since we released the alpha version of Ionic in 2013, I couldn’t be more proud of how quickly the development community has embraced Ionic and helped to grow it even further. The part I’m most excited about is that Ionic is only getting started, and we’ll continue to grow and support it, so that developers can build high-performing apps quickly and easily. You’ll find this book to be both an informative introduction to Ionic and an in-depth guide to building better apps, depending on your
experience with Ionic and your needs. Thank you for being part of the Ionic community. Enjoy! ADAM BRADLEY COCREATOR OF THE IONIC FRAMEWORK Preface The importance of mobile may be clear today, but even just a few years ago it was debatable if building mobile apps was worth the time and cost. As of 2015 the number of mobile apps available in the Apple App and Google Play Stores is well over a million. Over six times more phones are sold than desktop/laptop devices, and the number of tablets sold should exceed desktop/laptop devices in 2015. Mobile is here, and here to stay. Back in 2013, the world of mobile app development was focused primarily on building native apps. These native apps were written in Java or Objective C, and required developers to learn those languages, platform tools, SDKs, and so forth. For a web developer like myself, this presented a barrier to getting into mobile app development. It seemed like the mobile web was focused on building responsive websites, not mobile apps. The idea of a hybrid app (which is a native app built using web technologies) was usually given very little credit due to the quality of older devices and browsers that made hybrid apps sluggish, and design practices that made the apps have a visual disconnect from native apps. The founders of Ionic saw an opportunity. They realized that mobile devices were improving, quite rapidly in fact, and that hybrid apps could be a serious contender with native apps. They aimed to open the door for developers who want to build native-feeling mobile apps, while using the same languages they already know from web
development. Ionic builds on the shoulders of other open source projects, Cordova and Angular. Ionic leverages these projects into a more unified platform for building hybrid mobile apps. As of version 1.0, it’s clear that Ionic has come of age and empowers web developers to build mobile apps. The Ionic team has become fond of calling Ionic the “missing SDK” for hybrid apps. As I’ve finished this journey of writing Ionic in Action , I can see the full vision of Ionic coming to life. The core of what makes Ionic so powerful is the open source components explored in this book. In addition, a platform of services is being built around it for features such as push notifications, analytics, beta testing, and more. I hold open source projects with well-managed development and community input in high regard, and Ionic is certainly in this category (in the top 40 starred projects on GitHub, and it uses Angular, which is in the top 3 as of this writing). Hundreds of thousands of apps have been created with Ionic, and several apps have even been featured in the major app stores. Writing a book about Ionic was a logical extension of my desire to share my learning experience on how to become a mobile app developer. I started with writing the core parts of this book around a learning pathway that talked about each feature of Ionic and explored them each in isolation. I got up to six chapters done, but it felt like the wrong approach. I like to see something working that I can interact with, and even touch, as is possible in the case of mobile apps. So after writing the first draft of the three core chapters in the book, I threw them aside and rewrote them from scratch using a very direct, build-the-app-as-you-go approach. It feels much more like the kind of learning path I followed when I built my first Ionic app, and I hope that you find the chapters approachable. In fact, I hope you find that same care applied to all of the chapters in this book.
I learned about Ionic through trial and error, since the documentation has always been a good guide. When I had a project at work that required a mobile app, I was able to put Ionic into service and build a prototype within a day. Working through the early days of Ionic, I regularly updated my app to keep up with the changes and new features, and I was often impressed with the attention to detail and rapid pace of innovation. Over the months of beta releases, Ionic matured its API and design into the polished and consistent form it is today. The future of Ionic is one that includes even more community-driven contributions and components, more platform services, and continued progress in performance and quality. I can’t wait to see what you build, and I’m glad to be with you on your own journey to become a mobile app developer with Ionic. Acknowledgments In this book I share many things that I’ve learned over the years, and I owe many for providing training, guidance, and support along the way. While it is impossible to track everyone who has had some impact on my growth that led to this book, I know those who have made the biggest impact are people heavily involved in open source communities. Those who write, maintain, or support open source projects and communities have my highest respect and gratitude. Thank you, Manning, and the wonderful staff who have worked hard to make this book a reality. They say it takes a village to raise a child, and so it is also with publishing a book. Robin de Jongh was instrumental in getting this book started, and for stimulating my excitement to write. My sincere thanks goes to Helen Stergius for her tireless editing, late-night brainstorming, and positive attitude and energy that pushed me through the major writing phase. I thank the rest of the team who helped bring the book to life through publishing and reviewing, particularly Gregor Zurowski, Katie
Tennant, Mary Piergies, Janet Vail, Matt Merkes, Candace Gillhoolley, Kevin Sullivan, Donna Clements, and Jodie Allen. Many peer reviewers helped by poking holes in some of the weaker areas of early drafts or inspired my confidence to make positive changes over time. Many thanks to Andrea Prearo, Barbara Fusinska, Charlie Gaines, Cho S. Kim, Chris Graham, Gareth van der Berg, Giuseppe de Marco, Jeff Cunningham, Ken Rimple, Kevin Liao, Lourens Steyn, Patrick Dennis, Rabimba Karanjai, Satadru Roy, and Wendy Wise—you suggested many improvements for me to chew on, and the manuscript would not be as strong without your help. Many MEAP reviewers provided some great feedback on the forum. It’s pretty neat that people are willing to buy a book and engage with the author on how to make it better. If you ever have the chance to meet anyone from the Ionic team, you’ll find them to be some of the most dedicated and genuine people in tech and open source. I owe the Ionic team a great deal of thanks for making Ionic (and thus the opportunity to write a book on it!), and for their great efforts in reviewing and answering questions along the way. In particular, I’d like to thank Adam Bradley, Ben Sperry, Katie Ginder-Vogel, and Mike Hartington for the many emails, Skype calls, or in-person chats we’ve had. The Ionic community grows daily due to your tireless efforts and fantastic work. And special thanks to Adam for penning the foreword to my book. Finally, there’s always the underlying support of my wife Linda. In the future, I promise not to write a book when we have a newborn (without your permission of course). It’s hard to imagine the amount of time and energy a book requires until you do it, and you’ve been supportive and understanding when I needed to hide in my office until a draft was done. I love you and our baby always. About this Book
Ionic brings together several existing projects with its own set of tools so web developers can build mobile apps. Ionic has gained a strong following and is a top choice for mobile app developers. Ionic in Action is a hands-on, example-driven guide to Ionic. During the course of the book, you’ll build several nearly complete apps that showcase almost every feature of Ionic. The documentation for Ionic is very good, but it doesn’t provide much direction on how to orchestrate a large app. When you build an app with Ionic, you actually use a combination of technologies (primarily Angular and Cordova). To ensure you’re really capable of building mobile apps with Ionic, the book provides chapters on those technologies. There’s much more that could be said about Angular and Cordova, which is why entire books have been written about them, but this book tries to do them justice and provides enough foundational knowledge to get you started. Mobile apps often require access to external data. It’s helpful to understand how APIs are able to provide data for web applications. Ionic in Action covers how to utilize RESTful APIs through several of the examples. Who should read this book This book is intended for web developers who have a foundation in building web applications. Knowledge of CSS, HTML, and JavaScript is expected. You should understand how to write HTML to structure your content and how to use CSS to modify the styling. JavaScript experience should include concepts such as asynchronous behavior, objects, and primitives. No prior knowledge of Cordova or Angular is required. It’s helpful to have some background in building web applications in a browser
with JavaScript, but this experience can also be gained through careful study of the book examples. Access to a mobile device is necessary to properly build and test apps. For Ionic, the device needs to be an iOS or Android device. Having one of each is very helpful! How the book is organized In the 10 chapters, I cover the entire process from setting up your environment to publishing your finished app: Chapter 1 is a detailed overview of Ionic, the other technologies used together to create hybrid apps, and why Ionic is a great choice. Chapter 2 gets you through the setup process for all of the tools used in the book, and helps you create your first mobile app using one of the default starter templates. Chapter 3 provides a primer for developers who aren’t familiar with Angular or who’d like to brush up on their knowledge because Ionic is built with Angular. Chapter 4 walks you through creating a mobile app for a fictitious resort that includes basic app navigation and uses a number of visual components such as cards, a list with infinite scrolling, loading indicators to gracefully load data, and a slidebox. You’ll learn about the basics of building an Ionic app using a hands-on approach while building your first app. Chapter 5 takes you through building another mobile app for tracking Bitcoin currency prices. The Bitcoin app uses tabs, a pull-to-refresh feature, several form components, advanced lists with swipe options, and a chart for quotes over time. The focus in this chapter is how to structure an app using tabs, and how to leverage many more Ionic components. Chapter 6 helps you build a weather app. The chapter digs into using the side menu for navigation, modals for presenting tangential information, action sheets to display option buttons,
and a custom scrolling behavior. This chapter rounds out your understanding of the Ionic components and primary design elements used in Ionic apps. Chapter 7 introduces you to some advanced techniques that are useful for building hybrid apps. You’ll learn about how to persist user data, customize Ionic components, work in online or offline mode, configure Ionic’s default settings, adapt your apps to have platform-specific functionalities, and handle gesture events. Chapter 8 looks at how to use Cordova to allow Ionic apps to support platform features, such as sensor data. The chapter uses two of the apps you built in earlier chapters to demonstrate how to add support for geolocation for the weather app and camera support for the resort app. You’ll learn about ngCordova and how to easily integrate with any Cordova plugin. Chapter 9 helps you set up testing for your Ionic app. The chapter introduces two primary testing approaches: unit testing for testing your business logic, and integration testing for testing the overall app functionality. You’ll also learn about Ionic View and Ionic Lab to help you preview your apps. Chapter 10 walks you through the process of submitting your apps to the stores. It covers tips and techniques for preparing your apps for production, adding necessary graphics and assets, and ultimately how to properly build your apps for both iOS and Android. Code All of the code for this book is found on GitHub at https://github.com/ionic-in-action . The source code is open source, so you’re able to modify it for your own purposes. I only ask that you don’t try to publish the example apps to the app stores. Most of the code is found in code listing blocks, except in cases where the code is short and should already be familiar. The code is well annotated to provide context and descriptions for individual
lines. Sometimes code is in bold font to highlight code that has changed from previous steps in the chapter, such as when a new feature adds to an existing line of code. Author Online Purchase of Ionic in Action includes free access to a private web forum run by Manning Publications where you can make comments about the book, ask technical questions, and receive help from the author and from other users. To access the forum and subscribe to it, point your web browser to www.manning.com/books/ionic-in- action . This page provides information on how to get on the forum once you’re registered, what kind of help is available, and the rules of conduct on the forum. Manning’s commitment to our readers is to provide a venue where a meaningful dialog between individual readers and between readers and the author can take place. It’s not a commitment to any specific amount of participation on the part of the author, whose contribution to the forum remains voluntary (and unpaid). We suggest you try asking the author some challenging questions lest his interest stray! The Author Online forum and the archives of previous discussions will be accessible from the publisher’s website as long as the book is in print. About the Cover Illustration The figure on the cover of Ionic in Action is captioned “Summer Habit of a Moor of Morocco 1695.” The illustration is taken from Thomas Jefferys’ A Collection of the Dresses of Different Nations, Ancient and Modern (4 volumes), London, published between 1757 and 1772. The title page states that these are hand-colored copperplate engravings, heightened with gum arabic. Thomas Jefferys (1719–1771) was called “Geographer to King George III.” An
English cartographer who was the leading map supplier of his day, Jeffreys engraved and printed maps for government and other official bodies and produced a wide range of commercial maps and atlases, especially of North America. His work as a mapmaker sparked an interest in local dress customs of the lands he surveyed and mapped. This diversity of dress is brilliantly displayed in this four-volume collection. Fascination with faraway lands and travel for pleasure were relatively new phenomena in the late eighteenth century, and collections such as this one were popular, introducing both the tourist as well as the armchair traveler to the inhabitants of other countries. The diversity of the drawings in Jeffreys’ volumes speaks vividly of the uniqueness and individuality of the world’s nations 200 to 300 years ago. Dress codes have changed since then, and the diversity by region and country, so rich at the time, has faded away. It is now hard to tell the inhabitant of one continent apart from another. Perhaps, trying to view it optimistically, we have traded a cultural and visual diversity for a more varied personal life—or a more varied and interesting intellectual and technical life. At a time when it is hard to tell one computer book from another, Manning celebrates the inventiveness and initiative of the computer business with book covers based on the rich diversity of regional life of centuries ago, brought back to life by Jeffreys’ pictures. Chapter 1. Introducing Ionic and hybrid apps This chapter covers Why you should choose Ionic and how it benefits you What Ionic is and how it uses Angular and Cordova Why hybrid apps are an ideal choice for mobile development Introduction and requirements for Android and iOS platforms
Building mobile apps has become an essential skill for many developers, and with Ionic you’ll be able to build hybrid mobile apps that look and feel just like native mobile apps. A hybrid app is a type of mobile app that uses a browser window to display its interface. Ionic is a combination of tools and utilities that enables developers to quickly build hybrid mobile apps using the same technologies used to build websites and web applications, primarily HTML, CSS (Cascading Style Sheets), and JavaScript. Ionic works by embedding a web application inside of a native app by using Cordova. It’s designed to work together with Angular to create a web application for the mobile environment, and includes support for mobile features like user interface controls and responding to touch input. This book aims to give developers the skills necessary to build Ionic mobile apps. I’ll teach you the basics of setting up your projects correctly and how to build rich interfaces, and demonstrate with real-world style examples. I’ll help you set up your build, testing, and deployment processes to get your app ready for production. But before we get too far along, we should dig deeper into Ionic and why it’s a solid choice for building hybrid mobile apps. 1.1. What is Ionic? Ionic is a combination of technologies and utilities designed to make building hybrid mobile apps fast, easy, and beautiful. Ionic is built on an ecosystem that includes Angular as the web application framework and Cordova for building and packaging the native app. We’ll dig into each in more detail later, but figure 1.1 shows you an overview of these technologies and how they stack. Let’s take a moment to cover the basics of how the technology stack works on a device. Figure 1.1. The stack of technologies used with the Ionic framework, and how they fit together
In figure 1.1 , the stack begins with the user opening the app from the device. Imagine this is an iPhone running iOS or a Nexus 10 running Android. Let’s break down each of these pieces in more detail: Device— This loads the app. The device contains the operating system that manages the installation of apps that are downloaded from the platform’s store. The operating system also provides a set of APIs for apps to use to access various features, such as the GPS location, contacts list, or camera. Cordova app wrapper— This is a native app that loads the web application code. Cordova is a platform for building mobile apps that can run using HTML, CSS, and JavaScript inside of a native app, which is known as a hybrid mobile app . It’s a utility for creating a bridge between the platform and the application. It creates a native mobile app that can be installed (called the app wrapper in figure 1.1 ), and it contains what’s called a WebView (essentially an isolated browser window) with a JavaScript API that the web application will run inside. Cordova JavaScript API— This is the bridge that communicates between the app and the device. The app wrapper has access to both the web application and the native platform through the JavaScript API. This is primarily handled behind the scenes, and Cordova ultimately generates the native app for you. Angular— This is the web application that controls the app routing and function. The Angular web application runs inside of
the WebView. Angular is a very popular framework for building powerful web applications. Angular is primarily used to manage the web application’s logic and data. Ionic— This provides the user interface components rendered in the app. Ionic is built on top of Angular, and is primarily used to design the user interface and experience. This includes the visual elements such as tabs, buttons, and navigation headers. These interface controls are the heart of Ionic, and provide a near-native interface inside of a hybrid app. Ionic also includes a number of additional utilities and features that help manage your app from creation to previewing to deployment. The combination of these technologies makes Ionic a very feature- rich platform for building your mobile apps. Now that you have a bird’s-eye view of Ionic and the technology, let’s look a little closer at three main types of mobile experiences and why Ionic’s approach is beneficial. 1.2. Types of mobile experiences It’s important to understand there are several ways to build applications for mobile devices, and each has its strengths and weaknesses. There are three basic types: native apps, mobile websites, and hybrid apps. We’ll look at each of these in detail to clarify the differences. In figure 1.2 , you can see how the three types compare in design and architecture. The figure also shows how each app would access a database or web service API to load data. Figure 1.2. Native apps, mobile websites, and hybrid app architectures compared side by side
1.2.1. Native mobile apps To create native apps, developers write code in the default language for the mobile platform, which is Objective C or Swift for iOS and Java for Android. Developers compile the app and install it on a device. Using the platform software development kit (SDK), the app communicates with the platform APIs to access device data or load data from an external server using HTTP requests. Both iOS and Android provide a set of tools to enable developers to leverage the platform features in a controlled manner through predefined APIs. There are tools, both official and unofficial, that can aid in the development of native apps. It’s common for developers to use frameworks in their native app to make development easier. Native app advantages
Native apps come with a number of benefits over hybrid apps and mobile websites. The benefits revolve around being tightly integrated with the device platform: Native APIs— Native apps can use the native APIs directly in the app, making the tightest connection to the platform. Performance— They can experience the highest levels of performance. Same environment— They’re written with native APIs, which is helpful for developers familiar with the languages used. But there are also a number of disadvantages. Native app disadvantages The disadvantages of native apps are generally the level of difficulty in developing and maintaining them: Language requirements— Native apps require developer proficiency in the platform language (for example, Java) and knowledge of how to use platform-specific APIs. Not cross-platform— They can only be developed for one platform at a time. High level of effort— Typically, they require more work and overhead to build, which increases costs. Native apps may be best suited for developers who have a command of Java and Objective C, or for teams with extensive resources and a need for the benefits of native apps. 1.2.2. Mobile websites (web apps) Mobile websites, or web apps, work well on a mobile device and are accessed through a mobile browser. Web apps are websites viewed on a mobile device in a mobile browser, designed specifically to fit a mobile device screen size. Figure 1.3 shows a couple of examples.
Figure 1.3. Mobile websites: a responsive site from the Boston Globe (left) and a mobilespecific website from eBay (right) Some website designers develop a second version specifically for use on a mobile device. Perhaps you’ve used your mobile device to visit a website and were redirected to a version with limited features, such as visiting eBay and ending up on the http://m.ebay.com subdomain. On other websites, such as www.bostonglobe.com , you may find that the design adjusts to your device’s form factor and
screen size. This is accomplished with a technique called responsive design . The website content will resize and flow according to the browser window size, and some may even be hidden. Mobile website advantages Mobile websites enjoy a number of benefits, primarily in the level of effort and compatibility on devices: Maintainability— Mobile websites are easy to update and maintain without the need to go through an approval process or update installations on devices. No installation— Because they exist on the internet, they don’t require installation on mobile devices. Cross-platform— Any mobile device has a browser, allowing your application to be accessible from any device. As with native apps, there are also a number of disadvantages. Mobile website disadvantages Mobile websites run inside of a mobile browser, which is the major cause of limitations and disadvantages: No native access— Because mobile websites are run in the browser, they have no access to the native APIs or the platform, just the APIs provided by the browser. Require keyboard to load— Users have to type the address in a browser to find or use a mobile website, which is more difficult than tapping an icon. Limited user interface— It’s difficult to create touch-friendly applications, especially if you have a responsive site that has to work well on desktops. Mobile browsing decline— The amount of time users browse the web on a mobile device is declining, while app use is increasing.
Mobile websites can be important even if you have a mobile app, depending on your product or service. Research shows users spend much more time using apps compared to the mobile browser, so mobile websites tend to experience lower engagement. 1.2.3. Hybrid apps A hybrid app is a mobile app that contains an isolated browser instance, often called a WebView , to run a web application inside of a native app. It uses a native app wrapper that can communicate with the native device platform and the WebView. This means web applications can run on a mobile device and have access to the device, such as the camera or GPS features. Tools that facilitate the communication between the WebView and the native platform make hybrid apps possible. These tools aren’t part of the official iOS or Android platforms, but are third-party tools such as Apache Cordova, which is used in this book. When a hybrid app compiles, your web application transforms into a native app. Hybrid app advantages Hybrid apps have a few advantages over mobile websites and native apps that make hybrid apps a great platform for building apps: Cross-platform— You can build your app once and deploy it to multiple platforms with minimal effort. Same skills as web development— They allow you to build mobile apps using the same skills already used to develop websites and web applications. Access to device— Because the WebView is wrapped in a native app, your app has access to all of the device features available to a native app. Ease of development— They’re easy and fast to develop, without the need to constantly rebuild to preview. You also have access to the same development tools used for building websites.
Hybrid apps provide a robust base for mobile app development, yet still allow you to use the web platform. You can build the majority of your app as a website, but anytime you need access to a native API, the hybrid app framework provides a bridge to access that API with JavaScript. Your app can detect swipes, pinches, and other gestures just like clicks or keyboard events. But there are a few disadvantages, as you might expect. Hybrid app disadvantages Hybrid apps have a few disadvantages due to the restrictions that are placed on WebViews and limitations of native integrations: WebView limitations— The application can only run as well as the WebView instance, which means performance is tied to the quality of the platform’s browser. Access native features via plugins— Access to the native APIs you need may not be currently available, and may require additional development to make a plugin to support it. No native user interface controls— Without a tool like Ionic, developers would have to create all of the user interface elements. With Ionic, you can build hybrid apps so you can leverage the knowledge and skills with which web developers are already familiar. 1.3. Understanding how the Ionic stack works There are several technologies that can be used when building hybrid apps, but with Ionic there are three primary ones: Ionic, Angular, and Cordova. Figure 1.4 outlines how these pieces can work in tandem to facilitate opening the camera from an Ionic app. Figure 1.4. How Ionic, Angular, and Cordova work together for a hybrid app
Let’s break down each of the steps in figure 1.4 : 1 . The user taps on a button (which is an Ionic component). 2 . The button calls the Angular controller, which calls Cordova through the JavaScript API. 3 . Cordova communicates with the device using native SDKs and requests the camera app. 4 . The device opens the camera app (or prompts for permission if necessary), and the user is able to take a picture. 5 . When the user confirms the photo, the camera app closes and returns the image data to Cordova. 6 . Cordova passes the image data back to the Angular controller. 7 . The visual display of the image is updated inside of Ionic components.
This quick outline of how the pieces communicate can demonstrate how an Ionic app is really a stack of technologies that work in concert. Don’t worry if some of these terms are unknown to you— we’ll cover them throughout this book. The key here is to see how your app is able to leverage the power of the device. Let’s look at each one more closely. 1.3.1. Ionic: user interface framework Ionic’s primary feature is a set of user interface controls that are missing from HTML but are common on mobile apps. Imagine a weather app that shows current conditions based on the user’s location. Ionic provides a number of user interface components such as a slidebox that allows a user to swipe between several boxes of information like temperature, forecasts, and weather maps. These components are built with a combination of CSS, HTML, and JavaScript, and they behave like the native controls you’re accustomed to using. Common examples include these: Side menus that slide in from the side Toggle buttons Mobile tabs In figure 1.5 you can see a screenshot of one of the sample apps you’ll build later in the book. It shows how many different Ionic components are used on the screen at once to create a powerful user interface. Figure 1.5. How parts of Ionic work together to create a usable interface
Ionic is an open source project that’s primarily developed by the Ionic team. Its popularity has grown very quickly since it was launched in November 2013; it has become a primary choice for building hybrid apps. Over 20,000 apps are launched with Ionic each month. Ionic is provided under the MIT license and is found at http://ionicframework.com .
Exploring the Variety of Random Documents with Different Content
Beatrix le Clerc, A. Milo le Clerk, A. Clerkson, 65. Geoffrey fil. Clerici, A. William Clerkessone, M. Clerkwright, 402. Robert Clerkwright, S. Cleve, 124. Henry de la Clyve, A. Thomas de Cleve, F F. Cleveland, 124. Clever (v. Cleaver), 154. William le Clever, F F. Clifden, 124. Raymund de Clifden, A. Thomas de Cliffedon, A. Cliffe, 124. Thomas del Clif, A. Henry de Clyf, M. Clifford, 124. Robert de Clyfford, M. Roger de Clyfford, E. Cliffshend, 114. John de Cleveshend, E. Martin de Clyveshend, A. Clifton, 124. Ralph de Clifton, A. Gervase Clifton, X X 1. Clive, 124. Humfrey de la Clive, A. William atte Clyve, M.
Cliveley, 124. John de Clyveley, A. Nicholas Cleveley, X X 1. Clockmaker, 401. Thomas Clokmaker, Y. Cloisterer, 191. Johannes Closterer, W 12. Clothier, Clothman. Robert Clothman, X X 2. Clough, 124. Roger Clough, A. Richard Cloughe, Z. Clouter, 352. John le Clutere, N. Stephen le Clutere, N. Cloutman (v. Clouter), 352. Clowes, 124. John Clowes, Z. Thomas Clowes, Z. Coachman, 288. Dorothy Coachman, V 5. Telney Coachman, V 5. John Coacheman, Z. Cobb, 124. Robert de Cobbe, M. Milisent Cobbe, A. Cobbett (v. Cuthbert), 56. Cobbler, 352. Robert le Cobeler, A. Edward Cobler, H. Cobden, 124.
Godfrey de Coppden, M. John Copedenne, A. Cobham, 124. Reginald de Cobeham, M. John de Cobbeham, A. Cobley, 124. Cobwell, 124. John de Cobwell, M. Cock (1), 145. Peter atte Cok, B. William atte Cok, G. (2), 485. John le Koc, A. Katerina le Cok, B. Cockaigne, Cockayne, 148. Alan de Cokayne, A. Richard de Cockayne, A. Cocker, 307. Simon le Cockere, A. William le Kokere, A. John le Coker, M. Cockerell, 494. Giot Cockerel, M. Jac. Quoquerell, C. Cockeyn (v. Cockaigne), 148. Cockin (v. Cockaigne), 148. Richard Cokyn, H. Cockman, 307. Maud Cockman, F F. Robert Cokeman, M.
Cockney, 148. John Cokeney, B. Cocksbrain, 500. William Cockesbrayne, A. Cockshead, 447. Adam Cocksheved, M. Antony Cockshead, Z. Cockshaw, 117. Adam de Cokeshaw, A. John de Cokeshaw, A. Cockshot, 116. Alan Cockshott, F. John Cockshott, Z. Cockson (v. Cookson), 65. Edward Cockson, Z. John Cockson, E E. Codde, 497. Thomas Codde, F F. Joan Codde, F F. Codiner (v. Cordwaner), 351. Codling, 497. Alan Codling, F F. Simon Codlyng, F F. Codner (v. Cordwaner), 351. Cœurdebeef, 500. Thomas Cordebeofe, A. John Queerdebœf, B. Coffer, Cofferer, 218, 336, 396. Godfrey le Coffrer, A. Ralph le Coffrer, H. John le Coffrer, M.
Coffin, 144, 397. Richard Coffyn, H. Elias Coffyn, J. Cogger, 408. Hamond le Cogger, O. Henry Cogger, P. Cogman, 408. Benjamin Cogman, F F. Coifer, 336. Emma le Coyfere, A. Ralph le Coifier E. Dionysia la Coyfere, A. Coke (v. Cook), 206, 365. Roger le Coke, M. Alexander Coke, A. Cole (v. Colin), 95. Coleman, 22. Editha Coleman, A. Coleman le Hen, A. Colet (v. Collet), 189, 96. Nicholas Colyt, M. William Kolytte, W 11. Colfox, 499. Thomas Colfox, Z. Richard Colvox, A. Colinson, 16, 96. William fil. Colin, A. Colin le Balistar, E. Collet (v. Colet), 189, 96. Colletta Clarke, H H. Henry Collette, X X 1.
Collier. Robert le Coliere, A. John le Collier, C. Collinge (v. Culling), 170. Collins (v. Collinson), 96. Colinus de Barentyn, E. Colin le Ferur, A. Collinson (v. Colinson), 96. John Collynson, Z. Lanclot Colynson, W 11. Collopp, 333 n. John Collop, A. Mabil Collope, A. Colson (v. Colinson), 96. George Collison, H H. Robert Colson, H H. Colswain, 505. Stephen Colesweyne, A. Richard Colsweyn, T. Colt, 490. Roger le Colt, A. William le Colt, A. Joan Colte, V 7. Coltman, 267. John Coltman, H. Geoffrey Coltman, M. Richard Coltman, W 11. Colville, 151. William de Colville, M. Felip de Colville, A. Colyer (v. Collier).
Henry le Colyer, A. Comb, Combe, 125. Elias de Comb, A. William atte Combe, M. Nicholas atte Combe, M. Comber, 320. John le Comber, A. Walter le Comber, E. Commander. William le Comandur, A. William Commander, Z. Conder, 377. Coney, 139, 489. Henry Cony, D. John Conay, A. Coneybeare, 139. Coneythorp, 137. Robert de Conigthorpe, X X 4. Congreave, 120. Robert de Conesgrave, A. William Congrove, H. Henry Conygrave, X X 2. Coning, 139. Nicholas Conyng, H. Peter Conyng, P. Michael Conning, W 20. Coningsby, 139. John de Conyngsby, P. Walter de Cunnyngby, A. Conington, Connington, 139. John de Conyngton, A.
Thomas de Conyton, A. Conqueror. William Conqueror, A. Robert Conqueraunt, A. Constable, 203. John le Conestable, B. Robert le Conestable, G. Constance, 19, 67. William fil. Constance, A. Convert, 167. Dyonis le Convers, A. Stephen le Convers, B. Nicholas le Conners, B. Conyers (v. Convert), 197. Cook, Cooke, 206, 365. Emma Coca, A. Roger le Cook, M. Joan le Cook, F F. Cookman, 206, 365. William Cokeman, J. John Cookman, W 9. Cookson, 65, 365. Robert fil. Coci, A. John Cokesson, F F. Henry Cukeson, W 11. Cooper, 389, 394. Richard le Cupare, A. John le Cuper, M. Coote, 494. Cope, 124. Robert Cope, A.
Adam Cope, M. Copeland, 124. William de Copelaunde, E. John Copland, Z. Copeman, 296, 124. Laurence Copiman, A. Hugh Cowpman, K. Coper, 296. John le Copere, A. Copestake, 124. William Copestake, Z. Copley, 124. Avery Copley, Z. Christopher Copley, Z. Thomas de Coppeley, X X 4. Copp (1). John le Coppe, A. Thomas le Coppe, A. (2), 124. John de la Coppe, F F. Richard de la Coppe, F F. Copped 353. Hugh le Coppede, A. John le Copede, M. Copperbeard, 449. Robert Coperberd, N. Corbet, 151. Nicholas Corbet, M. Felicia Corbet, A. Corder, 399.
Adam le Corder, A. Peter le Corder, A. Cordiner, Cordwaner, 351. Durant le Cordwaner, M. Roger le Cordewaner, C. Gervaise le Cordewaner, N. Corfe, 452. John Chauf, A. Geoffrey le Cauf, E. Coroner, 179. John le Coroner, M. Henry le Corouner, A. Corner (1), 179. John le Corner, A. Waiter le Cornur, K. (2), 130, 179. William de la Cornere, A. Robert Atte Cornere, M. Cornmonger, 275. Ralph le Cornmonger, T. Henry le Cornmongere, M. Cornish, 147. William Cornish, D. Margery Cornish, H. Cornthwaite, 121. Cornwall, 169, 147. Geoffrey de Cornwayle, B. Wauter de Cornwaille, M. Cornwallis, 148. Thomas le Cornwaleys, A. Philip le Cornwaleys, L.
Walter le Cornewaleys, X. Corsdebeef, 500. Thomas Cors-de-bœf, A. Thomas Cor-de-beofe, B. Galiena Cordebeof, J. Corser, Corviser, 286, 351. Ralph le Coreviser, A. William le Corviser, B. Durand le Corveser, M. Cosier, 352. Cosser (v. Corser), 286. Cotman (1), 252. Richard Coteman, A. William Coteman, A. (2). Thomas fil. Cotman, A. John fil. Cotman, A. Cotter, 252. William le Cotier, A. Simon le Cotere, F F. Cotterel, Cottrell, 252. William Coterel, M. Joice Cotterill, Z. Cotwife, 252. Beatrix Cotewife, A. Coucher, 360. John le Cochere, A. William Coucher, W 2. Couchman (v. Coachman), 288. Richard Couchman, Z.
William Cowcheman, E E. Coudray, 154. William de Coudraye, M. Peter de Coudray, R. Coulman, 337. Launcelot Coulman, Z. Coulthart, Coulthard, Coulherd, 267. John Colthirde, W 9. Davy Cowthird, W 18. Coultman, 267. Councillor, Councilman, 185. Count, 174. John le Cunte, E. Peter le Counte, G. Richard le Counte, N. Countess, 174, 507. Judetha Commitissa, A. John Countesse, A. Countryman. John Cuntreman, A. Couper, 394. Nicholas le Couper, A. Warin le Couper, M. Couperess, 394. Roger Couperesse, A. Coupman. Richard Coupman, A. Courcy, 151. Court. Baldwin atte Curt, M.
Godfrey ate Curt, M. Cousen, Cousin, Couzen, 429. Richard le Cusyn, A. John le Cosyn, G. Thomas le Cozun, E. Cover, 395. Richard le Cuver, O. Walter le Cuver, E. Michael le Cuver, A. Coverer, 395. Robert le Coverour, A. Adam le Covreur, M. Covetous, 483. Gilbert le Covetiose, M. Cow (1), 490. Thomas le Cu, A. Ralph le Cou, M. (2), 485. Thomas del Cou, M. Coward, 266. William le Kuherde, A. John le Couherde, D. Adam le Cowhirde, M. Cowbeytson, 56. Nicholas Cowbeytson, W 9. Cowden, 118. Thomas Cowden, F F. Nathaniel Cowden, F F. Cowler, 337. Richard le Couhelere, M.
Cowley, 119. Alexander de Couleye, A. Roger de Couele, A. Cowman, 271. Cowper (v. Couper), 389, 394. Willelmus Cowpere, W 19. Cowpman, (v. Coupman) 394. Richard Cowpeman, A. Coxhead (v. Cockshead), 447. Thomas Coxhead, H H. Coxon (v. Cockson), 65. Coyking, 505. John Coyking, M. Crabb, 497. Crabtree. John Crabtre, W 16. William Crabtree, W 16. Crackshield, 462. Thomas Crackyshield. Cramp (v. Crump), 440. William Cramp, Z. Cramphorn, 461. Joseph Cramphorne. Crane, 144, 494. Hugh le Crane, G. William le Crane, E. Crask, 432. Walter le Crask, F F. Crass, 432. Richard le Cras, A.
John le Cras, M. Stephen Crassus, J. Crestolot, 16. Crestolot de Pratis, DD. Crimp (v. Crump), 440. Cripling, 441. William Crypling, A. Crisp, 450. Robert le Crespe, A. Reginald le Crispe, J. Crocker 392. Simon le Crockere, A. Stephen le Crockere, M. Croft, Crofts, 132. Roger de Croftes, A. Agnes de Croftis, A. Croiser, 158. Simon le Croiser, M. William Croiser, H. Croker, 392. Robert Croker, F. John le Croker, M. Crook, 461. Roger le Cruk, M. John Cruke, A. Crookbone, 440. Henry Croakbane, A. Geoffrey Crokebayn, W 4. Crooke (v. Crook), 440. Vincent Crooke, Z. Crookhorn, 461.
John Crokehorn, B. Robert Crokehorn, T. Cropper, 256. Roger the Cropper, A A 2. Robin the Cropper, A A 2. Crosier (v. Crozier), 190. William Croyser, G. Cross, Crosse, 130. John atte Cross, M. Roger del Cros, R. Jordan ad Crucem, A. Crosser, 113. Crossman, 113. Julyan Crosman, Z. Emme Crossman, Z. Crossthwaite, 121. Henry de Crosthweyte, M. John de Crostwyt, R. Crossweller (v. Cressweller), 113. Crotch, Crouch, 130. John atte Cruche, A. Matilda atte Crouche, B. Croucher, 113, 130. John le Crocher, K. John Crowcher, F F. Crouchman, 113, 130. Richard Crocheman, A. William Croucheman, B. Crow, 494. Claricia Crowe, A. Robert Crowe, M.
Crowder, 310. Ricard le Cruder, A. Thomas le Crouder, W 2. Crowfoot, 500. William Crowfoot, F F. Henry Crowfoot, F F. Crowther (v. Crowder), 310. Crozier, 190. Simon le Croyser, M. Mabel le Croyser, G. Cruel, 464, 484. Warin Cruel, A. Cruikshank, 438. Crump, 440. Richard le Crumppe, A. Hugh le Crumpe, T. Cryer, 183. Philip le Criour, E. Wat le Creyer, G. Edward le Creiour, N. Cuckhold. Thomas le Cuckold, A. Matilda Cuckold, A. Cuckoo, 494. Stephen Cuckoo, F F. William Cuckow, F F. Thomas Cuckowe, V 13. Cuddie (v. Cuthbert), 55. Cullen, Culling, 170. John de Coloigne, F F. William de Culinge, A.
Alan Culling, A. Culver, 495. Cuner, 404. Ada le Cuner, A. Henry Cunator, A. Cunerer, 404. Samson le Cunerer, A. Cunning, 139, 469. Cunningham, 139. Cuppage, 215. John Cupage, A A 3. Cupper, 389. William le Cuppere, G. Thomas le Cupper, M. Cure. John le Cure, A. Anne Cure, Z. Curl, 450. Marcus Curie, Z. William Curle, Z. Curling (v. Querdelyun), 499. Currier, 331. Curt, 432. Thomas le Curt, R. William le Curt, L. Curtman. Adam Curtman, A. Curtbrand, 457. Reginald Curtbrant, B.
Curteis, 468, 464. Walkelin le Curteis, C. Richard le Curteis, E. Curtepy, 456. Richard Curtepie, A. William Cortepy, A. Curthose, 456. Robert Curthose, A. Robert Curthose, P P. Curtis, 468, 464. Osbert le Curteys, A. Walter le Curteys, J. Curtmantel, 456. Henry Curtmantel, P P. Curtvalor, 456. Richard Curtevalur, A. Curtwailet, 456. Martin Curtwallet, A. Cuss, Cusson, (v. Custson), 67. Eliza Cusse, W 9. Matilda fil. Cusse, A. Osbert Cuson, A. Cuss Balla, A. Cussot, 67. Cussot Colling, A. Cust, 67. Custe Newman, A. Robert fil. Cust, A. Custe Alver, A. Custance, 67. Custance la Braceresse, A.
Henry fil. Custance, W 6. Reyner Custance, A. Custerson, Custson, 67. William Custson, W 8. Henry fil. Custance, A. Cutbeard, 56. Thomas Cutbert, H. John Cutbert, A. William Cutteberd, W. Cute, 465. Nicholas le Cute, A. Benedict le Cuyt, A. Cuteswain, 505. John Cutsweyn, A. Cuthbert, 56. Cuthbert Capun, R. Cuthbert Ricerson, W 3. Cuthbertson, 56. Elizabeth Cuthbertson, W 16. Thomas Cuthbertson, W 11. Cutler, 282, 390. Walter le Cotiler, A. Peter le Coteler, M. Jordan le Cotiler, N. Cyderer, 261. D’Aeth (v. Death), 168. Daffe, 441. Lefeke Daffe, A. Daft, 441. William Daft, A.
Daisy, 485. Roger Daisye, V 9. Dakins, 188, 83. Dale, Sibill de Dale, D. Thomas de la Dale, M. Dallman, D’Almaine, Dalmaine, (v. Aleman), 165. Custance de Alemania, A. Dalman, 165. John Dalman, F F. William Dalman, F F. Dame, 84. Henry Dame, A. Alexander Dame, M. Damegod, 511. Peter Damegod, M. John Domegode, O. Damsell, 84. Simon Damsell, A. Lawrence Damysell, W 2. Dameson, 84. John Damson, Z. Damet, Damiot, 84. Dametta, A. Dametta fil. Morrell, DD. Henry Damett, R. Hugh Damiot, A. Damietta Avenel, F F. Alice Damyett, Z. Damned-Barebones, 78. Damsel (v. Damsell), 84.
Damosel Skren, Q Q. Dance (v. Dans), 84. Dancer, 307. Herveus le Danser, A. Henry Dawnser, Z. Dancock, 84. John Dancock, G. Dandelyan, 499. William Daundelyun B. Danett, 84. Ralph Danett, P P. Thomas Danet, X X 1. Daniel, 84. Daniel fil. John, E. Richard Danyel, M. Dankin (v. Daniel), 84. Gunnilda Danckin, K. Dann, Danett, 84. Daniel Dann, P P. Henry Dann, P P. Moses Dannett, V 5. John Dannett, V 4. Dans, Danse, 84. John Danse, Z. Danser (v. Dancer), 307. Danson, 84. Christopher Danson, Z. John Danson, Z. Marmaduke Danson, W 11. Dapifer, 211. Henry Dapifer, A.
Sewall Dapifer, J. Darling. Jane Darling, W 20. Dason (v. Davison), 83. Dauber, 250. Roger le Daubere, A. Silvester Daubere, H. David, 83. David Faber, A. Gilbert David, A. Davidson, 83. Robert fil. David, A. Thomas Davydson, M. Davies, 83. Davey ap Davidson, Z. Gerves Daves, W 9. Davy Cowthird, W 18. Davison, 83. James Davyson, W 9. Thomas Davyson, F F. Davitt (v. David), 83. Robert fil. Davit, A. Isabel uxor Davit, A. Dawber (v. Dauber), 250 Dawe, Dawes, 83. Daw le Pestour, H. Dawe le Falconer, DD. Lovekin Dawes, A. Dawkes, 83. Charles Dawkes, F F. Robert Dawkes, V 5.
Dawkins, 83. John Dawkyns, F. Henry Dawkins, Z. Dorken le Bercher, A. Dawkinson, 83. Dawson, 83. Richard fil. Dawe, A. Raffe Dawson, Z. Day, Daye, 273. Cecilia le Day, J. Stephen le Dagh, T. Thomas le Day, M. Dayes, 83. Dayman, 273. Dayson (v. Davison), 83. Daystar. Robert Daysterre, A. Deacon, 188. Senxa le Dekene, A. Philip le Dekene, M. Deakin, 188. Dean (1), 156. Roger le Dene, A. John le Dene, F F. (2), 118. William de la Dene, A. Adam atte Dene, M. Dearden, 118. Ralph de Derneden, A. Dearlove, 47.
William Derelove, F. Richard Dorelove, Z Z. Thomas Dearlove W 16 Dearman (v. Deerman), 235 Death, 168, 510. John Deth, M. Hugh de Dethe, A. Debenham, 17, 146. John de Debenham, A. Giles de Debenham, F F. Debonaire, 467. Philip le Debeneyre, A. Decroix, 153. Deer, 443. Robert le Dere, A. Lawrence le Deer, M. Deerman, 235. John Dereman, A. William Dereman, A. Defend, 103. Defend Outered. Defontaine, 153. Delamere, 153. Reginald de la Mere, A. Grigore de la Mere, A. Delarue, 153. Delilah, 77. Delisle, 153. Deliver, 465. Ralph le Delivere, M M.
Delivery, 77. Deman, 273. Roger Deyman, Z. Demer, 180. Simon le Demer, B. Dempster, 180. Christopher Dempster, Q. Den, 118. Henry de Denn, M. William ate Denne, M. Denis (v. Dennis), 70. Denison (v. Dennison), 70. Denman, 119, 270. Ralph Denmane, Z Z. Dennis (1). Denneyse Fowler, Z. Denes Lister, W 9. Richard Dionys, M. (2), 162. Joel le Deneys, A. Brice le Daneis, M. James le Danoys, X X 1. Dennison (1), 70. Henry Dennison, W 16. John Denyson, W 13. Michael fil. Dionysiæ, A. (2). Walter Denizen, A. Dent-de-fer, 434.
Robert Dent-de-fer, E. Denthorp, 137. Catherine Denthorp, X X 4. Denyer, 119, 270. Departedieu, 511. John Departe-dieu, F F. Deputy. Thomas Deputy, W 20. Derbyshire, 147. Henry Derbyshyre, Z Z. Thomas Derbyshire, Z Z. Derne, 118 n. Dernhouse, 118 n. Thomas Dernehuse, A. Derwentwater, 429. Henry de Derwentwater, M. Thomas de Derwentwater, L. Despencer, Despenser, 175. Thurstan le Despencer, A. Edward le Despenser B. Deus-salvet-dominas, 511. Roger Deus-salvet-dominas, v. p. 511. Devil, Deville, 153. John Deyvyle, A. Thomas de Deyvyle, T. Devonish, 147. John le Deveneis, E. Isabel le Deveneis, A. Nichol le Devenys, M. Dewhurst, 116.
John Derhurste, X X 1. Grace Dewhirste, Z Z. Deye (v. Day), 273. Hugh le Deye, G. Cecily le Deye, F F. Deyville, 153. Goscelin de Eyville, M. John de Eyville, M. Diacony, 188 n. Michell Diacony, X X 1. Diable, 153. Osbert Diabolus, C. Roger le Diable, J. Dibden, 118 n. Randolph de Dependen, A. John Debden, X X 1. Diccons, Dicconson, 65. (1), John fil. Decani, A. Amice fil. Decani, A. (2), John Dyconson, H. Anthonye Dickonsonne, W 9. Dick, 40. Agatha Dick, F F. John Dik, F F. Dickens, 40. William Dicons, F F. Richard Dikkins, F F. Dickenson (v. Dicconson), 16, 40. Robert Dickenson, Z Z. William Dykynson, Z Z.

Ionic in Action Hybrid Mobile Apps with Ionic and AngularJS 1st Edition Jeremy Wilken

  • 1.
    Ionic in ActionHybrid Mobile Apps with Ionic and AngularJS 1st Edition Jeremy Wilken install download https://ebookmeta.com/product/ionic-in-action-hybrid-mobile-apps- with-ionic-and-angularjs-1st-edition-jeremy-wilken/ Download more ebook from https://ebookmeta.com
  • 2.
    We believe theseproducts will be a great fit for you. Click the link to download now, or visit ebookmeta.com to discover even more! Ionic Cookbook Recipes to create cutting edge real time hybrid mobile apps with Ionic 3rd Edition Singh https://ebookmeta.com/product/ionic-cookbook-recipes-to-create- cutting-edge-real-time-hybrid-mobile-apps-with-ionic-3rd-edition- singh/ Xamarin in Action Creating native cross platform mobile apps 1st Edition Jim Bennett https://ebookmeta.com/product/xamarin-in-action-creating-native- cross-platform-mobile-apps-1st-edition-jim-bennett/ Building Versatile Mobile Apps with Python and REST: RESTful Web Services with Django and React 1st Edition Art Yudin https://ebookmeta.com/product/building-versatile-mobile-apps- with-python-and-rest-restful-web-services-with-django-and- react-1st-edition-art-yudin/ Falling Deep Instalove Single Dad Curvy Girl short romance Instalove Steamy Short romance series 1st Edition Fern Fraser https://ebookmeta.com/product/falling-deep-instalove-single-dad- curvy-girl-short-romance-instalove-steamy-short-romance- series-1st-edition-fern-fraser-2/
  • 3.
    Radiography examination 10thEdition Dorothy A. Saia https://ebookmeta.com/product/radiography-examination-10th- edition-dorothy-a-saia/ You Are Mine The Lycans 2 1st Edition Jenika Snow https://ebookmeta.com/product/you-are-mine-the-lycans-2-1st- edition-jenika-snow/ Cognitive Behavioral Therapy for Avoidant Restrictive Food Intake Disorder 1st Edition Jennifer J. Thomas https://ebookmeta.com/product/cognitive-behavioral-therapy-for- avoidant-restrictive-food-intake-disorder-1st-edition-jennifer-j- thomas/ Dark Mire Kildevil Cove Murder Mysteries 2 1st Edition J S Cook https://ebookmeta.com/product/dark-mire-kildevil-cove-murder- mysteries-2-1st-edition-j-s-cook-2/ The Nature of Sufism An Ontological Reading of the Mystical in Islam 1st Edition Milad Milani https://ebookmeta.com/product/the-nature-of-sufism-an- ontological-reading-of-the-mystical-in-islam-1st-edition-milad- milani/
  • 4.
    Philosophical Perspectives onModern Qur ■nic Exegesis Key Paradigms and Concepts 1st Edition Massimo Campanini https://ebookmeta.com/product/philosophical-perspectives-on- modern-qur-anic-exegesis-key-paradigms-and-concepts-1st-edition- massimo-campanini/
  • 6.
    Ionic in Action:Hybrid Mobile Apps with Ionic and AngularJS Jeremy Wilken Copyright For online information and ordering of this and other Manning books, please visit www.manning.com . The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. 20 Baldwin Road PO Box 761 Shelter Island, NY 11964 Email: orders@manning.com ©2016 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher.
  • 7.
    Many of thedesignations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid- free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine. Manning Publications Co. 20 Baldwin Road PO Box 761 Shelter Island, NY 11964 Development editor: Helen Sturgis Technical development editor: Gregor Zurowski Copyeditor: Jodie Allen Proofreader: Katie Tennant Technical proofreader: Matthew Merkes Typesetter: Dottie Marsico Cover designer: Marija Tudor ISBN 9781633430082 Printed in the United States of America
  • 8.
    1 2 34 5 6 7 8 9 10 – EBM – 20 19 18 17 16 15 Brief Table of Contents Copyright Brief Table of Contents Table of Contents Foreword Preface Acknowledgments About this Book About the Cover Illustration Chapter 1. Introducing Ionic and hybrid apps Chapter 2. Setting up your computer to build apps Chapter 3. What you need to know about AngularJS
  • 9.
    Chapter 4. Ionicnavigation and core components Chapter 5. Tabs, advanced lists, and form components Chapter 6. Weather app, using side menus, modals, action sheets, and ionScroll Chapter 7. Advanced techniques for professional apps Chapter 8. Using Cordova plugins Chapter 9. Previewing, debugging, and automated testing Chapter 10. Building and publishing apps Appendix A. Additional resources Index List of Figures List of Tables List of Listings
  • 10.
    Table of Contents Copyright BriefTable of Contents Table of Contents Foreword Preface Acknowledgments About this Book About the Cover Illustration Chapter 1. Introducing Ionic and hybrid apps 1.1. What is Ionic? 1.2. Types of mobile experiences 1.2.1. Native mobile apps
  • 11.
    1.2.2. Mobile websites(web apps) 1.2.3. Hybrid apps 1.3. Understanding how the Ionic stack works 1.3.1. Ionic: user interface framework 1.3.2. Angular: web application framework 1.3.3. Cordova: hybrid app framework 1.4. Why Ionic? 1.4.1. Why Ionic is good for developers 1.4.2. Drawbacks of using Ionic 1.5. Prerequisites for building apps with Ionic 1.5.1. Experience with HTML, CSS, and JavaScript 1.5.2. Experience with web applications and Angular 1.5.3. Access to a mobile device
  • 12.
    1.6. Supported mobiledevices and platforms 1.6.1. Apple iOS 1.6.2. Google Android 1.7. Summary Chapter 2. Setting up your computer to build apps 2.1. Quick-start guide 2.1.1. Setting up your development environment 2.1.2. Starting a new project 2.1.3. Project folder structure 2.1.4. Previewing in a browser 2.2. Setting up previewing environments 2.2.1. Installing platform tools 2.2.2. Setting up emulators
  • 13.
    2.2.3. Setting upa connected device 2.2.4. Adding a platform to the project 2.2.5. Previewing in an emulator 2.2.6. Previewing on a mobile device 2.3. Summary Chapter 3. What you need to know about AngularJS 3.1. AngularJS at a glance 3.1.1. Views and templates: describing the content 3.1.2. Controllers, models, and scope: managing data and logic 3.1.3. Services: reusable objects with methods 3.1.4. Two-way data binding: sharing between controller and view 3.2. Setting up for the chapter project
  • 14.
    3.2.1. Getting theproject files 3.2.2. Starting the development server 3.3. Basics for an Angular app 3.4. Controllers: for controlling data and business logic 3.5. Loading data: using the controller to load and display data in the view 3.5.1. Filters: convert data to display in the view 3.6. Handling click events to select a note 3.7. Create a directive to parse a note with Markdown 3.8. Using models to manage content editing 3.9. Saving and deleting a note 3.9.1. Adding the save() method 3.9.2. Using Angular forms for validation
  • 15.
    3.9.3. Adding theremove method 3.10. Continuing with Angular 3.11. Chapter challenges 3.12. Summary Chapter 4. Ionic navigation and core components 4.1. Set up chapter project 4.1.1. Create a new app and add code manually 4.1.2. Clone the finished app and follow along 4.2. Setting up the app navigation 4.2.1. Designing good app navigation 4.2.2. Declaring the app views with the state provider 4.3. Building the home view 4.3.1. Creating a content container
  • 16.
    4.3.2. Using CSScomponents and adding a simple list of links 4.3.3. Adding icons to the list items 4.4. Using a controller and model for the reservation view 4.5. Loading data into the weather view 4.5.1. Adding the template for the weather view 4.5.2. Create weather controller to load external data 4.5.3. Adding a loading indicator to the weather view 4.6. Infinite scroll with cards for the restaurants view 4.7. Using the slidebox component for app intro tour 4.8. Chapter challenges 4.9. Summary Chapter 5. Tabs, advanced lists, and form components 5.1. Set up chapter project
  • 17.
    5.1.1. Create anew app and add code manually 5.1.2. Clone the finished app and follow along 5.2. ionTabs: adding tabs and navigation 5.2.1. Adding tabs container and three tabs to the app 5.3. Adding ionNavView for each tab 5.4. Loading and displaying current Bitcoin rates 5.5. Display a currency’s details in the same tab view 5.6. Refresh the Bitcoin rates and display help 5.6.1. ionRefresher: pull-to-refresh the rates 5.6.2. $ionicPopover: showing help in a popover 5.7. Charting historical data 5.7.1. Setting up third-party libraries 5.7.2. History tab template using Highcharts and a select box to toggle currency
  • 18.
    5.7.3. History tabcontroller loads data and sets up chart 5.8. Currencies tab with list reordering and toggles 5.8.1. ionReorderButton: adding reordering to a list 5.8.2. ionToggle: adding toggles to list items 5.9. Chapter challenges 5.10. Summary Chapter 6. Weather app, using side menus, modals, action sheets, and ionScroll 6.1. Setting up the chapter project Create a new app and add code manually Clone the finished app and follow along 6.2. Setting up the side menu and views 6.3. Searching for locations
  • 19.
    6.4. Adding settingsview and data services 6.4.1. Create services for locations and settings 6.4.2. Show favorites in side menu list 6.4.3. Adding the settings template 6.4.4. Settings view controller 6.5. Setting up the weather view 6.5.1. Get a Forecast.io API key 6.5.2. Using Ionic CLI proxies 6.5.3. Add the weather view controller and template 6.6. ionScroll: building custom scrolling content 6.6.1. Using ionScroll with paging 6.6.2. Creating filters for forecast data 6.7. Action sheet: displaying a list of options
  • 20.
    6.8. ionModal: displayingthe sunrise and sunset chart 6.8.1. Setting up a modal 6.8.2. Collection repeat: making the sunrise and sunset list fast 6.9. Popup: alert and confirm changes to favorites 6.10. Chapter challenges 6.11. Summary Chapter 7. Advanced techniques for professional apps 7.1. Set up chapter project 7.1.1. Get the code 7.2. Custom Ionic styling using Sass 7.2.1. Setting up Sass 7.2.2. Customize Ionic with Sass variables 7.2.3. Using Sass for your own styling
  • 21.
    7.3. How tosupport online and offline mode 7.4. Handling gesture events in Ionic 7.4.1. Listen for events with Ionic event directives 7.4.2. Listen for events with $ionicGesture service 7.4.3. Available gesture events 7.5. Storing data for persistence 7.5.1. Using localStorage 7.5.2. Using Web SQL, IndexedDB, and SQLite 7.5.3. Other options from Cordova plugins 7.6. Building one app for multiple platforms 7.6.1. One size doesn’t always fit all 7.6.2. Adapt styling for a platform or device type 7.6.3. Adapt behavior for a platform or device type
  • 22.
    7.7. Modify defaultbehaviors with $ionicConfigProvider 7.8. Summary Chapter 8. Using Cordova plugins 8.1. Cordova plugins 8.1.1. Considerations when using plugins 8.1.2. Installing plugins 8.1.3. Using plugins 8.1.4. Using plugins with emulators 8.1.5. Plugins and platform limitations 8.1.6. Angular and Cordova gotchas 8.1.7. Solutions to common issues with devices or emulators 8.2. ngCordova 8.2.1. Installing ngCordova
  • 23.
    8.3. Using acamera and photos in the resort app 8.3.1. Setting up the camera project 8.3.2. Adding the camera plugin 8.3.3. Creating the photo book view 8.4. Using geolocation in the weather app 8.4.1. Setting up the geolocation example 8.4.2. Adding the geolocation plugin and ngCordova 8.4.3. Requesting a user’s location 8.4.4. Improving the weather app 8.5. Chapter challenges 8.6. Summary Chapter 9. Previewing, debugging, and automated testing 9.1. The differences among previewing, debugging, and testing
  • 24.
    9.1.1. Why testingis important 9.2. Setting up the chapter example 9.3. Additional ways to preview apps 9.3.1. Ionic Lab 9.3.2. Ionic View 9.4. Debugging from a device 9.4.1. Debugging from an Android device 9.4.2. Debugging from an iOS device or emulator 9.5. Automated testing 9.5.1. Unit tests with Jasmine and Karma 9.5.2. Integration tests with Protractor and WebDriver 9.6. More test examples 9.7. Summary
  • 25.
    Chapter 10. Buildingand publishing apps 10.1. Building for production: an overview 10.2. Building icons and splash-screen assets 10.2.1. Creating the primary icons 10.2.2. Creating the splash-screen images 10.3. Preparing your app for production 10.4. Building Android apps and publishing to Google Play 10.4.1. Setting up for signing your apps 10.4.2. Build the release app file 10.4.3. Signing the APK file 10.4.4. Optimize the APK 10.4.5. Building an updated version of your app 10.4.6. Creating the app listing and uploading the app to the Play Store
  • 26.
    10.4.7. Updating theapp listing or uploading a new version 10.4.8. Using alternative Android stores 10.5. Building iOS apps and publishing to the AppStore 10.5.1. Set up certificates and ID 10.5.2. Set up an app ID identifier 10.5.3. Create listing in iTunes Connect 10.5.4. Build and upload app with Xcode 10.5.5. Complete the iTunes Connect app listing 10.5.6. Updating the app 10.6. Summary Appendix A. Additional resources A.1. Ionic
  • 27.
    A.2. Angular A.3. Cordova A.4.Blogs Index List of Figures List of Tables List of Listings Foreword This book is the result of nine months of dedicated work by Jeremy Wilken, a top Ionic developer with whom we’ve had the pleasure of collaborating since we built Ionic and open sourced it in 2013. This book provides an excellent introduction to the Ionic Open Source SDK, and it also offers plenty of rich information for experienced Ionic developers. Jeremy built three Ionic apps for this book, using just about every Ionic component in existence. Because of that, the book is a solid reference for using the components in an integrated way. The first app, which a resort might use to provide value for guests, incorporates our slidebox, lists, cards, content containers, and basic navigation. The second, a Bitcoin market app, provides real-time
  • 28.
    currency rates forBitcoin and uses pull-to-refresh, popovers, tabs, charts, advanced lists, and nested views. The third, a weather app, uses modals, a custom scroll area (paginated scrolling), externally loaded data, side menus, and a search view. The apps are unique and robust. They are 80% developed for deployment to an app store, with the obvious missing pieces listed at the end of the chapter to challenge readers to complete them. For experienced developers, the book explains how to target a platform if, for example, they want to use the action sheet in iOS and the popover in Android. The book also provides background about the Ionic ecosystem, explaining how to leverage Cordova and plugins; discussing Ionic’s platform services, such as Ionic View; and providing instruction about how to improve Ionic development with advanced techniques and testing. Jeremy provides great examples and insight into how to set up and write your own tests. Prior to creating Ionic with Max Lynch and Ben Sperry, I joined their company to help develop their already successful products, including Codiqa, which was a jQuery Mobile drag-and-drop interface builder. As we worked on Codiqa, we realized devices and browsers were not being used to their full potential, and users were continually asking for more from our tools. Eventually, we decided to create our toolkit for hybrid applications, in order to push mobile devices to their limits. With the added power of Angular, we’ve been able to bring hybrid mobile app development to a place where it presents a viable challenge to native application development. Since we released the alpha version of Ionic in 2013, I couldn’t be more proud of how quickly the development community has embraced Ionic and helped to grow it even further. The part I’m most excited about is that Ionic is only getting started, and we’ll continue to grow and support it, so that developers can build high-performing apps quickly and easily. You’ll find this book to be both an informative introduction to Ionic and an in-depth guide to building better apps, depending on your
  • 29.
    experience with Ionicand your needs. Thank you for being part of the Ionic community. Enjoy! ADAM BRADLEY COCREATOR OF THE IONIC FRAMEWORK Preface The importance of mobile may be clear today, but even just a few years ago it was debatable if building mobile apps was worth the time and cost. As of 2015 the number of mobile apps available in the Apple App and Google Play Stores is well over a million. Over six times more phones are sold than desktop/laptop devices, and the number of tablets sold should exceed desktop/laptop devices in 2015. Mobile is here, and here to stay. Back in 2013, the world of mobile app development was focused primarily on building native apps. These native apps were written in Java or Objective C, and required developers to learn those languages, platform tools, SDKs, and so forth. For a web developer like myself, this presented a barrier to getting into mobile app development. It seemed like the mobile web was focused on building responsive websites, not mobile apps. The idea of a hybrid app (which is a native app built using web technologies) was usually given very little credit due to the quality of older devices and browsers that made hybrid apps sluggish, and design practices that made the apps have a visual disconnect from native apps. The founders of Ionic saw an opportunity. They realized that mobile devices were improving, quite rapidly in fact, and that hybrid apps could be a serious contender with native apps. They aimed to open the door for developers who want to build native-feeling mobile apps, while using the same languages they already know from web
  • 30.
    development. Ionic buildson the shoulders of other open source projects, Cordova and Angular. Ionic leverages these projects into a more unified platform for building hybrid mobile apps. As of version 1.0, it’s clear that Ionic has come of age and empowers web developers to build mobile apps. The Ionic team has become fond of calling Ionic the “missing SDK” for hybrid apps. As I’ve finished this journey of writing Ionic in Action , I can see the full vision of Ionic coming to life. The core of what makes Ionic so powerful is the open source components explored in this book. In addition, a platform of services is being built around it for features such as push notifications, analytics, beta testing, and more. I hold open source projects with well-managed development and community input in high regard, and Ionic is certainly in this category (in the top 40 starred projects on GitHub, and it uses Angular, which is in the top 3 as of this writing). Hundreds of thousands of apps have been created with Ionic, and several apps have even been featured in the major app stores. Writing a book about Ionic was a logical extension of my desire to share my learning experience on how to become a mobile app developer. I started with writing the core parts of this book around a learning pathway that talked about each feature of Ionic and explored them each in isolation. I got up to six chapters done, but it felt like the wrong approach. I like to see something working that I can interact with, and even touch, as is possible in the case of mobile apps. So after writing the first draft of the three core chapters in the book, I threw them aside and rewrote them from scratch using a very direct, build-the-app-as-you-go approach. It feels much more like the kind of learning path I followed when I built my first Ionic app, and I hope that you find the chapters approachable. In fact, I hope you find that same care applied to all of the chapters in this book.
  • 31.
    I learned aboutIonic through trial and error, since the documentation has always been a good guide. When I had a project at work that required a mobile app, I was able to put Ionic into service and build a prototype within a day. Working through the early days of Ionic, I regularly updated my app to keep up with the changes and new features, and I was often impressed with the attention to detail and rapid pace of innovation. Over the months of beta releases, Ionic matured its API and design into the polished and consistent form it is today. The future of Ionic is one that includes even more community-driven contributions and components, more platform services, and continued progress in performance and quality. I can’t wait to see what you build, and I’m glad to be with you on your own journey to become a mobile app developer with Ionic. Acknowledgments In this book I share many things that I’ve learned over the years, and I owe many for providing training, guidance, and support along the way. While it is impossible to track everyone who has had some impact on my growth that led to this book, I know those who have made the biggest impact are people heavily involved in open source communities. Those who write, maintain, or support open source projects and communities have my highest respect and gratitude. Thank you, Manning, and the wonderful staff who have worked hard to make this book a reality. They say it takes a village to raise a child, and so it is also with publishing a book. Robin de Jongh was instrumental in getting this book started, and for stimulating my excitement to write. My sincere thanks goes to Helen Stergius for her tireless editing, late-night brainstorming, and positive attitude and energy that pushed me through the major writing phase. I thank the rest of the team who helped bring the book to life through publishing and reviewing, particularly Gregor Zurowski, Katie
  • 32.
    Tennant, Mary Piergies,Janet Vail, Matt Merkes, Candace Gillhoolley, Kevin Sullivan, Donna Clements, and Jodie Allen. Many peer reviewers helped by poking holes in some of the weaker areas of early drafts or inspired my confidence to make positive changes over time. Many thanks to Andrea Prearo, Barbara Fusinska, Charlie Gaines, Cho S. Kim, Chris Graham, Gareth van der Berg, Giuseppe de Marco, Jeff Cunningham, Ken Rimple, Kevin Liao, Lourens Steyn, Patrick Dennis, Rabimba Karanjai, Satadru Roy, and Wendy Wise—you suggested many improvements for me to chew on, and the manuscript would not be as strong without your help. Many MEAP reviewers provided some great feedback on the forum. It’s pretty neat that people are willing to buy a book and engage with the author on how to make it better. If you ever have the chance to meet anyone from the Ionic team, you’ll find them to be some of the most dedicated and genuine people in tech and open source. I owe the Ionic team a great deal of thanks for making Ionic (and thus the opportunity to write a book on it!), and for their great efforts in reviewing and answering questions along the way. In particular, I’d like to thank Adam Bradley, Ben Sperry, Katie Ginder-Vogel, and Mike Hartington for the many emails, Skype calls, or in-person chats we’ve had. The Ionic community grows daily due to your tireless efforts and fantastic work. And special thanks to Adam for penning the foreword to my book. Finally, there’s always the underlying support of my wife Linda. In the future, I promise not to write a book when we have a newborn (without your permission of course). It’s hard to imagine the amount of time and energy a book requires until you do it, and you’ve been supportive and understanding when I needed to hide in my office until a draft was done. I love you and our baby always. About this Book
  • 33.
    Ionic brings togetherseveral existing projects with its own set of tools so web developers can build mobile apps. Ionic has gained a strong following and is a top choice for mobile app developers. Ionic in Action is a hands-on, example-driven guide to Ionic. During the course of the book, you’ll build several nearly complete apps that showcase almost every feature of Ionic. The documentation for Ionic is very good, but it doesn’t provide much direction on how to orchestrate a large app. When you build an app with Ionic, you actually use a combination of technologies (primarily Angular and Cordova). To ensure you’re really capable of building mobile apps with Ionic, the book provides chapters on those technologies. There’s much more that could be said about Angular and Cordova, which is why entire books have been written about them, but this book tries to do them justice and provides enough foundational knowledge to get you started. Mobile apps often require access to external data. It’s helpful to understand how APIs are able to provide data for web applications. Ionic in Action covers how to utilize RESTful APIs through several of the examples. Who should read this book This book is intended for web developers who have a foundation in building web applications. Knowledge of CSS, HTML, and JavaScript is expected. You should understand how to write HTML to structure your content and how to use CSS to modify the styling. JavaScript experience should include concepts such as asynchronous behavior, objects, and primitives. No prior knowledge of Cordova or Angular is required. It’s helpful to have some background in building web applications in a browser
  • 34.
    with JavaScript, butthis experience can also be gained through careful study of the book examples. Access to a mobile device is necessary to properly build and test apps. For Ionic, the device needs to be an iOS or Android device. Having one of each is very helpful! How the book is organized In the 10 chapters, I cover the entire process from setting up your environment to publishing your finished app: Chapter 1 is a detailed overview of Ionic, the other technologies used together to create hybrid apps, and why Ionic is a great choice. Chapter 2 gets you through the setup process for all of the tools used in the book, and helps you create your first mobile app using one of the default starter templates. Chapter 3 provides a primer for developers who aren’t familiar with Angular or who’d like to brush up on their knowledge because Ionic is built with Angular. Chapter 4 walks you through creating a mobile app for a fictitious resort that includes basic app navigation and uses a number of visual components such as cards, a list with infinite scrolling, loading indicators to gracefully load data, and a slidebox. You’ll learn about the basics of building an Ionic app using a hands-on approach while building your first app. Chapter 5 takes you through building another mobile app for tracking Bitcoin currency prices. The Bitcoin app uses tabs, a pull-to-refresh feature, several form components, advanced lists with swipe options, and a chart for quotes over time. The focus in this chapter is how to structure an app using tabs, and how to leverage many more Ionic components. Chapter 6 helps you build a weather app. The chapter digs into using the side menu for navigation, modals for presenting tangential information, action sheets to display option buttons,
  • 35.
    and a customscrolling behavior. This chapter rounds out your understanding of the Ionic components and primary design elements used in Ionic apps. Chapter 7 introduces you to some advanced techniques that are useful for building hybrid apps. You’ll learn about how to persist user data, customize Ionic components, work in online or offline mode, configure Ionic’s default settings, adapt your apps to have platform-specific functionalities, and handle gesture events. Chapter 8 looks at how to use Cordova to allow Ionic apps to support platform features, such as sensor data. The chapter uses two of the apps you built in earlier chapters to demonstrate how to add support for geolocation for the weather app and camera support for the resort app. You’ll learn about ngCordova and how to easily integrate with any Cordova plugin. Chapter 9 helps you set up testing for your Ionic app. The chapter introduces two primary testing approaches: unit testing for testing your business logic, and integration testing for testing the overall app functionality. You’ll also learn about Ionic View and Ionic Lab to help you preview your apps. Chapter 10 walks you through the process of submitting your apps to the stores. It covers tips and techniques for preparing your apps for production, adding necessary graphics and assets, and ultimately how to properly build your apps for both iOS and Android. Code All of the code for this book is found on GitHub at https://github.com/ionic-in-action . The source code is open source, so you’re able to modify it for your own purposes. I only ask that you don’t try to publish the example apps to the app stores. Most of the code is found in code listing blocks, except in cases where the code is short and should already be familiar. The code is well annotated to provide context and descriptions for individual
  • 36.
    lines. Sometimes codeis in bold font to highlight code that has changed from previous steps in the chapter, such as when a new feature adds to an existing line of code. Author Online Purchase of Ionic in Action includes free access to a private web forum run by Manning Publications where you can make comments about the book, ask technical questions, and receive help from the author and from other users. To access the forum and subscribe to it, point your web browser to www.manning.com/books/ionic-in- action . This page provides information on how to get on the forum once you’re registered, what kind of help is available, and the rules of conduct on the forum. Manning’s commitment to our readers is to provide a venue where a meaningful dialog between individual readers and between readers and the author can take place. It’s not a commitment to any specific amount of participation on the part of the author, whose contribution to the forum remains voluntary (and unpaid). We suggest you try asking the author some challenging questions lest his interest stray! The Author Online forum and the archives of previous discussions will be accessible from the publisher’s website as long as the book is in print. About the Cover Illustration The figure on the cover of Ionic in Action is captioned “Summer Habit of a Moor of Morocco 1695.” The illustration is taken from Thomas Jefferys’ A Collection of the Dresses of Different Nations, Ancient and Modern (4 volumes), London, published between 1757 and 1772. The title page states that these are hand-colored copperplate engravings, heightened with gum arabic. Thomas Jefferys (1719–1771) was called “Geographer to King George III.” An
  • 37.
    English cartographer whowas the leading map supplier of his day, Jeffreys engraved and printed maps for government and other official bodies and produced a wide range of commercial maps and atlases, especially of North America. His work as a mapmaker sparked an interest in local dress customs of the lands he surveyed and mapped. This diversity of dress is brilliantly displayed in this four-volume collection. Fascination with faraway lands and travel for pleasure were relatively new phenomena in the late eighteenth century, and collections such as this one were popular, introducing both the tourist as well as the armchair traveler to the inhabitants of other countries. The diversity of the drawings in Jeffreys’ volumes speaks vividly of the uniqueness and individuality of the world’s nations 200 to 300 years ago. Dress codes have changed since then, and the diversity by region and country, so rich at the time, has faded away. It is now hard to tell the inhabitant of one continent apart from another. Perhaps, trying to view it optimistically, we have traded a cultural and visual diversity for a more varied personal life—or a more varied and interesting intellectual and technical life. At a time when it is hard to tell one computer book from another, Manning celebrates the inventiveness and initiative of the computer business with book covers based on the rich diversity of regional life of centuries ago, brought back to life by Jeffreys’ pictures. Chapter 1. Introducing Ionic and hybrid apps This chapter covers Why you should choose Ionic and how it benefits you What Ionic is and how it uses Angular and Cordova Why hybrid apps are an ideal choice for mobile development Introduction and requirements for Android and iOS platforms
  • 38.
    Building mobile appshas become an essential skill for many developers, and with Ionic you’ll be able to build hybrid mobile apps that look and feel just like native mobile apps. A hybrid app is a type of mobile app that uses a browser window to display its interface. Ionic is a combination of tools and utilities that enables developers to quickly build hybrid mobile apps using the same technologies used to build websites and web applications, primarily HTML, CSS (Cascading Style Sheets), and JavaScript. Ionic works by embedding a web application inside of a native app by using Cordova. It’s designed to work together with Angular to create a web application for the mobile environment, and includes support for mobile features like user interface controls and responding to touch input. This book aims to give developers the skills necessary to build Ionic mobile apps. I’ll teach you the basics of setting up your projects correctly and how to build rich interfaces, and demonstrate with real-world style examples. I’ll help you set up your build, testing, and deployment processes to get your app ready for production. But before we get too far along, we should dig deeper into Ionic and why it’s a solid choice for building hybrid mobile apps. 1.1. What is Ionic? Ionic is a combination of technologies and utilities designed to make building hybrid mobile apps fast, easy, and beautiful. Ionic is built on an ecosystem that includes Angular as the web application framework and Cordova for building and packaging the native app. We’ll dig into each in more detail later, but figure 1.1 shows you an overview of these technologies and how they stack. Let’s take a moment to cover the basics of how the technology stack works on a device. Figure 1.1. The stack of technologies used with the Ionic framework, and how they fit together
  • 39.
    In figure 1.1, the stack begins with the user opening the app from the device. Imagine this is an iPhone running iOS or a Nexus 10 running Android. Let’s break down each of these pieces in more detail: Device— This loads the app. The device contains the operating system that manages the installation of apps that are downloaded from the platform’s store. The operating system also provides a set of APIs for apps to use to access various features, such as the GPS location, contacts list, or camera. Cordova app wrapper— This is a native app that loads the web application code. Cordova is a platform for building mobile apps that can run using HTML, CSS, and JavaScript inside of a native app, which is known as a hybrid mobile app . It’s a utility for creating a bridge between the platform and the application. It creates a native mobile app that can be installed (called the app wrapper in figure 1.1 ), and it contains what’s called a WebView (essentially an isolated browser window) with a JavaScript API that the web application will run inside. Cordova JavaScript API— This is the bridge that communicates between the app and the device. The app wrapper has access to both the web application and the native platform through the JavaScript API. This is primarily handled behind the scenes, and Cordova ultimately generates the native app for you. Angular— This is the web application that controls the app routing and function. The Angular web application runs inside of
  • 40.
    the WebView. Angularis a very popular framework for building powerful web applications. Angular is primarily used to manage the web application’s logic and data. Ionic— This provides the user interface components rendered in the app. Ionic is built on top of Angular, and is primarily used to design the user interface and experience. This includes the visual elements such as tabs, buttons, and navigation headers. These interface controls are the heart of Ionic, and provide a near-native interface inside of a hybrid app. Ionic also includes a number of additional utilities and features that help manage your app from creation to previewing to deployment. The combination of these technologies makes Ionic a very feature- rich platform for building your mobile apps. Now that you have a bird’s-eye view of Ionic and the technology, let’s look a little closer at three main types of mobile experiences and why Ionic’s approach is beneficial. 1.2. Types of mobile experiences It’s important to understand there are several ways to build applications for mobile devices, and each has its strengths and weaknesses. There are three basic types: native apps, mobile websites, and hybrid apps. We’ll look at each of these in detail to clarify the differences. In figure 1.2 , you can see how the three types compare in design and architecture. The figure also shows how each app would access a database or web service API to load data. Figure 1.2. Native apps, mobile websites, and hybrid app architectures compared side by side
  • 41.
    1.2.1. Native mobileapps To create native apps, developers write code in the default language for the mobile platform, which is Objective C or Swift for iOS and Java for Android. Developers compile the app and install it on a device. Using the platform software development kit (SDK), the app communicates with the platform APIs to access device data or load data from an external server using HTTP requests. Both iOS and Android provide a set of tools to enable developers to leverage the platform features in a controlled manner through predefined APIs. There are tools, both official and unofficial, that can aid in the development of native apps. It’s common for developers to use frameworks in their native app to make development easier. Native app advantages
  • 42.
    Native apps comewith a number of benefits over hybrid apps and mobile websites. The benefits revolve around being tightly integrated with the device platform: Native APIs— Native apps can use the native APIs directly in the app, making the tightest connection to the platform. Performance— They can experience the highest levels of performance. Same environment— They’re written with native APIs, which is helpful for developers familiar with the languages used. But there are also a number of disadvantages. Native app disadvantages The disadvantages of native apps are generally the level of difficulty in developing and maintaining them: Language requirements— Native apps require developer proficiency in the platform language (for example, Java) and knowledge of how to use platform-specific APIs. Not cross-platform— They can only be developed for one platform at a time. High level of effort— Typically, they require more work and overhead to build, which increases costs. Native apps may be best suited for developers who have a command of Java and Objective C, or for teams with extensive resources and a need for the benefits of native apps. 1.2.2. Mobile websites (web apps) Mobile websites, or web apps, work well on a mobile device and are accessed through a mobile browser. Web apps are websites viewed on a mobile device in a mobile browser, designed specifically to fit a mobile device screen size. Figure 1.3 shows a couple of examples.
  • 43.
    Figure 1.3. Mobilewebsites: a responsive site from the Boston Globe (left) and a mobilespecific website from eBay (right) Some website designers develop a second version specifically for use on a mobile device. Perhaps you’ve used your mobile device to visit a website and were redirected to a version with limited features, such as visiting eBay and ending up on the http://m.ebay.com subdomain. On other websites, such as www.bostonglobe.com , you may find that the design adjusts to your device’s form factor and
  • 44.
    screen size. Thisis accomplished with a technique called responsive design . The website content will resize and flow according to the browser window size, and some may even be hidden. Mobile website advantages Mobile websites enjoy a number of benefits, primarily in the level of effort and compatibility on devices: Maintainability— Mobile websites are easy to update and maintain without the need to go through an approval process or update installations on devices. No installation— Because they exist on the internet, they don’t require installation on mobile devices. Cross-platform— Any mobile device has a browser, allowing your application to be accessible from any device. As with native apps, there are also a number of disadvantages. Mobile website disadvantages Mobile websites run inside of a mobile browser, which is the major cause of limitations and disadvantages: No native access— Because mobile websites are run in the browser, they have no access to the native APIs or the platform, just the APIs provided by the browser. Require keyboard to load— Users have to type the address in a browser to find or use a mobile website, which is more difficult than tapping an icon. Limited user interface— It’s difficult to create touch-friendly applications, especially if you have a responsive site that has to work well on desktops. Mobile browsing decline— The amount of time users browse the web on a mobile device is declining, while app use is increasing.
  • 45.
    Mobile websites canbe important even if you have a mobile app, depending on your product or service. Research shows users spend much more time using apps compared to the mobile browser, so mobile websites tend to experience lower engagement. 1.2.3. Hybrid apps A hybrid app is a mobile app that contains an isolated browser instance, often called a WebView , to run a web application inside of a native app. It uses a native app wrapper that can communicate with the native device platform and the WebView. This means web applications can run on a mobile device and have access to the device, such as the camera or GPS features. Tools that facilitate the communication between the WebView and the native platform make hybrid apps possible. These tools aren’t part of the official iOS or Android platforms, but are third-party tools such as Apache Cordova, which is used in this book. When a hybrid app compiles, your web application transforms into a native app. Hybrid app advantages Hybrid apps have a few advantages over mobile websites and native apps that make hybrid apps a great platform for building apps: Cross-platform— You can build your app once and deploy it to multiple platforms with minimal effort. Same skills as web development— They allow you to build mobile apps using the same skills already used to develop websites and web applications. Access to device— Because the WebView is wrapped in a native app, your app has access to all of the device features available to a native app. Ease of development— They’re easy and fast to develop, without the need to constantly rebuild to preview. You also have access to the same development tools used for building websites.
  • 46.
    Hybrid apps providea robust base for mobile app development, yet still allow you to use the web platform. You can build the majority of your app as a website, but anytime you need access to a native API, the hybrid app framework provides a bridge to access that API with JavaScript. Your app can detect swipes, pinches, and other gestures just like clicks or keyboard events. But there are a few disadvantages, as you might expect. Hybrid app disadvantages Hybrid apps have a few disadvantages due to the restrictions that are placed on WebViews and limitations of native integrations: WebView limitations— The application can only run as well as the WebView instance, which means performance is tied to the quality of the platform’s browser. Access native features via plugins— Access to the native APIs you need may not be currently available, and may require additional development to make a plugin to support it. No native user interface controls— Without a tool like Ionic, developers would have to create all of the user interface elements. With Ionic, you can build hybrid apps so you can leverage the knowledge and skills with which web developers are already familiar. 1.3. Understanding how the Ionic stack works There are several technologies that can be used when building hybrid apps, but with Ionic there are three primary ones: Ionic, Angular, and Cordova. Figure 1.4 outlines how these pieces can work in tandem to facilitate opening the camera from an Ionic app. Figure 1.4. How Ionic, Angular, and Cordova work together for a hybrid app
  • 47.
    Let’s break downeach of the steps in figure 1.4 : 1 . The user taps on a button (which is an Ionic component). 2 . The button calls the Angular controller, which calls Cordova through the JavaScript API. 3 . Cordova communicates with the device using native SDKs and requests the camera app. 4 . The device opens the camera app (or prompts for permission if necessary), and the user is able to take a picture. 5 . When the user confirms the photo, the camera app closes and returns the image data to Cordova. 6 . Cordova passes the image data back to the Angular controller. 7 . The visual display of the image is updated inside of Ionic components.
  • 48.
    This quick outlineof how the pieces communicate can demonstrate how an Ionic app is really a stack of technologies that work in concert. Don’t worry if some of these terms are unknown to you— we’ll cover them throughout this book. The key here is to see how your app is able to leverage the power of the device. Let’s look at each one more closely. 1.3.1. Ionic: user interface framework Ionic’s primary feature is a set of user interface controls that are missing from HTML but are common on mobile apps. Imagine a weather app that shows current conditions based on the user’s location. Ionic provides a number of user interface components such as a slidebox that allows a user to swipe between several boxes of information like temperature, forecasts, and weather maps. These components are built with a combination of CSS, HTML, and JavaScript, and they behave like the native controls you’re accustomed to using. Common examples include these: Side menus that slide in from the side Toggle buttons Mobile tabs In figure 1.5 you can see a screenshot of one of the sample apps you’ll build later in the book. It shows how many different Ionic components are used on the screen at once to create a powerful user interface. Figure 1.5. How parts of Ionic work together to create a usable interface
  • 49.
    Ionic is anopen source project that’s primarily developed by the Ionic team. Its popularity has grown very quickly since it was launched in November 2013; it has become a primary choice for building hybrid apps. Over 20,000 apps are launched with Ionic each month. Ionic is provided under the MIT license and is found at http://ionicframework.com .
  • 50.
    Exploring the Varietyof Random Documents with Different Content
  • 51.
    Beatrix le Clerc,A. Milo le Clerk, A. Clerkson, 65. Geoffrey fil. Clerici, A. William Clerkessone, M. Clerkwright, 402. Robert Clerkwright, S. Cleve, 124. Henry de la Clyve, A. Thomas de Cleve, F F. Cleveland, 124. Clever (v. Cleaver), 154. William le Clever, F F. Clifden, 124. Raymund de Clifden, A. Thomas de Cliffedon, A. Cliffe, 124. Thomas del Clif, A. Henry de Clyf, M. Clifford, 124. Robert de Clyfford, M. Roger de Clyfford, E. Cliffshend, 114. John de Cleveshend, E. Martin de Clyveshend, A. Clifton, 124. Ralph de Clifton, A. Gervase Clifton, X X 1. Clive, 124. Humfrey de la Clive, A. William atte Clyve, M.
  • 52.
    Cliveley, 124. John deClyveley, A. Nicholas Cleveley, X X 1. Clockmaker, 401. Thomas Clokmaker, Y. Cloisterer, 191. Johannes Closterer, W 12. Clothier, Clothman. Robert Clothman, X X 2. Clough, 124. Roger Clough, A. Richard Cloughe, Z. Clouter, 352. John le Clutere, N. Stephen le Clutere, N. Cloutman (v. Clouter), 352. Clowes, 124. John Clowes, Z. Thomas Clowes, Z. Coachman, 288. Dorothy Coachman, V 5. Telney Coachman, V 5. John Coacheman, Z. Cobb, 124. Robert de Cobbe, M. Milisent Cobbe, A. Cobbett (v. Cuthbert), 56. Cobbler, 352. Robert le Cobeler, A. Edward Cobler, H. Cobden, 124.
  • 53.
    Godfrey de Coppden,M. John Copedenne, A. Cobham, 124. Reginald de Cobeham, M. John de Cobbeham, A. Cobley, 124. Cobwell, 124. John de Cobwell, M. Cock (1), 145. Peter atte Cok, B. William atte Cok, G. (2), 485. John le Koc, A. Katerina le Cok, B. Cockaigne, Cockayne, 148. Alan de Cokayne, A. Richard de Cockayne, A. Cocker, 307. Simon le Cockere, A. William le Kokere, A. John le Coker, M. Cockerell, 494. Giot Cockerel, M. Jac. Quoquerell, C. Cockeyn (v. Cockaigne), 148. Cockin (v. Cockaigne), 148. Richard Cokyn, H. Cockman, 307. Maud Cockman, F F. Robert Cokeman, M.
  • 54.
    Cockney, 148. John Cokeney,B. Cocksbrain, 500. William Cockesbrayne, A. Cockshead, 447. Adam Cocksheved, M. Antony Cockshead, Z. Cockshaw, 117. Adam de Cokeshaw, A. John de Cokeshaw, A. Cockshot, 116. Alan Cockshott, F. John Cockshott, Z. Cockson (v. Cookson), 65. Edward Cockson, Z. John Cockson, E E. Codde, 497. Thomas Codde, F F. Joan Codde, F F. Codiner (v. Cordwaner), 351. Codling, 497. Alan Codling, F F. Simon Codlyng, F F. Codner (v. Cordwaner), 351. Cœurdebeef, 500. Thomas Cordebeofe, A. John Queerdebœf, B. Coffer, Cofferer, 218, 336, 396. Godfrey le Coffrer, A. Ralph le Coffrer, H. John le Coffrer, M.
  • 55.
    Coffin, 144, 397. RichardCoffyn, H. Elias Coffyn, J. Cogger, 408. Hamond le Cogger, O. Henry Cogger, P. Cogman, 408. Benjamin Cogman, F F. Coifer, 336. Emma le Coyfere, A. Ralph le Coifier E. Dionysia la Coyfere, A. Coke (v. Cook), 206, 365. Roger le Coke, M. Alexander Coke, A. Cole (v. Colin), 95. Coleman, 22. Editha Coleman, A. Coleman le Hen, A. Colet (v. Collet), 189, 96. Nicholas Colyt, M. William Kolytte, W 11. Colfox, 499. Thomas Colfox, Z. Richard Colvox, A. Colinson, 16, 96. William fil. Colin, A. Colin le Balistar, E. Collet (v. Colet), 189, 96. Colletta Clarke, H H. Henry Collette, X X 1.
  • 56.
    Collier. Robert le Coliere,A. John le Collier, C. Collinge (v. Culling), 170. Collins (v. Collinson), 96. Colinus de Barentyn, E. Colin le Ferur, A. Collinson (v. Colinson), 96. John Collynson, Z. Lanclot Colynson, W 11. Collopp, 333 n. John Collop, A. Mabil Collope, A. Colson (v. Colinson), 96. George Collison, H H. Robert Colson, H H. Colswain, 505. Stephen Colesweyne, A. Richard Colsweyn, T. Colt, 490. Roger le Colt, A. William le Colt, A. Joan Colte, V 7. Coltman, 267. John Coltman, H. Geoffrey Coltman, M. Richard Coltman, W 11. Colville, 151. William de Colville, M. Felip de Colville, A. Colyer (v. Collier).
  • 57.
    Henry le Colyer,A. Comb, Combe, 125. Elias de Comb, A. William atte Combe, M. Nicholas atte Combe, M. Comber, 320. John le Comber, A. Walter le Comber, E. Commander. William le Comandur, A. William Commander, Z. Conder, 377. Coney, 139, 489. Henry Cony, D. John Conay, A. Coneybeare, 139. Coneythorp, 137. Robert de Conigthorpe, X X 4. Congreave, 120. Robert de Conesgrave, A. William Congrove, H. Henry Conygrave, X X 2. Coning, 139. Nicholas Conyng, H. Peter Conyng, P. Michael Conning, W 20. Coningsby, 139. John de Conyngsby, P. Walter de Cunnyngby, A. Conington, Connington, 139. John de Conyngton, A.
  • 58.
    Thomas de Conyton,A. Conqueror. William Conqueror, A. Robert Conqueraunt, A. Constable, 203. John le Conestable, B. Robert le Conestable, G. Constance, 19, 67. William fil. Constance, A. Convert, 167. Dyonis le Convers, A. Stephen le Convers, B. Nicholas le Conners, B. Conyers (v. Convert), 197. Cook, Cooke, 206, 365. Emma Coca, A. Roger le Cook, M. Joan le Cook, F F. Cookman, 206, 365. William Cokeman, J. John Cookman, W 9. Cookson, 65, 365. Robert fil. Coci, A. John Cokesson, F F. Henry Cukeson, W 11. Cooper, 389, 394. Richard le Cupare, A. John le Cuper, M. Coote, 494. Cope, 124. Robert Cope, A.
  • 59.
    Adam Cope, M. Copeland,124. William de Copelaunde, E. John Copland, Z. Copeman, 296, 124. Laurence Copiman, A. Hugh Cowpman, K. Coper, 296. John le Copere, A. Copestake, 124. William Copestake, Z. Copley, 124. Avery Copley, Z. Christopher Copley, Z. Thomas de Coppeley, X X 4. Copp (1). John le Coppe, A. Thomas le Coppe, A. (2), 124. John de la Coppe, F F. Richard de la Coppe, F F. Copped 353. Hugh le Coppede, A. John le Copede, M. Copperbeard, 449. Robert Coperberd, N. Corbet, 151. Nicholas Corbet, M. Felicia Corbet, A. Corder, 399.
  • 60.
    Adam le Corder,A. Peter le Corder, A. Cordiner, Cordwaner, 351. Durant le Cordwaner, M. Roger le Cordewaner, C. Gervaise le Cordewaner, N. Corfe, 452. John Chauf, A. Geoffrey le Cauf, E. Coroner, 179. John le Coroner, M. Henry le Corouner, A. Corner (1), 179. John le Corner, A. Waiter le Cornur, K. (2), 130, 179. William de la Cornere, A. Robert Atte Cornere, M. Cornmonger, 275. Ralph le Cornmonger, T. Henry le Cornmongere, M. Cornish, 147. William Cornish, D. Margery Cornish, H. Cornthwaite, 121. Cornwall, 169, 147. Geoffrey de Cornwayle, B. Wauter de Cornwaille, M. Cornwallis, 148. Thomas le Cornwaleys, A. Philip le Cornwaleys, L.
  • 61.
    Walter le Cornewaleys,X. Corsdebeef, 500. Thomas Cors-de-bœf, A. Thomas Cor-de-beofe, B. Galiena Cordebeof, J. Corser, Corviser, 286, 351. Ralph le Coreviser, A. William le Corviser, B. Durand le Corveser, M. Cosier, 352. Cosser (v. Corser), 286. Cotman (1), 252. Richard Coteman, A. William Coteman, A. (2). Thomas fil. Cotman, A. John fil. Cotman, A. Cotter, 252. William le Cotier, A. Simon le Cotere, F F. Cotterel, Cottrell, 252. William Coterel, M. Joice Cotterill, Z. Cotwife, 252. Beatrix Cotewife, A. Coucher, 360. John le Cochere, A. William Coucher, W 2. Couchman (v. Coachman), 288. Richard Couchman, Z.
  • 62.
    William Cowcheman, EE. Coudray, 154. William de Coudraye, M. Peter de Coudray, R. Coulman, 337. Launcelot Coulman, Z. Coulthart, Coulthard, Coulherd, 267. John Colthirde, W 9. Davy Cowthird, W 18. Coultman, 267. Councillor, Councilman, 185. Count, 174. John le Cunte, E. Peter le Counte, G. Richard le Counte, N. Countess, 174, 507. Judetha Commitissa, A. John Countesse, A. Countryman. John Cuntreman, A. Couper, 394. Nicholas le Couper, A. Warin le Couper, M. Couperess, 394. Roger Couperesse, A. Coupman. Richard Coupman, A. Courcy, 151. Court. Baldwin atte Curt, M.
  • 63.
    Godfrey ate Curt,M. Cousen, Cousin, Couzen, 429. Richard le Cusyn, A. John le Cosyn, G. Thomas le Cozun, E. Cover, 395. Richard le Cuver, O. Walter le Cuver, E. Michael le Cuver, A. Coverer, 395. Robert le Coverour, A. Adam le Covreur, M. Covetous, 483. Gilbert le Covetiose, M. Cow (1), 490. Thomas le Cu, A. Ralph le Cou, M. (2), 485. Thomas del Cou, M. Coward, 266. William le Kuherde, A. John le Couherde, D. Adam le Cowhirde, M. Cowbeytson, 56. Nicholas Cowbeytson, W 9. Cowden, 118. Thomas Cowden, F F. Nathaniel Cowden, F F. Cowler, 337. Richard le Couhelere, M.
  • 64.
    Cowley, 119. Alexander deCouleye, A. Roger de Couele, A. Cowman, 271. Cowper (v. Couper), 389, 394. Willelmus Cowpere, W 19. Cowpman, (v. Coupman) 394. Richard Cowpeman, A. Coxhead (v. Cockshead), 447. Thomas Coxhead, H H. Coxon (v. Cockson), 65. Coyking, 505. John Coyking, M. Crabb, 497. Crabtree. John Crabtre, W 16. William Crabtree, W 16. Crackshield, 462. Thomas Crackyshield. Cramp (v. Crump), 440. William Cramp, Z. Cramphorn, 461. Joseph Cramphorne. Crane, 144, 494. Hugh le Crane, G. William le Crane, E. Crask, 432. Walter le Crask, F F. Crass, 432. Richard le Cras, A.
  • 65.
    John le Cras,M. Stephen Crassus, J. Crestolot, 16. Crestolot de Pratis, DD. Crimp (v. Crump), 440. Cripling, 441. William Crypling, A. Crisp, 450. Robert le Crespe, A. Reginald le Crispe, J. Crocker 392. Simon le Crockere, A. Stephen le Crockere, M. Croft, Crofts, 132. Roger de Croftes, A. Agnes de Croftis, A. Croiser, 158. Simon le Croiser, M. William Croiser, H. Croker, 392. Robert Croker, F. John le Croker, M. Crook, 461. Roger le Cruk, M. John Cruke, A. Crookbone, 440. Henry Croakbane, A. Geoffrey Crokebayn, W 4. Crooke (v. Crook), 440. Vincent Crooke, Z. Crookhorn, 461.
  • 66.
    John Crokehorn, B. RobertCrokehorn, T. Cropper, 256. Roger the Cropper, A A 2. Robin the Cropper, A A 2. Crosier (v. Crozier), 190. William Croyser, G. Cross, Crosse, 130. John atte Cross, M. Roger del Cros, R. Jordan ad Crucem, A. Crosser, 113. Crossman, 113. Julyan Crosman, Z. Emme Crossman, Z. Crossthwaite, 121. Henry de Crosthweyte, M. John de Crostwyt, R. Crossweller (v. Cressweller), 113. Crotch, Crouch, 130. John atte Cruche, A. Matilda atte Crouche, B. Croucher, 113, 130. John le Crocher, K. John Crowcher, F F. Crouchman, 113, 130. Richard Crocheman, A. William Croucheman, B. Crow, 494. Claricia Crowe, A. Robert Crowe, M.
  • 67.
    Crowder, 310. Ricard leCruder, A. Thomas le Crouder, W 2. Crowfoot, 500. William Crowfoot, F F. Henry Crowfoot, F F. Crowther (v. Crowder), 310. Crozier, 190. Simon le Croyser, M. Mabel le Croyser, G. Cruel, 464, 484. Warin Cruel, A. Cruikshank, 438. Crump, 440. Richard le Crumppe, A. Hugh le Crumpe, T. Cryer, 183. Philip le Criour, E. Wat le Creyer, G. Edward le Creiour, N. Cuckhold. Thomas le Cuckold, A. Matilda Cuckold, A. Cuckoo, 494. Stephen Cuckoo, F F. William Cuckow, F F. Thomas Cuckowe, V 13. Cuddie (v. Cuthbert), 55. Cullen, Culling, 170. John de Coloigne, F F. William de Culinge, A.
  • 68.
    Alan Culling, A. Culver,495. Cuner, 404. Ada le Cuner, A. Henry Cunator, A. Cunerer, 404. Samson le Cunerer, A. Cunning, 139, 469. Cunningham, 139. Cuppage, 215. John Cupage, A A 3. Cupper, 389. William le Cuppere, G. Thomas le Cupper, M. Cure. John le Cure, A. Anne Cure, Z. Curl, 450. Marcus Curie, Z. William Curle, Z. Curling (v. Querdelyun), 499. Currier, 331. Curt, 432. Thomas le Curt, R. William le Curt, L. Curtman. Adam Curtman, A. Curtbrand, 457. Reginald Curtbrant, B.
  • 69.
    Curteis, 468, 464. Walkelinle Curteis, C. Richard le Curteis, E. Curtepy, 456. Richard Curtepie, A. William Cortepy, A. Curthose, 456. Robert Curthose, A. Robert Curthose, P P. Curtis, 468, 464. Osbert le Curteys, A. Walter le Curteys, J. Curtmantel, 456. Henry Curtmantel, P P. Curtvalor, 456. Richard Curtevalur, A. Curtwailet, 456. Martin Curtwallet, A. Cuss, Cusson, (v. Custson), 67. Eliza Cusse, W 9. Matilda fil. Cusse, A. Osbert Cuson, A. Cuss Balla, A. Cussot, 67. Cussot Colling, A. Cust, 67. Custe Newman, A. Robert fil. Cust, A. Custe Alver, A. Custance, 67. Custance la Braceresse, A.
  • 70.
    Henry fil. Custance,W 6. Reyner Custance, A. Custerson, Custson, 67. William Custson, W 8. Henry fil. Custance, A. Cutbeard, 56. Thomas Cutbert, H. John Cutbert, A. William Cutteberd, W. Cute, 465. Nicholas le Cute, A. Benedict le Cuyt, A. Cuteswain, 505. John Cutsweyn, A. Cuthbert, 56. Cuthbert Capun, R. Cuthbert Ricerson, W 3. Cuthbertson, 56. Elizabeth Cuthbertson, W 16. Thomas Cuthbertson, W 11. Cutler, 282, 390. Walter le Cotiler, A. Peter le Coteler, M. Jordan le Cotiler, N. Cyderer, 261. D’Aeth (v. Death), 168. Daffe, 441. Lefeke Daffe, A. Daft, 441. William Daft, A.
  • 71.
    Daisy, 485. Roger Daisye,V 9. Dakins, 188, 83. Dale, Sibill de Dale, D. Thomas de la Dale, M. Dallman, D’Almaine, Dalmaine, (v. Aleman), 165. Custance de Alemania, A. Dalman, 165. John Dalman, F F. William Dalman, F F. Dame, 84. Henry Dame, A. Alexander Dame, M. Damegod, 511. Peter Damegod, M. John Domegode, O. Damsell, 84. Simon Damsell, A. Lawrence Damysell, W 2. Dameson, 84. John Damson, Z. Damet, Damiot, 84. Dametta, A. Dametta fil. Morrell, DD. Henry Damett, R. Hugh Damiot, A. Damietta Avenel, F F. Alice Damyett, Z. Damned-Barebones, 78. Damsel (v. Damsell), 84.
  • 72.
    Damosel Skren, QQ. Dance (v. Dans), 84. Dancer, 307. Herveus le Danser, A. Henry Dawnser, Z. Dancock, 84. John Dancock, G. Dandelyan, 499. William Daundelyun B. Danett, 84. Ralph Danett, P P. Thomas Danet, X X 1. Daniel, 84. Daniel fil. John, E. Richard Danyel, M. Dankin (v. Daniel), 84. Gunnilda Danckin, K. Dann, Danett, 84. Daniel Dann, P P. Henry Dann, P P. Moses Dannett, V 5. John Dannett, V 4. Dans, Danse, 84. John Danse, Z. Danser (v. Dancer), 307. Danson, 84. Christopher Danson, Z. John Danson, Z. Marmaduke Danson, W 11. Dapifer, 211. Henry Dapifer, A.
  • 73.
    Sewall Dapifer, J. Darling. JaneDarling, W 20. Dason (v. Davison), 83. Dauber, 250. Roger le Daubere, A. Silvester Daubere, H. David, 83. David Faber, A. Gilbert David, A. Davidson, 83. Robert fil. David, A. Thomas Davydson, M. Davies, 83. Davey ap Davidson, Z. Gerves Daves, W 9. Davy Cowthird, W 18. Davison, 83. James Davyson, W 9. Thomas Davyson, F F. Davitt (v. David), 83. Robert fil. Davit, A. Isabel uxor Davit, A. Dawber (v. Dauber), 250 Dawe, Dawes, 83. Daw le Pestour, H. Dawe le Falconer, DD. Lovekin Dawes, A. Dawkes, 83. Charles Dawkes, F F. Robert Dawkes, V 5.
  • 74.
    Dawkins, 83. John Dawkyns,F. Henry Dawkins, Z. Dorken le Bercher, A. Dawkinson, 83. Dawson, 83. Richard fil. Dawe, A. Raffe Dawson, Z. Day, Daye, 273. Cecilia le Day, J. Stephen le Dagh, T. Thomas le Day, M. Dayes, 83. Dayman, 273. Dayson (v. Davison), 83. Daystar. Robert Daysterre, A. Deacon, 188. Senxa le Dekene, A. Philip le Dekene, M. Deakin, 188. Dean (1), 156. Roger le Dene, A. John le Dene, F F. (2), 118. William de la Dene, A. Adam atte Dene, M. Dearden, 118. Ralph de Derneden, A. Dearlove, 47.
  • 75.
    William Derelove, F. RichardDorelove, Z Z. Thomas Dearlove W 16 Dearman (v. Deerman), 235 Death, 168, 510. John Deth, M. Hugh de Dethe, A. Debenham, 17, 146. John de Debenham, A. Giles de Debenham, F F. Debonaire, 467. Philip le Debeneyre, A. Decroix, 153. Deer, 443. Robert le Dere, A. Lawrence le Deer, M. Deerman, 235. John Dereman, A. William Dereman, A. Defend, 103. Defend Outered. Defontaine, 153. Delamere, 153. Reginald de la Mere, A. Grigore de la Mere, A. Delarue, 153. Delilah, 77. Delisle, 153. Deliver, 465. Ralph le Delivere, M M.
  • 76.
    Delivery, 77. Deman, 273. RogerDeyman, Z. Demer, 180. Simon le Demer, B. Dempster, 180. Christopher Dempster, Q. Den, 118. Henry de Denn, M. William ate Denne, M. Denis (v. Dennis), 70. Denison (v. Dennison), 70. Denman, 119, 270. Ralph Denmane, Z Z. Dennis (1). Denneyse Fowler, Z. Denes Lister, W 9. Richard Dionys, M. (2), 162. Joel le Deneys, A. Brice le Daneis, M. James le Danoys, X X 1. Dennison (1), 70. Henry Dennison, W 16. John Denyson, W 13. Michael fil. Dionysiæ, A. (2). Walter Denizen, A. Dent-de-fer, 434.
  • 77.
    Robert Dent-de-fer, E. Denthorp,137. Catherine Denthorp, X X 4. Denyer, 119, 270. Departedieu, 511. John Departe-dieu, F F. Deputy. Thomas Deputy, W 20. Derbyshire, 147. Henry Derbyshyre, Z Z. Thomas Derbyshire, Z Z. Derne, 118 n. Dernhouse, 118 n. Thomas Dernehuse, A. Derwentwater, 429. Henry de Derwentwater, M. Thomas de Derwentwater, L. Despencer, Despenser, 175. Thurstan le Despencer, A. Edward le Despenser B. Deus-salvet-dominas, 511. Roger Deus-salvet-dominas, v. p. 511. Devil, Deville, 153. John Deyvyle, A. Thomas de Deyvyle, T. Devonish, 147. John le Deveneis, E. Isabel le Deveneis, A. Nichol le Devenys, M. Dewhurst, 116.
  • 78.
    John Derhurste, XX 1. Grace Dewhirste, Z Z. Deye (v. Day), 273. Hugh le Deye, G. Cecily le Deye, F F. Deyville, 153. Goscelin de Eyville, M. John de Eyville, M. Diacony, 188 n. Michell Diacony, X X 1. Diable, 153. Osbert Diabolus, C. Roger le Diable, J. Dibden, 118 n. Randolph de Dependen, A. John Debden, X X 1. Diccons, Dicconson, 65. (1), John fil. Decani, A. Amice fil. Decani, A. (2), John Dyconson, H. Anthonye Dickonsonne, W 9. Dick, 40. Agatha Dick, F F. John Dik, F F. Dickens, 40. William Dicons, F F. Richard Dikkins, F F. Dickenson (v. Dicconson), 16, 40. Robert Dickenson, Z Z. William Dykynson, Z Z.