SlideShare a Scribd company logo
Angular: Go Mobile!
Doris Chen Ph.D.
Senior Developer Evangelist
Microsoft
doris.chen@microsoft.com
http://blogs.msdn.com/dorischen/
@doristchen
Doris Chen, Ph.D.
• Developer Evangelist at Microsoft based in Silicon Valley, CA
• Blog: http://blogs.msdn.com/b/dorischen/
• Twitter @doristchen
• Email: doris.chen@microsoft.com
• Over 18 years of experience in the software industry focusing on web
technologies
• Spoke and published widely at O'Reilly OSCON, Fluent, HTML5 Dev Conf,
JavaOne, Google Developer Conference, Silicon Valley Code Camp and
worldwide User Groups meetups
• Doris received her Ph.D. from the University of California at Los Angeles
(UCLA)
Agenda
• Angular
• Demo: ToDo App in Angular
• Mobile Apps for JavaScript
• Demo: ToDo App with Apache Cordova
• Summary and Resources
Angular
Angular
Architecture MV* (Model View Whatever)
Template Support YES. doesn’t require any other separate template engine.(Also
doesn’t support template engine)
File Size 39.5K (no dependencies)
Nested Template Support Yes
Data Binding Yes
Routing Yes
Compatible with other frameworks Yes
Additional Features Dependency Injection, Directives, Watch Expressions and 2-way
Binding, HTML5 validations, Form Validations, and Filtering
Angular: templates
• Simply HTML with binding expressions baked-in
• Binding expressions are surrounded by double curly braces
<ul>
<li ="framework in frameworks"
title="{{framework.description}}">
{{framework.name}}
</li>
</ul>
Angular: model
• Angular does not use observable properties, no restriction on
implementing model
• No class to extend and no interface to comply
• Free to use whatever you want (including existing Backbone
models)
• In practice, most developers use plain old JavaScript objects
(POJO)
2-way bindings and directives
<div class="templateWrapper" ng-repeat="toDoItem in todos">
<div class="templateContainer">
<input class="templateTitle"
ng-class="{crossedOut: toDoItem.done}" type="text"
ng-text-change="changeToDoText(toDoItem)"
ng-model="toDoItem.text" />
<h3 class="templateAddress">{{toDoItem.address}}</h3>
</div>
</div>
Dependency injection
<section id="todoapp" ng-controller="ToDoCtrl">
<button class="templateLeft templateRemove"
ng-click="removeToDo(toDoItem)"></button>
</section>
angular.module("xPlat.controllers")
.controller('ToDoCtrl', ['$scope', 'maps', 'storage',
function ($scope, maps, storage) {
$scope.removeToDo = function (toDoItem) {
storage.del(toDoItem).then(function (todo) {
var index = $scope.todos.indexOf(todo);
$scope.todos.splice(index, 1);
});
}
}]);
Angular: more good things
• Building application blocks into: Controllers, Directives,
Factories, Filters, Services and Views (templates).
• Views UI, Controllers logic behind UI, Services communication with
backend and common functionality, Directives reusable components
and extending HTML by defining new elements, attributes and
behaviors
• Promises play a main role in Angular
Custom directives
<input class="templateTitle"
ng-class="{crossedOut: toDoItem.done}" type="text"
ng-text-change=" changeToDoText(toDoItem)"
ng-model="toDoItem.text" />
angular.module('xPlat.directives')
.directive('ngTextChange', function () {
return {
restrict: 'A',
replace: 'ngModel',
link: function (scope, element, attr) {
element.on('change', function () {
scope.$apply(function () {
scope.$eval(attr.ngTextChange);
});
…
});
Custom directives, continued
$scope.changeToDoText = function (toDoItem) {
//Notice .then Promise pattern is used here
getAddress().then(function (address) {
toDoItem.address = address;
return storage.update(toDoItem);
}, function (errorMessage) {
toDoItem.address = errorMessage;
return storage.update(toDoItem);
});
}
Angular: bad things
• Extremely opinionated
• Frustrated: prior experience in creating UI with Javascript is rendered almost useless
• Do everything according to the “Angular way”
• Directives could be super complicated and odd
• Expression language too powerful
• <button ng-click="(oldPassword && checkComplexity(newPassword) &&
oldPassword != newPassword) ? (changePassword(oldPassword, newPassword) &&
(oldPassword=(newPassword=''))) : (errorMessage='Please input a new password
matching the following requirements: ' + passwordRequirements)">Click
me</button>
Demo
ToDo MVC in Angular and Backbone
When to use Angular?
• Something declarative that uses View to derive behavior
• Custom HTML tags and components that specify your application
intentions
• Easily testable, URL management (routing) and a separation of
concerns through a variation of MVC
• Good at making quick changes
• create easily testable code and test it often
• Not a good fit for Angular
• Games and GUI editors are examples of applications with intensive and tricky
DOM manipulation, different from CRUD apps
• may be better to use a library like jQuery
• Has its own scaffolding tools available (angular-seed)
Go mobile
From web app to hybrid app
Apps dominate the mobile web
Low investment for more capabilities
Capabilities
DeveloperInvestment
Web App
Hybrid App
Native App
What is Apache Cordova?
• Open-source framework
Native WrapperWhat is Apache Cordova?
• Open-source framework
• Hosted webview
• Single, shared codebase
deployed to all targets
<webview>
Your JavaScript App
Native WrapperWhat is Apache Cordova?
• Open-source framework
• Hosted webview
• Single, shared codebase
deployed to all targets
• Plugins provide a common
JavaScript API to access
device capabilities
<webview>
Your JavaScript App
Cordova Plugin JS API
Native WrapperWhat is Apache Cordova?
• Open-source framework
• Hosted webview
• Single, shared codebase
deployed to all targets
• Plugins provide a common
JavaScript API to access
device capabilities
• About 6% of apps in stores
(13% in enterprise)
<webview>
Your JavaScript App
Cordova Plugin JS API
Why Cordova?
72%
62%
34%
28% 27%
24%
20%
9%
0%
10%
20%
30%
40%
50%
60%
70%
80%
Familiarity of
Languages
(HTML, JS, CSS)
Cross Platform
Support
Performance Availability of
Tools/Libraries
Productivity Based on Open
Standards
Cost of
Development
Community
Source: Kendo UI Developer Survey 2013
Speed & cost of development matter
:)
Demo
Converting ToDo MVC into a hybrid app
World Wide Web Cordova
Delivery mechanism Delivered via browser Packaged on my device
Input Touch Touch
Offline Support No Yes
Device Capabilities Web APIs Only Native Device APIs
Monetization Web Commerce App Store & In-App Purchases
Discoverability Bookmarks & Search Engines Always on my home screen
🌐
Tips, Tricks & Considerations
• Use Cordova when an idea makes sense as a web app, but you
need…
• Cross-platform support as a packaged application
• Offline support
• Access to native device capabilities (e.g. camera, accelerometer, file system)
• Better reach & discoverability
• Cordova depends on the platform build system
• To build for iOS, you need a Mac
• To build for Windows 8+, you need Windows 8+
• To build for Android, you need the Android SDK
• Touch input means bigger everything. Consider a control framework
like Ionic.
Use Cordova if you want to…
• Use your web skills & assets
• Maintain one codebase
• Use the JS libraries you love
You might be better off writing native apps if…
• Performance is of utmost concern
• You want different apps on different devices
• You <3 Java, ObjC, or DirectX (If you love XAML/C#, consider Xamarin)
• Your apps have deep integration with devices, such as the DirectX rendering
pipeline
Should I build a Cordova app or Native apps?
Resources
• AngularJS: http://angularjs.org
• ToDo MVC: http://todomvc.com
• Tools for Apache Cordova: http://aka.ms/cordova
• StackOverflow #multi-device-hybrid-apps
Ad

Recommended

Building Web Sites that Work Everywhere
Building Web Sites that Work Everywhere
Doris Chen
 
Lastest Trends in Web Development
Lastest Trends in Web Development
Doris Chen
 
Practical tipsmakemobilefaster oscon2016
Practical tipsmakemobilefaster oscon2016
Doris Chen
 
Angular or Backbone: Go Mobile!
Angular or Backbone: Go Mobile!
Doris Chen
 
HTML5: the new frontier of the web
HTML5: the new frontier of the web
Ivano Malavolta
 
Cartegraph Live HTML, CSS, JavaScript and jQuery Training
Cartegraph Live HTML, CSS, JavaScript and jQuery Training
Shane Church
 
HTML CSS JavaScript jQuery Training
HTML CSS JavaScript jQuery Training
ubshreenath
 
Building intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQuery
Alek Davis
 
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
SPTechCon
 
Modern development paradigms
Modern development paradigms
Ivano Malavolta
 
SharePoint Saturday St. Louis - SharePoint & jQuery
SharePoint Saturday St. Louis - SharePoint & jQuery
Mark Rackley
 
[2015/2016] Backbone JS
[2015/2016] Backbone JS
Ivano Malavolta
 
Edge of the Web
Edge of the Web
Todd Anglin
 
2/15/2012 - Wrapping Your Head Around the SharePoint Beast
2/15/2012 - Wrapping Your Head Around the SharePoint Beast
Mark Rackley
 
[2015/2016] JavaScript
[2015/2016] JavaScript
Ivano Malavolta
 
HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applications
James Pearce
 
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dee Sadler
 
Bootstrap4XPages webinar
Bootstrap4XPages webinar
Mark Leusink
 
SPSDenver - SharePoint & jQuery - What I wish I would have known
SPSDenver - SharePoint & jQuery - What I wish I would have known
Mark Rackley
 
Making HTML5 Work Everywhere
Making HTML5 Work Everywhere
Todd Anglin
 
SPTechCon - Share point and jquery essentials
SPTechCon - Share point and jquery essentials
Mark Rackley
 
jQuery: The World's Most Popular JavaScript Library Comes to XPages
jQuery: The World's Most Popular JavaScript Library Comes to XPages
Teamstudio
 
[2015/2016] HTML5 and CSS3 Refresher
[2015/2016] HTML5 and CSS3 Refresher
Ivano Malavolta
 
Building intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQuery
Alek Davis
 
orcreatehappyusers
orcreatehappyusers
tutorialsruby
 
Sightly - AEM6 UI Development using JS and JAVA
Sightly - AEM6 UI Development using JS and JAVA
Yash Mody
 
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
St. Petersburg College
 
XPages Workshop: Customizing OneUI
XPages Workshop: Customizing OneUI
Michael McGarel
 
I knew there had to be a better way to build mobile apps
I knew there had to be a better way to build mobile apps
Alius Petraška
 
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
FITC
 

More Related Content

What's hot (20)

The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
SPTechCon
 
Modern development paradigms
Modern development paradigms
Ivano Malavolta
 
SharePoint Saturday St. Louis - SharePoint & jQuery
SharePoint Saturday St. Louis - SharePoint & jQuery
Mark Rackley
 
[2015/2016] Backbone JS
[2015/2016] Backbone JS
Ivano Malavolta
 
Edge of the Web
Edge of the Web
Todd Anglin
 
2/15/2012 - Wrapping Your Head Around the SharePoint Beast
2/15/2012 - Wrapping Your Head Around the SharePoint Beast
Mark Rackley
 
[2015/2016] JavaScript
[2015/2016] JavaScript
Ivano Malavolta
 
HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applications
James Pearce
 
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dee Sadler
 
Bootstrap4XPages webinar
Bootstrap4XPages webinar
Mark Leusink
 
SPSDenver - SharePoint & jQuery - What I wish I would have known
SPSDenver - SharePoint & jQuery - What I wish I would have known
Mark Rackley
 
Making HTML5 Work Everywhere
Making HTML5 Work Everywhere
Todd Anglin
 
SPTechCon - Share point and jquery essentials
SPTechCon - Share point and jquery essentials
Mark Rackley
 
jQuery: The World's Most Popular JavaScript Library Comes to XPages
jQuery: The World's Most Popular JavaScript Library Comes to XPages
Teamstudio
 
[2015/2016] HTML5 and CSS3 Refresher
[2015/2016] HTML5 and CSS3 Refresher
Ivano Malavolta
 
Building intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQuery
Alek Davis
 
orcreatehappyusers
orcreatehappyusers
tutorialsruby
 
Sightly - AEM6 UI Development using JS and JAVA
Sightly - AEM6 UI Development using JS and JAVA
Yash Mody
 
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
St. Petersburg College
 
XPages Workshop: Customizing OneUI
XPages Workshop: Customizing OneUI
Michael McGarel
 
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
SPTechCon
 
Modern development paradigms
Modern development paradigms
Ivano Malavolta
 
SharePoint Saturday St. Louis - SharePoint & jQuery
SharePoint Saturday St. Louis - SharePoint & jQuery
Mark Rackley
 
2/15/2012 - Wrapping Your Head Around the SharePoint Beast
2/15/2012 - Wrapping Your Head Around the SharePoint Beast
Mark Rackley
 
HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applications
James Pearce
 
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dee Sadler
 
Bootstrap4XPages webinar
Bootstrap4XPages webinar
Mark Leusink
 
SPSDenver - SharePoint & jQuery - What I wish I would have known
SPSDenver - SharePoint & jQuery - What I wish I would have known
Mark Rackley
 
Making HTML5 Work Everywhere
Making HTML5 Work Everywhere
Todd Anglin
 
SPTechCon - Share point and jquery essentials
SPTechCon - Share point and jquery essentials
Mark Rackley
 
jQuery: The World's Most Popular JavaScript Library Comes to XPages
jQuery: The World's Most Popular JavaScript Library Comes to XPages
Teamstudio
 
[2015/2016] HTML5 and CSS3 Refresher
[2015/2016] HTML5 and CSS3 Refresher
Ivano Malavolta
 
Building intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQuery
Alek Davis
 
Sightly - AEM6 UI Development using JS and JAVA
Sightly - AEM6 UI Development using JS and JAVA
Yash Mody
 
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
St. Petersburg College
 
XPages Workshop: Customizing OneUI
XPages Workshop: Customizing OneUI
Michael McGarel
 

Similar to Angular mobile angular_u (20)

I knew there had to be a better way to build mobile apps
I knew there had to be a better way to build mobile apps
Alius Petraška
 
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
FITC
 
Cordova and PhoneGap Insights
Cordova and PhoneGap Insights
Monaca
 
Hybrid Mobile App
Hybrid Mobile App
Palani Kumar
 
Hybrid mobile app
Hybrid mobile app
Palani Kumar
 
Apache Cordova In Action
Apache Cordova In Action
Hazem Saleh
 
Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)
ColdFusionConference
 
Cross-platform Mobile Development on Open Source
Cross-platform Mobile Development on Open Source
All Things Open
 
Web, Native & Hybrid Apps Overview
Web, Native & Hybrid Apps Overview
Creative Spark, an M&C Saatchi Company
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
GreeceJS
 
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
Hybrid Mobile Development with Apache Cordova,AngularJs and ionic
Hybrid Mobile Development with Apache Cordova,AngularJs and ionic
Ermias Bayu
 
Mobile Development with PhoneGap
Mobile Development with PhoneGap
Joshua Johnson
 
Developing Hybrid Applications with IONIC
Developing Hybrid Applications with IONIC
Fuat Buğra AYDIN
 
fdocuments.in_apache-cordova-overview.pptx
fdocuments.in_apache-cordova-overview.pptx
ssuserd27db6
 
Hybrid app development frameworks
Hybrid app development frameworks
Squash Apps Pvt Ltd
 
[Devoxx Morocco 2015] Apache Cordova In Action
[Devoxx Morocco 2015] Apache Cordova In Action
Hazem Saleh
 
Developing ionic apps for android and ios
Developing ionic apps for android and ios
gautham_m79
 
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Hazem Saleh
 
I knew there had to be a better way to build mobile apps
I knew there had to be a better way to build mobile apps
Alius Petraška
 
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
FITC
 
Cordova and PhoneGap Insights
Cordova and PhoneGap Insights
Monaca
 
Apache Cordova In Action
Apache Cordova In Action
Hazem Saleh
 
Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)
ColdFusionConference
 
Cross-platform Mobile Development on Open Source
Cross-platform Mobile Development on Open Source
All Things Open
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
GreeceJS
 
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
Hybrid Mobile Development with Apache Cordova,AngularJs and ionic
Hybrid Mobile Development with Apache Cordova,AngularJs and ionic
Ermias Bayu
 
Mobile Development with PhoneGap
Mobile Development with PhoneGap
Joshua Johnson
 
Developing Hybrid Applications with IONIC
Developing Hybrid Applications with IONIC
Fuat Buğra AYDIN
 
fdocuments.in_apache-cordova-overview.pptx
fdocuments.in_apache-cordova-overview.pptx
ssuserd27db6
 
Hybrid app development frameworks
Hybrid app development frameworks
Squash Apps Pvt Ltd
 
[Devoxx Morocco 2015] Apache Cordova In Action
[Devoxx Morocco 2015] Apache Cordova In Action
Hazem Saleh
 
Developing ionic apps for android and ios
Developing ionic apps for android and ios
gautham_m79
 
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Hazem Saleh
 
Ad

More from Doris Chen (20)

OSCON Presentation: Developing High Performance Websites and Modern Apps with...
OSCON Presentation: Developing High Performance Websites and Modern Apps with...
Doris Chen
 
Practical Performance Tips and Tricks to Make Your HTML/JavaScript Apps Faster
Practical Performance Tips and Tricks to Make Your HTML/JavaScript Apps Faster
Doris Chen
 
Developing High Performance Websites and Modern Apps with JavaScript and HTML5
Developing High Performance Websites and Modern Apps with JavaScript and HTML5
Doris Chen
 
What Web Developers Need to Know to Develop Native HTML5/JS Apps
What Web Developers Need to Know to Develop Native HTML5/JS Apps
Doris Chen
 
Windows 8 Opportunity
Windows 8 Opportunity
Doris Chen
 
Wins8 appfoforweb fluent
Wins8 appfoforweb fluent
Doris Chen
 
Develop High Performance Windows 8 Application with HTML5 and JavaScriptHigh ...
Develop High Performance Windows 8 Application with HTML5 and JavaScriptHigh ...
Doris Chen
 
What Web Developers Need to Know to Develop Windows 8 Apps
What Web Developers Need to Know to Develop Windows 8 Apps
Doris Chen
 
Building Beautiful and Interactive Metro apps with JavaScript, HTML5 & CSS3
Building Beautiful and Interactive Metro apps with JavaScript, HTML5 & CSS3
Doris Chen
 
Building Beautiful and Interactive Windows 8 apps with JavaScript, HTML5 & CSS3
Building Beautiful and Interactive Windows 8 apps with JavaScript, HTML5 & CSS3
Doris Chen
 
Introduction to CSS3
Introduction to CSS3
Doris Chen
 
Building Beautiful and Interactive Metro apps with JavaScript, HTML5 & CSS3
Building Beautiful and Interactive Metro apps with JavaScript, HTML5 & CSS3
Doris Chen
 
Practical HTML5: Using It Today
Practical HTML5: Using It Today
Doris Chen
 
Dive Into HTML5
Dive Into HTML5
Doris Chen
 
Practical HTML5: Using It Today
Practical HTML5: Using It Today
Doris Chen
 
HTML 5 Development for Windows Phone and Desktop
HTML 5 Development for Windows Phone and Desktop
Doris Chen
 
Dive into HTML5: SVG and Canvas
Dive into HTML5: SVG and Canvas
Doris Chen
 
Performance Optimization and JavaScript Best Practices
Performance Optimization and JavaScript Best Practices
Doris Chen
 
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
Doris Chen
 
Develop Netflix Movie Search App using jQuery, OData, JSONP and Netflix Techn...
Develop Netflix Movie Search App using jQuery, OData, JSONP and Netflix Techn...
Doris Chen
 
OSCON Presentation: Developing High Performance Websites and Modern Apps with...
OSCON Presentation: Developing High Performance Websites and Modern Apps with...
Doris Chen
 
Practical Performance Tips and Tricks to Make Your HTML/JavaScript Apps Faster
Practical Performance Tips and Tricks to Make Your HTML/JavaScript Apps Faster
Doris Chen
 
Developing High Performance Websites and Modern Apps with JavaScript and HTML5
Developing High Performance Websites and Modern Apps with JavaScript and HTML5
Doris Chen
 
What Web Developers Need to Know to Develop Native HTML5/JS Apps
What Web Developers Need to Know to Develop Native HTML5/JS Apps
Doris Chen
 
Windows 8 Opportunity
Windows 8 Opportunity
Doris Chen
 
Wins8 appfoforweb fluent
Wins8 appfoforweb fluent
Doris Chen
 
Develop High Performance Windows 8 Application with HTML5 and JavaScriptHigh ...
Develop High Performance Windows 8 Application with HTML5 and JavaScriptHigh ...
Doris Chen
 
What Web Developers Need to Know to Develop Windows 8 Apps
What Web Developers Need to Know to Develop Windows 8 Apps
Doris Chen
 
Building Beautiful and Interactive Metro apps with JavaScript, HTML5 & CSS3
Building Beautiful and Interactive Metro apps with JavaScript, HTML5 & CSS3
Doris Chen
 
Building Beautiful and Interactive Windows 8 apps with JavaScript, HTML5 & CSS3
Building Beautiful and Interactive Windows 8 apps with JavaScript, HTML5 & CSS3
Doris Chen
 
Introduction to CSS3
Introduction to CSS3
Doris Chen
 
Building Beautiful and Interactive Metro apps with JavaScript, HTML5 & CSS3
Building Beautiful and Interactive Metro apps with JavaScript, HTML5 & CSS3
Doris Chen
 
Practical HTML5: Using It Today
Practical HTML5: Using It Today
Doris Chen
 
Dive Into HTML5
Dive Into HTML5
Doris Chen
 
Practical HTML5: Using It Today
Practical HTML5: Using It Today
Doris Chen
 
HTML 5 Development for Windows Phone and Desktop
HTML 5 Development for Windows Phone and Desktop
Doris Chen
 
Dive into HTML5: SVG and Canvas
Dive into HTML5: SVG and Canvas
Doris Chen
 
Performance Optimization and JavaScript Best Practices
Performance Optimization and JavaScript Best Practices
Doris Chen
 
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
Doris Chen
 
Develop Netflix Movie Search App using jQuery, OData, JSONP and Netflix Techn...
Develop Netflix Movie Search App using jQuery, OData, JSONP and Netflix Techn...
Doris Chen
 
Ad

Recently uploaded (20)

FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Alliance
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC
 
9-1-1 Addressing: End-to-End Automation Using FME
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
 
From Manual to Auto Searching- FME in the Driver's Seat
From Manual to Auto Searching- FME in the Driver's Seat
Safe Software
 
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
pcprocore
 
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Alliance
 
Python Conference Singapore - 19 Jun 2025
Python Conference Singapore - 19 Jun 2025
ninefyi
 
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Alliance
 
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance
 
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Alliance
 
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
 
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
 
The Future of AI Agent Development Trends to Watch.pptx
The Future of AI Agent Development Trends to Watch.pptx
Lisa ward
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
 
AI VIDEO MAGAZINE - June 2025 - r/aivideo
AI VIDEO MAGAZINE - June 2025 - r/aivideo
1pcity Studios, Inc
 
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Alliance
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC
 
9-1-1 Addressing: End-to-End Automation Using FME
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
 
From Manual to Auto Searching- FME in the Driver's Seat
From Manual to Auto Searching- FME in the Driver's Seat
Safe Software
 
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
pcprocore
 
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Alliance
 
Python Conference Singapore - 19 Jun 2025
Python Conference Singapore - 19 Jun 2025
ninefyi
 
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Alliance
 
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance
 
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Alliance
 
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
 
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
 
The Future of AI Agent Development Trends to Watch.pptx
The Future of AI Agent Development Trends to Watch.pptx
Lisa ward
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
 
AI VIDEO MAGAZINE - June 2025 - r/aivideo
AI VIDEO MAGAZINE - June 2025 - r/aivideo
1pcity Studios, Inc
 
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 

Angular mobile angular_u

  • 1. Angular: Go Mobile! Doris Chen Ph.D. Senior Developer Evangelist Microsoft [email protected] http://blogs.msdn.com/dorischen/ @doristchen
  • 2. Doris Chen, Ph.D. • Developer Evangelist at Microsoft based in Silicon Valley, CA • Blog: http://blogs.msdn.com/b/dorischen/ • Twitter @doristchen • Email: [email protected] • Over 18 years of experience in the software industry focusing on web technologies • Spoke and published widely at O'Reilly OSCON, Fluent, HTML5 Dev Conf, JavaOne, Google Developer Conference, Silicon Valley Code Camp and worldwide User Groups meetups • Doris received her Ph.D. from the University of California at Los Angeles (UCLA)
  • 3. Agenda • Angular • Demo: ToDo App in Angular • Mobile Apps for JavaScript • Demo: ToDo App with Apache Cordova • Summary and Resources
  • 5. Angular Architecture MV* (Model View Whatever) Template Support YES. doesn’t require any other separate template engine.(Also doesn’t support template engine) File Size 39.5K (no dependencies) Nested Template Support Yes Data Binding Yes Routing Yes Compatible with other frameworks Yes Additional Features Dependency Injection, Directives, Watch Expressions and 2-way Binding, HTML5 validations, Form Validations, and Filtering
  • 6. Angular: templates • Simply HTML with binding expressions baked-in • Binding expressions are surrounded by double curly braces <ul> <li ="framework in frameworks" title="{{framework.description}}"> {{framework.name}} </li> </ul>
  • 7. Angular: model • Angular does not use observable properties, no restriction on implementing model • No class to extend and no interface to comply • Free to use whatever you want (including existing Backbone models) • In practice, most developers use plain old JavaScript objects (POJO)
  • 8. 2-way bindings and directives <div class="templateWrapper" ng-repeat="toDoItem in todos"> <div class="templateContainer"> <input class="templateTitle" ng-class="{crossedOut: toDoItem.done}" type="text" ng-text-change="changeToDoText(toDoItem)" ng-model="toDoItem.text" /> <h3 class="templateAddress">{{toDoItem.address}}</h3> </div> </div>
  • 9. Dependency injection <section id="todoapp" ng-controller="ToDoCtrl"> <button class="templateLeft templateRemove" ng-click="removeToDo(toDoItem)"></button> </section> angular.module("xPlat.controllers") .controller('ToDoCtrl', ['$scope', 'maps', 'storage', function ($scope, maps, storage) { $scope.removeToDo = function (toDoItem) { storage.del(toDoItem).then(function (todo) { var index = $scope.todos.indexOf(todo); $scope.todos.splice(index, 1); }); } }]);
  • 10. Angular: more good things • Building application blocks into: Controllers, Directives, Factories, Filters, Services and Views (templates). • Views UI, Controllers logic behind UI, Services communication with backend and common functionality, Directives reusable components and extending HTML by defining new elements, attributes and behaviors • Promises play a main role in Angular
  • 11. Custom directives <input class="templateTitle" ng-class="{crossedOut: toDoItem.done}" type="text" ng-text-change=" changeToDoText(toDoItem)" ng-model="toDoItem.text" /> angular.module('xPlat.directives') .directive('ngTextChange', function () { return { restrict: 'A', replace: 'ngModel', link: function (scope, element, attr) { element.on('change', function () { scope.$apply(function () { scope.$eval(attr.ngTextChange); }); … });
  • 12. Custom directives, continued $scope.changeToDoText = function (toDoItem) { //Notice .then Promise pattern is used here getAddress().then(function (address) { toDoItem.address = address; return storage.update(toDoItem); }, function (errorMessage) { toDoItem.address = errorMessage; return storage.update(toDoItem); }); }
  • 13. Angular: bad things • Extremely opinionated • Frustrated: prior experience in creating UI with Javascript is rendered almost useless • Do everything according to the “Angular way” • Directives could be super complicated and odd • Expression language too powerful • <button ng-click="(oldPassword && checkComplexity(newPassword) && oldPassword != newPassword) ? (changePassword(oldPassword, newPassword) && (oldPassword=(newPassword=''))) : (errorMessage='Please input a new password matching the following requirements: ' + passwordRequirements)">Click me</button>
  • 14. Demo ToDo MVC in Angular and Backbone
  • 15. When to use Angular? • Something declarative that uses View to derive behavior • Custom HTML tags and components that specify your application intentions • Easily testable, URL management (routing) and a separation of concerns through a variation of MVC • Good at making quick changes • create easily testable code and test it often • Not a good fit for Angular • Games and GUI editors are examples of applications with intensive and tricky DOM manipulation, different from CRUD apps • may be better to use a library like jQuery • Has its own scaffolding tools available (angular-seed)
  • 16. Go mobile From web app to hybrid app
  • 17. Apps dominate the mobile web
  • 18. Low investment for more capabilities Capabilities DeveloperInvestment Web App Hybrid App Native App
  • 19. What is Apache Cordova? • Open-source framework
  • 20. Native WrapperWhat is Apache Cordova? • Open-source framework • Hosted webview • Single, shared codebase deployed to all targets <webview> Your JavaScript App
  • 21. Native WrapperWhat is Apache Cordova? • Open-source framework • Hosted webview • Single, shared codebase deployed to all targets • Plugins provide a common JavaScript API to access device capabilities <webview> Your JavaScript App Cordova Plugin JS API
  • 22. Native WrapperWhat is Apache Cordova? • Open-source framework • Hosted webview • Single, shared codebase deployed to all targets • Plugins provide a common JavaScript API to access device capabilities • About 6% of apps in stores (13% in enterprise) <webview> Your JavaScript App Cordova Plugin JS API
  • 23. Why Cordova? 72% 62% 34% 28% 27% 24% 20% 9% 0% 10% 20% 30% 40% 50% 60% 70% 80% Familiarity of Languages (HTML, JS, CSS) Cross Platform Support Performance Availability of Tools/Libraries Productivity Based on Open Standards Cost of Development Community Source: Kendo UI Developer Survey 2013
  • 24. Speed & cost of development matter
  • 25. :)
  • 26. Demo Converting ToDo MVC into a hybrid app
  • 27. World Wide Web Cordova Delivery mechanism Delivered via browser Packaged on my device Input Touch Touch Offline Support No Yes Device Capabilities Web APIs Only Native Device APIs Monetization Web Commerce App Store & In-App Purchases Discoverability Bookmarks & Search Engines Always on my home screen 🌐
  • 28. Tips, Tricks & Considerations • Use Cordova when an idea makes sense as a web app, but you need… • Cross-platform support as a packaged application • Offline support • Access to native device capabilities (e.g. camera, accelerometer, file system) • Better reach & discoverability • Cordova depends on the platform build system • To build for iOS, you need a Mac • To build for Windows 8+, you need Windows 8+ • To build for Android, you need the Android SDK • Touch input means bigger everything. Consider a control framework like Ionic.
  • 29. Use Cordova if you want to… • Use your web skills & assets • Maintain one codebase • Use the JS libraries you love You might be better off writing native apps if… • Performance is of utmost concern • You want different apps on different devices • You <3 Java, ObjC, or DirectX (If you love XAML/C#, consider Xamarin) • Your apps have deep integration with devices, such as the DirectX rendering pipeline Should I build a Cordova app or Native apps?
  • 30. Resources • AngularJS: http://angularjs.org • ToDo MVC: http://todomvc.com • Tools for Apache Cordova: http://aka.ms/cordova • StackOverflow #multi-device-hybrid-apps