SlideShare a Scribd company logo
Angular.JS
Advanced Angular.JS - GDayX VN 2013
About me
Nicolas Embleton, French in Ho Chi Minh City

•

2005 - Software Engineer and System Architect, working on legacy tech stacks
(C++, OpenGL, Java, ...) then quickly Web (PHP)

•
•
•

2009 - Founded a Mobile Development Company of 30 individuals
2011 - Started Datafield Startup, Co-founder, CTO
2013 - Started the Javascript Ho Chi Minh City meetup, Getting active in Startup
Vietnamese scene to support and mentor young talents
Agenda

•
•
•
•
•
•
•
•

Quick Intro
Bootstrapping
Why Angular?
Main features, and why it's awesome
Best practices
Testing, tooling
And SEO?
Final words
Intro (quick)
From Wikipedia:

AngularJS is built around the belief that declarative programming should be used for building UIs and
wiring software components, while imperative programming is excellent for expressing business
logic. The framework adapts and extends traditional HTML to better serve dynamic content through two-way databinding that allows for the automatic synchronization of models and views. As a result, AngularJS deemphasizes DOM
manipulation and improves testability.

Recommended for you

Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...
Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...
Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...

Over the years developers were used to thing that web is not user-friendly, performance efficient and powerful as native apps. But things have been changed so far; now you can build offline applications with notifications, Bluetooth and camera access and so on. Web development is great again. - Quick startup - I will show how to prioritize content loading in the application to show users meaningful pixels as soon as possible - Progressive enhancement - I will encourage you to use maximum of the platform but still support earlier browsers - Offline application - here I will explain how you can easily make your web application working offline - Push Notifications - one of the best way to increase conversion of your application and now it's possible on the web. I am going to show how to do it right with few steps. - Experimental APIs - I will show how to sign in once on all your devices with Credential API, use native share menu and make payments in few clicks

mobicodemobilepwa
Top 45 jQuery Interview Questions and Answers | Edureka
Top 45 jQuery Interview Questions and Answers | EdurekaTop 45 jQuery Interview Questions and Answers | Edureka
Top 45 jQuery Interview Questions and Answers | Edureka

YouTube Link: https://youtu.be/nmX4ycVIXt8 ** Full Stack Web Developer Masters Program: https://www.edureka.co/masters-program/full-stack-developer-training ** This Edureka PPT on "jQuery Interview Questions" will help you to prepare yourself for jQuery or web development interviews. Learn about the most important jQuery interview questions and answers and know what will set you apart in the interview process. Follow us to never miss an update in the future. YouTube: https://www.youtube.com/user/edurekaIN Instagram: https://www.instagram.com/edureka_learning/ Facebook: https://www.facebook.com/edurekaIN/ Twitter: https://twitter.com/edurekain LinkedIn: https://www.linkedin.com/company/edureka Castbox: https://castbox.fm/networks/505?country=in

jquery interview questionsjquery questionsjavascript questions
The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)

The document discusses using Python to build single-page applications (SPAs). It introduces SPAs and how they work by loading a single HTML page and dynamically updating content via JavaScript. The speaker then outlines a Python-based SPA architecture using a Django REST API and frontend code. As an example, a movie application is presented that separates the API from the AngularJS frontend. The API uses the Django REST framework and is tested programmatically.

pythondjangojavascript
Angular JS quick review

•
•
•
•
•
•
•

Templating
Model View Controller (MVC)
Extends HTML (very flexible)
2-ways Data-binding
Very reusable (if you follow best practices)
Improves testability (because it is reusable)
Provides routing, history, jqLite, ...
Bootstrapping

•

Using angular-seeds
o git clone https://github.com/angular/angular-seed.git
o node scripts/web-server.js
o open http://localhost:8000/app/index.html

•

Using yeoman (excellent workflow tool)
o
o
o
o
o

(sudo) npm install -g yo
(sudo) npm install -g generator-angular
yo angular
bower install angular-ui
grunt server
Now, the meat, the main features

•
•
•
•
•
•

Templating
Routing
2-ways data-binding
Directives, services
Dependency Injection
Inter-components Communication
Templating

•

Models
o
o

•

2-way binding
Easy property mapping

Built-in directives
o

ngView
Where the routing happens

o

ngRepeat
Iterator

o
o

ngIf
ngSwitch

Recommended for you

Reactive Type-safe WebComponents
Reactive Type-safe WebComponentsReactive Type-safe WebComponents
Reactive Type-safe WebComponents

- Talk from FrontConf Munich 2017 - https://frontconf.com/talks/09-12-2017/reactive-type-safe-webcomponents Abstract: You know the drill right? new cool framework/library appears... boom! new Datepicker in that framework follows and soon enough whole UI libraries, again and again.... It's 2017 and it's time to stop this madness once and for all! How you ask? In this talk we will go through implementation of an app via vanilla web components and explore all the pain points with all these low level primitives that we have natively in the browser. In the end we will build our custom super tiny reactive type-safe library which will allow us to build web components with a breeze Write once, use everywhere by using the platform + abstraction for great Developer experience.

typescriptwebcomponentsjavascript
Building and deploying React applications
Building and deploying React applicationsBuilding and deploying React applications
Building and deploying React applications

It’s trivial today to start writing and debugging some React code, but it’s not 100% clear how to properly deploy the application, manage versions and what implications that has on the build configurations. Especially if you want to allow different versions for different users in order to perform some A/B testing, testing new features in production environment, come up with some UI experiments, or gradually roll out new features for a subset of users. In this presentation I hopefully covered all that.

Gae
GaeGae
Gae

This document provides an outline and overview of a Google App Engine course presented by the National Center for High-Performance Computing. It introduces Google App Engine, outlines the prerequisites for getting started, demonstrates a simple "Hello World" App Engine application, and describes key concepts like the MVC pattern, templates, and using the Google Datastore for application data storage.

Templating - Conditional with ngIf
<div ng-repeat="message in data.messages" ng-class="message.type">
<hr>
<div ng-if="showFrom(message)">
<div>From: {{message.from.name}}</div>
</div>
<div ng-if="showCreatedBy(message)">
<div>Created by: {{message.createdBy.name}}</div>
</div>
<div ng-if="showTo(message)">
<div>To: {{message.to.name}}</div>
</div>
</div>
Templating - Nested repeat
<div ng-repeat="group in groups">
<h2>{{ group.label }}</h2>
<ul>
<li ng-repeat="friend in group.friends">

{{ friend.name }}
</li>
</ul>
</div>
Templating - Example 2 - Switch
<div ng-switch on="selection" >
<div ng-switch-when="settings">Settings Div</div>
<span ng-switch-when="home">Home Span</span>
<span ng-switch-default>default</span>
</div>
Example 2.2 - Switch with 2-way bind
<div ng-controller="Ctrl">
<select ng-model="selection" ng-options="item for item in items">
</select>
<tt>selection={{selection}}</tt>
<hr/>
<div class="animate-switch-container"
ng-switch on="selection">
<div ng-switch-when="settings">Settings Div</div>
<div ng-switch-when="home">Home Span</div>
<div ng-switch-default>default</div>
</div>
</div>

Recommended for you

Building a Startup Stack with AngularJS
Building a Startup Stack with AngularJSBuilding a Startup Stack with AngularJS
Building a Startup Stack with AngularJS

Presented at SCREENS 2013 in Toronto with Nick Van Weerdenburg Save 10% off ANY FITC event with discount code 'slideshare' See our upcoming events at www.fitc.ca AngularJS is a hot, hot, hot topic. Building web and mobile apps in AngularJS is an ease but there is a learning curve. In this session, you’ll learn the ins and outs of AngularJS and leave the session knowing how to build killer AngularJS apps.

 
by FITC
2013angularangularjs
JavaScript Advanced - Useful methods to power up your code
JavaScript Advanced - Useful methods to power up your codeJavaScript Advanced - Useful methods to power up your code
JavaScript Advanced - Useful methods to power up your code

Get this Course https://www.udemy.com/javascript-course-plus/?couponCode=SLIDESHARE Useful methods and JavaScript code snippets power up your code and make even more happen with it. This course is perfect for anyone who has fundamental JavaScript experience and wants to move to the next level.  Use and apply more advanced code, and do more with JavaScript. Everything you need to learn more about JavaScript Source code is included 60+ page Downloadable PDF guide with resources and code snippets 3 Challenges to get you coding try the code demonstrating useful JavaScript methods that can power up your code and make even more happen with it. Course lessons will cover JavaScript Number Methods JavaScript String Methods JavaScript Math - including math random DOMContentLoaded - DOM ready when the document has loaded. JavaScript Date - Date methods and how to get set and use date. JavaScript parse and stringify - strings to objects back to strings JavaScript LocalStorage - store variables in the user browser JavaScript getBoundingClientRect() - get the dimensions of an element JavaScript Timers setTimeout() setInterval() requestAnimationFrame() - Run code when you want too encodeURIComponent - encoding made easy Regex - so powerful use it to get values from your string prototype - extend JavaScript objects with customized powers Try and catch - perfect for error and testing Fetch xHR requests - bring content in from servers and more No libraries, no shortcuts just learning JavaScript making it DYNAMIC and INTERACTIVE web application. Step by step learning with all steps included.

javascriptwebweb2.0
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!

1. The document discusses integrating Webpack into a Django project to bundle static files. 2. It provides an example Django application and shows how to set up basic Webpack configuration to bundle Vue.js and other static files. 3. Additional Webpack features like hot reloading and code splitting are demonstrated to improve the development and production workflows.

djangowebpackjavascript
Templating - Simple ngRepeat
<li ng-repeat="item in items">
Item: {{ item }}
</li>
Templating - Complex ngRepeat
<header ng-repeat-start="item in items">
Header {{ item }}
</header>
<div class="body">
Body {{ item }}
</div>
<footer ng-repeat-end>
Footer {{ item }}
</footer>
Compiling
// compile the new DOM and link it to the current scope.
// NOTE: we only compile .childNodes so that
// we don't get into infinite loop compiling ourselves
$compile(element.contents())(scope);
Templating - Routing

•
•
•
•

Happens in ngView
Routing is a very powerful feature
Allows to update "pieces" of the page
Can stream files from disk to make it truly isolated

Recommended for you

An introduction to Vue.js
An introduction to Vue.jsAn introduction to Vue.js
An introduction to Vue.js

Do you hear of Vue.js everywhere lately? With this presentation, you will be able to create your first app in just 30 minutes. Understand the basics and get yourself a solid knowledge to start your journey with the new progressive JavaScript Framework.

vue.jsjavascriptweb development
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery

The document provides an introduction to jQuery, explaining what it is, its benefits over traditional JavaScript, and how it can be used. Key points covered include: - jQuery is a lightweight JavaScript library that makes client-side scripting easier by providing cross-browser compatibility and methods for selecting, manipulating, and traversing DOM elements. - jQuery solves many cross-browser issues that exist with traditional JavaScript and allows unobtrusive JavaScript that separates behavior from content. - jQuery simplifies many common tasks like DOM traversal and manipulation through methods like $.(), selectors, events, effects, and plugins. This allows easier and more readable code compared to traditional JavaScript. - The document provides examples of how to use

jquery
An Introduction to Vuejs
An Introduction to VuejsAn Introduction to Vuejs
An Introduction to Vuejs

Vue comes with a simple and minimalistic core that is perfect for simple, single page applications that don't require heavy overheads. Vue works primarily on the ViewModel with two-way data bindings and is designed to be simple and flexible, allowing developers to mold the layer as they see fit.

vue js tutorialvuejsvue framework
2-ways data-binding
•
•
•
•

Becoming more standard, thanks to frameworks like Ember.js or Angular.js

•

Example

Linking 2 fields for synchronization purpose
Linking data to model
Automatically updating the template as data is changed
o Arrays / Collections
o Inputs
o etc…
2-ways data-binding, example
<input type="text" ng-model="title" style="width: 90%"/>
<div ng-app="myapp">
<div ng-controller="mycontroller">
Title: {{ title }} 
<hr>
<div class="zippy" zippy-title="title"></div>
</div>
</div>
Directives

•
•
•

Angular.js killer feature
Great deal of re-usability
Just look for directives at ngmodules.org
Restricting Directives

•
•
•
•
•

"E": Element, <my-directive>
"A": Attribute, <div my-directive>
"C": Class, <div class="my-directive">
"M": Comment: 
Combine (e.g. "EA") for more flexibility

Recommended for you

High Performance Django
High Performance DjangoHigh Performance Django
High Performance Django

This document discusses techniques for improving the performance of Django projects handling high traffic volumes. It identifies common areas of concern like database usage, web server configuration, caching, and template rendering. It provides examples of optimizing database queries, implementing caching strategies, profiling code to identify bottlenecks, and leveraging tools like memcached, Varnish, and multiple web servers. The key lessons are to carefully design caching and database access, use profiling to find problematic areas rather than prematurely optimizing, and leverage server configuration expertise.

developmentpythonconferences
Django for mobile applications
Django for mobile applicationsDjango for mobile applications
Django for mobile applications

Django is very stable web-framework that has been actively developed over past ten years. There might be many tutorials and talks out there about Django but there is hardly one that is more catered to mobile developers. After all, mobile developers have to carefully choose a backend for their app because it’s the building block of a good project.This talk is not only for mobile app developers but also for beginners in both Python and Django. This talk will suggest libraries and show how they can help you implement a wonderful and flexible project. Video : https://www.youtube.com/watch?v=-RpxpKuyCBE&t=1s

djangoazurepython
HTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreHTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymore

Flash over the years, has been used to prop up the regular browser like a sad old man drinking alone in a pub. Today browsers come shipped with technology designed to rival flash and aim to shut it squarely out of the game. Are browser ready to rock without Flash?

html5fotbflash
Communicating between directives

•
•

Many design patterns
The "backbonier"
o

•

the emitter and the receiver

A more connected example
o

the directive combinations and controller sharing
Communicating between directives
app.directive('directiveA', function($rootScope){
return function(scope, element, attrs) {

// $rootScope = App Scope
// scope = Current scope (ctrl)

$rootScope.$on('someEvent', function(){
// From here we can react anytime there's an event "someEvent" triggered
});
};
});
Communicating between directives
app.directive('gdayx', function() {

// Creating the directive

return {
restrict: 'E',

// Restricted to "element"

controller: function($scope) {
$scope.what = "";
this.is = function(what) {

// Creating the controller of the directive
// Local data

// External accessor

$scope.what = what;
}
},
link: function($scope, $element){
$element.bind("click", function() { // Binding on click
alert("GDayX is "+$scope.what); // Getting content from the Controller.
});
}
}
});
Communicating between directives
// This directive will "send" data to the first directive
app.directive('is', function() {

// Creating the directive

return {
require: "gdayx",

// Requiring the "gdayx" controller

restrict: 'A',

// Restricting to "attribute"

link: function(scope, element, attrs, gdayxCtrl) {
// gdayxCtrl from the "require: 'gdayx'"
gdayxCtrl.is(attrs.is); // Passing value to the "gdayx" controller
}
}
});

Recommended for you

Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJRealize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ

Slides apresentados no 16 EDTED, edição Rio de Janeiro, em 21 de Maio de 2011. Aqui não tem vídeos, animações e códigos apresentados, mas tem os links. Logo passo o link completo.

rio de janeirohtml5css3
WordPress-Templates mit Twig erstellen - PHPUGFFM
WordPress-Templates mit Twig erstellen - PHPUGFFMWordPress-Templates mit Twig erstellen - PHPUGFFM
WordPress-Templates mit Twig erstellen - PHPUGFFM

This document provides information about using Twig as a templating language for WordPress projects. It discusses advantages of Twig like separation of HTML and PHP. It also covers how to install and configure Twig, use Twig syntax in templates, integrate Twig with plugins like Timber, extend Twig functionality, and lists some WordPress projects that use Twig. Finally, it provides some resources for getting started with WordPress development using Composer and Twig.

twigfrontendwordpress
Nicolas Embleton, Advanced Angular JS
Nicolas Embleton, Advanced Angular JSNicolas Embleton, Advanced Angular JS
Nicolas Embleton, Advanced Angular JS

Angular.JS is a modern Javascript MVC Framework that was built from the ground up by a team of Googlers, sponsored by Google itself. Angular.JS allows web developers a clear separation between logic and view, and greatly improves the ability to reuse the code by using things such as Directives, Services, Components.Angular.JS smart templating engine also allows to minimize the HTML code, During the presentation, you'll learn some medium-advanced usages of Angular.JS, how to use it, tips & tricks that will make your app amazing.

advanced agularnicolasjavascript
AngularJS - Why is it awesome?

•
•
•
•
•

Mature, production-ready
Feature-rich
The design and what it allows
Strong support from giants like Google
A lot of solid companies are embracing it
o
o
o

Ebay Commerce Network
DoubleClick (Google) - Marketing Manager & Planner
YouTube APP on PS3
Best Practices

•
•

Organize the code well (Captain Obvious!)
Organize modules by feature
angular.module('users', ['utilities']);
angular.module('groups', ['utilities']);
angular.module('mainApp', ['users', 'groups']);

•
•

Use the reusability as much as possible
Use the testability as much as possible
o
o

TDD
BDD?
Testing, tooling
•
•
•
•
•
•

Yeoman
o Super workflow tool and generator/scaffolder
Batarang
o Chrome Debugger Extension, (A must have), link
Grunt
o Task runner
Bower
o Package Manager for JS Libraries
Protractor, Karma
o Test Runner
Jasmine, Mocha
o Test Frameworks
And SEO?

•

Google "Snapshot" famous technic
o
o
o

•
•

_escaped_fragment_
Turns this:
http://prerender.io/getting-started#html5-pushstate
Into this:
http://prerender.io/getting-started?_escaped_fragment_=html5pushstate

prerender.io/ - Open Source project
brombone.com/ - Commercial project

Recommended for you

GDayX - Advanced Angular.JS
GDayX - Advanced Angular.JSGDayX - Advanced Angular.JS
GDayX - Advanced Angular.JS

This document provides an overview of Angular.JS and advanced Angular.JS concepts. It discusses bootstrapping an Angular app, the main features of Angular including templating, routing, two-way data binding, directives, and dependency injection. It also covers best practices, testing and tooling, SEO considerations for Angular apps, and whether Angular is suitable for enterprise projects. The presenter then demonstrates a bootstrapped Angular app and provides resources for learning more about Angular.

angularjsmvcjavascript
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS

First part of AngularJS Training. Covers details of AngularJs community and answers - Why AngularJS ? - What is AngularJS ? - Getting started - Basic Application layout and anatomies - Data-binding, Existing Directives, Filters, Controllers - Hosting on local (NodeJS) HTTPServer Code samples available at https://github.com/murtazahaveliwala/technext-angularjs-demo/tree/master/demos/static/angular-apps

trainingangularjstechnology
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS

Introduction pour découvrir AngularJS, le framework Javascript de Google pour créer des applications web.

angularjsjavascriptintroduction
Enterprise project with Angular?

•
•

YES
BUT
Enterprise project with Angular?

•
•

YES
BUT
o
o
o

Follow best practices (easier said than done)
System Architecture is KEY to a solid system
As "Agile" would advise, always try to go for simpler but "well-thought"
"team-friendly"designs.
Enterprise project with Angular?

•

An example Architecture
Legacy Front End

Backend
(legacy)

Experimental Front
End

DB
Backend
(experimental)

Server-side team realm

Experimental Front
End 2

Front-End team realm
Final Words

•
•

Angular 1.0.x is mature
Angular 1.2+ will bring more awesomeness
o
o

Better and Fluid Animations (js/css3)
More flexibility and functionalities
$interval: add a service wrapping setInterval
Event directives: add ngCopy, ngCut, and ngPaste
jQuery 1.10.x support

Recommended for you

Angular - Beginner
Angular - BeginnerAngular - Beginner
Angular - Beginner

AngularJS is a framework for building dynamic web applications. It uses HTML as the template language and allows you to extend HTML's syntax to express your application's components clearly and succinctly. AngularJS's data binding and dependency injection allows it to connect data and logic to the DOM and update the DOM when data changes. The core aspects of AngularJS covered in the document include directives, modules, scopes, controllers, templates and data binding. Key points are that directives attach behavior to DOM elements, modules allow partitioning of an app into logical blocks, scopes provide separation of model and view, and controllers extend scopes to handle logic and expose properties.

ZZ BC#7.5 asp.net mvc practice and guideline refresh!
ZZ BC#7.5 asp.net mvc practice  and guideline refresh! ZZ BC#7.5 asp.net mvc practice  and guideline refresh!
ZZ BC#7.5 asp.net mvc practice and guideline refresh!

15/01/2012 ZZ BC#7.5 : Slide Presentation Code Sample : ZZBC#7.5_ASPNETMVC http://tinyurl.com/834chox

asp.netmvc.net framework
Mini-Training: AngularJS
Mini-Training: AngularJSMini-Training: AngularJS
Mini-Training: AngularJS

This document provides an overview of AngularJS, including: - AngularJS is a JavaScript MVVM framework for building dynamic web apps, developed by Google. - It uses Scopes to bind models to views and directives to extend HTML syntax. - Key components include modules, controllers, services and routing to organize an app. - Batarang is a Chrome plugin that helps debug and inspect AngularJS apps.

angularjsjavascriptframework
DEMO
(if time permits :)
Bootstrapped app

•
•

Let's see a quick Angular App
Bootstrapped from Yeoman
Where you can find me:
Author: Nicolas Embleton @: nicolas.embleton@gmail.com
Presentation made for “Google Developer Day GDayX 2013 Vietnam”
You can follow me at:
https://plus.google.com/+NicolasEmbleton
https://twitter.com/nicolasembleton

•
•

And the Javascript Ho Chi Minh City Meetup:
http://meetup.com/JavaScript-Ho-Chi-Minh-City/
https://www.facebook.com/JavaScriptHCMC
https://plus.google.com/communities/116105314977285194967

•
•
•

o

Our group is looking for Projects to mentor. If you have a project you want support for, contact me
Resources
Learning

•
•
•

Learning AngularJS by the example (+60 minutes-ish training video)

•
•

http://docs.angularjs.org/guide/dev_guide.templates.databinding

http://www.nganimate.org/
https://github.com/angular-ui/ui-router
o It's a full "nested-view" library
ng-learn.org

Reusable Components

•
•

http://ngmodules.org/
http://www.directiv.es/

Recommended for you

From Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) AgainFrom Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) Again

As a software consultant, I get to see a lot of interesting code. In this particular instance a client was in the process of transforming their web application to a rich, interactive interface with the help of another company. The project kicked off using Backbone and things were great. Until they were not great. Pages starting getting more and more involved and blame started being thrown at the technology choice. A move to Ember.js ensued and the app was rewritten. But architecturally bad decisions don't hide long, and soon the rewrite was preforming even worse. That's when I stepped in, with the help of another consultant, to solve the performance issues once and for all. Our solution used Backbone.js and it was fast. This is that journey.

backboneember.jsconsulting
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started

In this presentation, you will find everything need to get started with AngularJS. For more details, have a look at my blog (http://stephanebegaudeau.tumblr.com) or follow me on twitter (@sbegaudeau)

angularangularjsjavascript
Yeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web appsYeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web apps

This was a course given in Bangalore India for JSChannel conf 2013. It encompases the use of angular js and d3 in a harmonious way and gives an overview over each of the frameworks / libraries.

anguarjsyeomand3js

More Related Content

What's hot

Bootstrap과 UI-Bootstrap
Bootstrap과 UI-BootstrapBootstrap과 UI-Bootstrap
Bootstrap과 UI-Bootstrap
WebFrameworks
 
Vue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue routerVue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue router
Katy Slemon
 
Vue business first
Vue business firstVue business first
Vue business first
Vitalii Ratyshnyi
 
Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...
Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...
Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...
IT Event
 
Top 45 jQuery Interview Questions and Answers | Edureka
Top 45 jQuery Interview Questions and Answers | EdurekaTop 45 jQuery Interview Questions and Answers | Edureka
Top 45 jQuery Interview Questions and Answers | Edureka
Edureka!
 
The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)
David Gibbons
 
Reactive Type-safe WebComponents
Reactive Type-safe WebComponentsReactive Type-safe WebComponents
Reactive Type-safe WebComponents
Martin Hochel
 
Building and deploying React applications
Building and deploying React applicationsBuilding and deploying React applications
Building and deploying React applications
Astrails
 
Gae
GaeGae
Building a Startup Stack with AngularJS
Building a Startup Stack with AngularJSBuilding a Startup Stack with AngularJS
Building a Startup Stack with AngularJS
FITC
 
JavaScript Advanced - Useful methods to power up your code
JavaScript Advanced - Useful methods to power up your codeJavaScript Advanced - Useful methods to power up your code
JavaScript Advanced - Useful methods to power up your code
Laurence Svekis ✔
 
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!
David Gibbons
 
An introduction to Vue.js
An introduction to Vue.jsAn introduction to Vue.js
An introduction to Vue.js
Pagepro
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
Nagaraju Sangam
 
An Introduction to Vuejs
An Introduction to VuejsAn Introduction to Vuejs
An Introduction to Vuejs
Paddy Lock
 
High Performance Django
High Performance DjangoHigh Performance Django
High Performance Django
DjangoCon2008
 
Django for mobile applications
Django for mobile applicationsDjango for mobile applications
Django for mobile applications
Hassan Abid
 
HTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreHTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymore
Remy Sharp
 
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJRealize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Leonardo Balter
 
WordPress-Templates mit Twig erstellen - PHPUGFFM
WordPress-Templates mit Twig erstellen - PHPUGFFMWordPress-Templates mit Twig erstellen - PHPUGFFM
WordPress-Templates mit Twig erstellen - PHPUGFFM
Walter Ebert
 

What's hot (20)

Bootstrap과 UI-Bootstrap
Bootstrap과 UI-BootstrapBootstrap과 UI-Bootstrap
Bootstrap과 UI-Bootstrap
 
Vue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue routerVue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue router
 
Vue business first
Vue business firstVue business first
Vue business first
 
Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...
Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...
Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...
 
Top 45 jQuery Interview Questions and Answers | Edureka
Top 45 jQuery Interview Questions and Answers | EdurekaTop 45 jQuery Interview Questions and Answers | Edureka
Top 45 jQuery Interview Questions and Answers | Edureka
 
The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)
 
Reactive Type-safe WebComponents
Reactive Type-safe WebComponentsReactive Type-safe WebComponents
Reactive Type-safe WebComponents
 
Building and deploying React applications
Building and deploying React applicationsBuilding and deploying React applications
Building and deploying React applications
 
Gae
GaeGae
Gae
 
Building a Startup Stack with AngularJS
Building a Startup Stack with AngularJSBuilding a Startup Stack with AngularJS
Building a Startup Stack with AngularJS
 
JavaScript Advanced - Useful methods to power up your code
JavaScript Advanced - Useful methods to power up your codeJavaScript Advanced - Useful methods to power up your code
JavaScript Advanced - Useful methods to power up your code
 
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!
 
An introduction to Vue.js
An introduction to Vue.jsAn introduction to Vue.js
An introduction to Vue.js
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
 
An Introduction to Vuejs
An Introduction to VuejsAn Introduction to Vuejs
An Introduction to Vuejs
 
High Performance Django
High Performance DjangoHigh Performance Django
High Performance Django
 
Django for mobile applications
Django for mobile applicationsDjango for mobile applications
Django for mobile applications
 
HTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreHTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymore
 
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJRealize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
 
WordPress-Templates mit Twig erstellen - PHPUGFFM
WordPress-Templates mit Twig erstellen - PHPUGFFMWordPress-Templates mit Twig erstellen - PHPUGFFM
WordPress-Templates mit Twig erstellen - PHPUGFFM
 

Similar to gDayX 2013 - Advanced AngularJS - Nicolas Embleton

Nicolas Embleton, Advanced Angular JS
Nicolas Embleton, Advanced Angular JSNicolas Embleton, Advanced Angular JS
Nicolas Embleton, Advanced Angular JS
JavaScript Meetup HCMC
 
GDayX - Advanced Angular.JS
GDayX - Advanced Angular.JSGDayX - Advanced Angular.JS
GDayX - Advanced Angular.JS
Nicolas Embleton
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
murtazahaveliwala
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
Nicolas PENNEC
 
Angular - Beginner
Angular - BeginnerAngular - Beginner
Angular - Beginner
Riccardo Masetti
 
ZZ BC#7.5 asp.net mvc practice and guideline refresh!
ZZ BC#7.5 asp.net mvc practice  and guideline refresh! ZZ BC#7.5 asp.net mvc practice  and guideline refresh!
ZZ BC#7.5 asp.net mvc practice and guideline refresh!
Chalermpon Areepong
 
Mini-Training: AngularJS
Mini-Training: AngularJSMini-Training: AngularJS
Mini-Training: AngularJS
Betclic Everest Group Tech Team
 
From Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) AgainFrom Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) Again
jonknapp
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
Stéphane Bégaudeau
 
Yeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web appsYeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web apps
climboid
 
Basics of AngularJS
Basics of AngularJSBasics of AngularJS
Basics of AngularJS
Filip Janevski
 
AngularJS Workshop
AngularJS WorkshopAngularJS Workshop
AngularJS Workshop
Gianluca Cacace
 
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp BerlinTech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
LeanIX GmbH
 
Intro to AngularJs
Intro to AngularJsIntro to AngularJs
Intro to AngularJs
SolTech, Inc.
 
Angular or Backbone: Go Mobile!
Angular or Backbone: Go Mobile!Angular or Backbone: Go Mobile!
Angular or Backbone: Go Mobile!
Doris Chen
 
Knolx session
Knolx sessionKnolx session
Knolx session
Knoldus Inc.
 
GDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App EngineGDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App Engine
Yared Ayalew
 
ME vs WEB - AngularJS Fundamentals
ME vs WEB - AngularJS FundamentalsME vs WEB - AngularJS Fundamentals
ME vs WEB - AngularJS Fundamentals
Aviran Cohen
 
Intro To Django
Intro To DjangoIntro To Django
Intro To Django
Udi Bauman
 
Angular Js Basics
Angular Js BasicsAngular Js Basics
Angular Js Basics
أحمد عبد الوهاب
 

Similar to gDayX 2013 - Advanced AngularJS - Nicolas Embleton (20)

Nicolas Embleton, Advanced Angular JS
Nicolas Embleton, Advanced Angular JSNicolas Embleton, Advanced Angular JS
Nicolas Embleton, Advanced Angular JS
 
GDayX - Advanced Angular.JS
GDayX - Advanced Angular.JSGDayX - Advanced Angular.JS
GDayX - Advanced Angular.JS
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
 
Angular - Beginner
Angular - BeginnerAngular - Beginner
Angular - Beginner
 
ZZ BC#7.5 asp.net mvc practice and guideline refresh!
ZZ BC#7.5 asp.net mvc practice  and guideline refresh! ZZ BC#7.5 asp.net mvc practice  and guideline refresh!
ZZ BC#7.5 asp.net mvc practice and guideline refresh!
 
Mini-Training: AngularJS
Mini-Training: AngularJSMini-Training: AngularJS
Mini-Training: AngularJS
 
From Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) AgainFrom Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) Again
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
 
Yeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web appsYeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web apps
 
Basics of AngularJS
Basics of AngularJSBasics of AngularJS
Basics of AngularJS
 
AngularJS Workshop
AngularJS WorkshopAngularJS Workshop
AngularJS Workshop
 
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp BerlinTech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
 
Intro to AngularJs
Intro to AngularJsIntro to AngularJs
Intro to AngularJs
 
Angular or Backbone: Go Mobile!
Angular or Backbone: Go Mobile!Angular or Backbone: Go Mobile!
Angular or Backbone: Go Mobile!
 
Knolx session
Knolx sessionKnolx session
Knolx session
 
GDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App EngineGDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App Engine
 
ME vs WEB - AngularJS Fundamentals
ME vs WEB - AngularJS FundamentalsME vs WEB - AngularJS Fundamentals
ME vs WEB - AngularJS Fundamentals
 
Intro To Django
Intro To DjangoIntro To Django
Intro To Django
 
Angular Js Basics
Angular Js BasicsAngular Js Basics
Angular Js Basics
 

Recently uploaded

WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
Lidia A.
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
BookNet Canada
 
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
Matthew Sinclair
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
jackson110191
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Erasmo Purificato
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
Mark Billinghurst
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
Tatiana Al-Chueyr
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
Liveplex
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
Aurora Consulting
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
Bert Blevins
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
SynapseIndia
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
RaminGhanbari2
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
rajancomputerfbd
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
Stephanie Beckett
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
ishalveerrandhawa1
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
HackersList
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
Sally Laouacheria
 

Recently uploaded (20)

WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
 
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
 

gDayX 2013 - Advanced AngularJS - Nicolas Embleton

  • 2. About me Nicolas Embleton, French in Ho Chi Minh City • 2005 - Software Engineer and System Architect, working on legacy tech stacks (C++, OpenGL, Java, ...) then quickly Web (PHP) • • • 2009 - Founded a Mobile Development Company of 30 individuals 2011 - Started Datafield Startup, Co-founder, CTO 2013 - Started the Javascript Ho Chi Minh City meetup, Getting active in Startup Vietnamese scene to support and mentor young talents
  • 3. Agenda • • • • • • • • Quick Intro Bootstrapping Why Angular? Main features, and why it's awesome Best practices Testing, tooling And SEO? Final words
  • 4. Intro (quick) From Wikipedia: AngularJS is built around the belief that declarative programming should be used for building UIs and wiring software components, while imperative programming is excellent for expressing business logic. The framework adapts and extends traditional HTML to better serve dynamic content through two-way databinding that allows for the automatic synchronization of models and views. As a result, AngularJS deemphasizes DOM manipulation and improves testability.
  • 5. Angular JS quick review • • • • • • • Templating Model View Controller (MVC) Extends HTML (very flexible) 2-ways Data-binding Very reusable (if you follow best practices) Improves testability (because it is reusable) Provides routing, history, jqLite, ...
  • 6. Bootstrapping • Using angular-seeds o git clone https://github.com/angular/angular-seed.git o node scripts/web-server.js o open http://localhost:8000/app/index.html • Using yeoman (excellent workflow tool) o o o o o (sudo) npm install -g yo (sudo) npm install -g generator-angular yo angular bower install angular-ui grunt server
  • 7. Now, the meat, the main features • • • • • • Templating Routing 2-ways data-binding Directives, services Dependency Injection Inter-components Communication
  • 8. Templating • Models o o • 2-way binding Easy property mapping Built-in directives o ngView Where the routing happens o ngRepeat Iterator o o ngIf ngSwitch
  • 9. Templating - Conditional with ngIf <div ng-repeat="message in data.messages" ng-class="message.type"> <hr> <div ng-if="showFrom(message)"> <div>From: {{message.from.name}}</div> </div> <div ng-if="showCreatedBy(message)"> <div>Created by: {{message.createdBy.name}}</div> </div> <div ng-if="showTo(message)"> <div>To: {{message.to.name}}</div> </div> </div>
  • 10. Templating - Nested repeat <div ng-repeat="group in groups"><!-- 1st ng-repeat level --> <h2>{{ group.label }}</h2> <ul> <li ng-repeat="friend in group.friends"> <!-- 2nd ng-repeat level --> {{ friend.name }} </li> </ul><!-- END: Inner ngRepeat. --> </div><!-- END: Outer ngRepeat. -->
  • 11. Templating - Example 2 - Switch <div ng-switch on="selection" > <div ng-switch-when="settings">Settings Div</div> <span ng-switch-when="home">Home Span</span> <span ng-switch-default>default</span> </div>
  • 12. Example 2.2 - Switch with 2-way bind <div ng-controller="Ctrl"> <select ng-model="selection" ng-options="item for item in items"> </select> <tt>selection={{selection}}</tt> <hr/> <div class="animate-switch-container" ng-switch on="selection"> <div ng-switch-when="settings">Settings Div</div> <div ng-switch-when="home">Home Span</div> <div ng-switch-default>default</div> </div> </div>
  • 13. Templating - Simple ngRepeat <li ng-repeat="item in items"> Item: {{ item }} </li>
  • 14. Templating - Complex ngRepeat <header ng-repeat-start="item in items"> Header {{ item }} </header> <div class="body"> Body {{ item }} </div> <footer ng-repeat-end> Footer {{ item }} </footer>
  • 15. Compiling // compile the new DOM and link it to the current scope. // NOTE: we only compile .childNodes so that // we don't get into infinite loop compiling ourselves $compile(element.contents())(scope);
  • 16. Templating - Routing • • • • Happens in ngView Routing is a very powerful feature Allows to update "pieces" of the page Can stream files from disk to make it truly isolated
  • 17. 2-ways data-binding • • • • Becoming more standard, thanks to frameworks like Ember.js or Angular.js • Example Linking 2 fields for synchronization purpose Linking data to model Automatically updating the template as data is changed o Arrays / Collections o Inputs o etc…
  • 18. 2-ways data-binding, example <input type="text" ng-model="title" style="width: 90%"/> <div ng-app="myapp"> <div ng-controller="mycontroller"> Title: {{ title }} <!-- 2-way data binding --> <hr> <div class="zippy" zippy-title="title"></div> </div> </div>
  • 19. Directives • • • Angular.js killer feature Great deal of re-usability Just look for directives at ngmodules.org
  • 20. Restricting Directives • • • • • "E": Element, <my-directive> "A": Attribute, <div my-directive> "C": Class, <div class="my-directive"> "M": Comment: <!-- directive: my-directive exp --> Combine (e.g. "EA") for more flexibility
  • 21. Communicating between directives • • Many design patterns The "backbonier" o • the emitter and the receiver A more connected example o the directive combinations and controller sharing
  • 22. Communicating between directives app.directive('directiveA', function($rootScope){ return function(scope, element, attrs) { // $rootScope = App Scope // scope = Current scope (ctrl) $rootScope.$on('someEvent', function(){ // From here we can react anytime there's an event "someEvent" triggered }); }; });
  • 23. Communicating between directives app.directive('gdayx', function() { // Creating the directive return { restrict: 'E', // Restricted to "element" controller: function($scope) { $scope.what = ""; this.is = function(what) { // Creating the controller of the directive // Local data // External accessor $scope.what = what; } }, link: function($scope, $element){ $element.bind("click", function() { // Binding on click alert("GDayX is "+$scope.what); // Getting content from the Controller. }); } } });
  • 24. Communicating between directives // This directive will "send" data to the first directive app.directive('is', function() { // Creating the directive return { require: "gdayx", // Requiring the "gdayx" controller restrict: 'A', // Restricting to "attribute" link: function(scope, element, attrs, gdayxCtrl) { // gdayxCtrl from the "require: 'gdayx'" gdayxCtrl.is(attrs.is); // Passing value to the "gdayx" controller } } });
  • 25. AngularJS - Why is it awesome? • • • • • Mature, production-ready Feature-rich The design and what it allows Strong support from giants like Google A lot of solid companies are embracing it o o o Ebay Commerce Network DoubleClick (Google) - Marketing Manager & Planner YouTube APP on PS3
  • 26. Best Practices • • Organize the code well (Captain Obvious!) Organize modules by feature angular.module('users', ['utilities']); angular.module('groups', ['utilities']); angular.module('mainApp', ['users', 'groups']); • • Use the reusability as much as possible Use the testability as much as possible o o TDD BDD?
  • 27. Testing, tooling • • • • • • Yeoman o Super workflow tool and generator/scaffolder Batarang o Chrome Debugger Extension, (A must have), link Grunt o Task runner Bower o Package Manager for JS Libraries Protractor, Karma o Test Runner Jasmine, Mocha o Test Frameworks
  • 28. And SEO? • Google "Snapshot" famous technic o o o • • _escaped_fragment_ Turns this: http://prerender.io/getting-started#html5-pushstate Into this: http://prerender.io/getting-started?_escaped_fragment_=html5pushstate prerender.io/ - Open Source project brombone.com/ - Commercial project
  • 29. Enterprise project with Angular? • • YES BUT
  • 30. Enterprise project with Angular? • • YES BUT o o o Follow best practices (easier said than done) System Architecture is KEY to a solid system As "Agile" would advise, always try to go for simpler but "well-thought" "team-friendly"designs.
  • 31. Enterprise project with Angular? • An example Architecture Legacy Front End Backend (legacy) Experimental Front End DB Backend (experimental) Server-side team realm Experimental Front End 2 Front-End team realm
  • 32. Final Words • • Angular 1.0.x is mature Angular 1.2+ will bring more awesomeness o o Better and Fluid Animations (js/css3) More flexibility and functionalities $interval: add a service wrapping setInterval Event directives: add ngCopy, ngCut, and ngPaste jQuery 1.10.x support
  • 34. Bootstrapped app • • Let's see a quick Angular App Bootstrapped from Yeoman
  • 35. Where you can find me: Author: Nicolas Embleton @: nicolas.embleton@gmail.com Presentation made for “Google Developer Day GDayX 2013 Vietnam” You can follow me at: https://plus.google.com/+NicolasEmbleton https://twitter.com/nicolasembleton • • And the Javascript Ho Chi Minh City Meetup: http://meetup.com/JavaScript-Ho-Chi-Minh-City/ https://www.facebook.com/JavaScriptHCMC https://plus.google.com/communities/116105314977285194967 • • • o Our group is looking for Projects to mentor. If you have a project you want support for, contact me
  • 36. Resources Learning • • • Learning AngularJS by the example (+60 minutes-ish training video) • • http://docs.angularjs.org/guide/dev_guide.templates.databinding http://www.nganimate.org/ https://github.com/angular-ui/ui-router o It's a full "nested-view" library ng-learn.org Reusable Components • • http://ngmodules.org/ http://www.directiv.es/