SlideShare a Scribd company logo
1 of 57
Download to read offline
High quality
MarcBächingerPrincipalconsultant,HTML5Evangelist
talkpoweredbyZühlkeJScrew!
MichaelSchnyderSoftwareEngineer,Dronepilot
THEY SAID: „JAVASCRIPT ISTHE
FUTURE OF COMPUTING“
THEY SAID: „JAVASCRIPT ISTHE
FUTURE OF COMPUTING“
dynamictyping
very-latebinding
dynamictyping
very-latebinding
must run to be verified!
BONE AND BANE OF JS
$.ajax({

url: "person/2",

dataType: "json",

success: function (obj) {

var person = new Person();

$.extend(person, obj);

global.person.push(person);

}

});
BONE AND BANE OF JS
$.ajax({

url: "person/42",

dataType: "json",

success: function (obj) {

$.extend(Person.prototype, obj);

}

});
BONE AND BANE OF JS
$.ajax({

url: "person/2",

dataType: "json",

success: function (obj) {

var person = new Person();

if (someCondition(obj)) {

$.extend(person, {

getFullname: function () {

return first + " " + last;

}

});

}

global.person.push(person);

}

});
COUNTERMEASURES!
DEVELOPMENT CYCLE
findbugs, checkstyle
IDE
compile
testing
jUnit
selenium
Java
DEVELOPMENT CYCLE
findbugs, checkstyle
IDE
compile
testing
jUnit
selenium
Java
DEVELOPMENT CYCLE
static code analysis
development
productionalizing
concatenate
minimize
testing
unit test
component tests
JavaScript
findbugs, checkstyle
IDE
compile
testing
jUnit
selenium
Java
ARCHITECTURE AND DESIGN
MODULES!
require(["app/services"], 

function(services) {

// use services

}

);
TOOL CHAIN
!
TOOL PARADE
jshint
uglify
esprima
require.js
less
bower
istanbul
karma
jasmine
DEVELOPMENT CYCLE
grunt jshint
IDE/Editor/CI
productionalizing
cssmin
htmlcompress
testing
jasmine
qunit
uglify
concatenate
JSHINT - NOT A COMPILER
app/scripts/domain-factory.js
!
line 4 col 3 Missing "use strict" statement.
line 11 col 47 'suffix' is defined but never used.
line 16 col 22 Missing semicolon.
line 35 col 5 'person' is not defined.
line 37 col 11 Expected '===' and instead saw '=='.
line 38 col 5 Expected '{' and instead saw 'c'.
line 38 col 5 Expected 'c' to have an indentation at 7 instead at 5.
line 43 col 24 Missing 'new' prefix when invoking a constructor.
RELEASE WITH GRUNT
jshint
copy
concat
uglify cssmin htmlprocessor
karma
checkstyle findbugs
copywebfilestodistributiondirectory
concatenatefile(js,css)
minimize
runtests
GRUNT AS OFTEN AS IT GETS
jshint
copy
concat
uglify cssmin htmlprocessor
karma
GRUNT AS OFTEN AS IT GETS
jshint
copy
concat
uglify cssmin htmlprocessor
karma
onlocalfilechange
GRUNT AS OFTEN AS IT GETS
jshint
copy
concat
uglify cssmin htmlprocessor
karma
onlocalfilechange
onpushtorepository
TOOL INTEGRATION
BARE BONE BUILD
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
*.html *.js *.css
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
Editor
Browser
CI MIT JENKINS
CI MIT JENKINS
WEBSTORM IDE
MICROSOFT
What is Microsofts answer for developing
Enterprise JavaScript Applications?
JAVASCRIPT FOR 	

VISUAL STUDIO
“Enable efficient SPA development	

on the .NET platform by providing a proven,	

enterprise-ready toolchain”
ZÜHLKE SPA STACK
HIGH QUALITY JAVASCRIPT ?
WHATTO DO ?
leverageJavaScriptbuildtools
toolintegration
continuousintegration
unittesting
architectureanddesign
thx!
@marcbaechinger
BACKUP SLIDES
GRUNTFILE.JS
module.exports = function(grunt) {

var DOC_ROOT = "public_html",

DIST_DIR = "build";



grunt.initConfig({

pkg: grunt.file.readJSON('package.json'),

copy: {

dist: {

files: [

{

expand: true,

src: [DOC_ROOT + '/**'],

dest: DIST_DIR

}

]

}

},

[...]

}

};
GRUNT: BASE
{

"name": "jquery-app",

"version": "0.0.0",

"devDependencies": {

"grunt": "~0.4.1",

"grunt-contrib-jshint": "~0.6.0",

"grunt-contrib-nodeunit": "~0.2.0",

"grunt-contrib-concat": "~0.1.3",

"grunt-contrib-uglify": "~0.2.0",

"grunt-contrib-copy": "~0.4.1",

"grunt-contrib-clean": "~0.4.1",

"grunt-contrib-cssmin": "~0.6.1",

"grunt-htmlcompressor": "~0.1.8",

"grunt-contrib-watch": "~0.3.1",

"grunt-regarde": "~0.1.1",

"grunt-contrib-connect": "0.1.2",

"grunt-contrib-livereload": "0.1.1"

"grunt-open": "~0.2.2",

"grunt-karma": "~0.6.1",

"karma": "~0.10.1",

"karma-chrome-launcher": "~0.1.0",

"karma-jasmine": "~0.1.0",

"karma-qunit": "~0.1.0",

"karma-html2js-preprocessor": "~0.1"

}

}
GRUNT: LIVE RELOAD
{

"name": "jquery-app",

"version": "0.0.0",

"devDependencies": {

"grunt": "~0.4.1",

"grunt-contrib-jshint": "~0.6.0",

"grunt-contrib-nodeunit": "~0.2.0",

"grunt-contrib-concat": "~0.1.3",

"grunt-contrib-uglify": "~0.2.0",

"grunt-contrib-copy": "~0.4.1",

"grunt-contrib-clean": "~0.4.1",

"grunt-contrib-cssmin": "~0.6.1",

"grunt-htmlcompressor": "~0.1.8",

"grunt-contrib-watch": "~0.3.1",

"grunt-regarde": "~0.1.1",

"grunt-contrib-connect": "0.1.2",

"grunt-contrib-livereload": "0.1.1"

"grunt-open": "~0.2.2",

"grunt-karma": "~0.6.1",

"karma": "~0.10.1",

"karma-chrome-launcher": "~0.1.0",

"karma-jasmine": "~0.1.0",

"karma-qunit": "~0.1.0",

"karma-html2js-preprocessor": "~0.1"

}

}
GRUNT: LIVE RELOAD
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
*.html *.js *.css
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
Editor
Browser
GRUNT: LIVE RELOAD
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
*.html *.js *.css
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
Editor
Browser
watches
1
GRUNT: LIVE RELOAD
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
*.html *.js *.css
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
Editor
Browser
save
2
watches
1
GRUNT: LIVE RELOAD
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
*.html *.js *.css
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
Editor
Browser
save
2
watches
1
request reload
3
GRUNT: LIVE RELOAD
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
*.html *.js *.css
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
Editor
Browser
save
2
watches
1
request reload
3
load
4
GRUNT: KARMA
{

"name": "jquery-app",

"version": "0.0.0",

"devDependencies": {

"grunt": "~0.4.1",

"grunt-contrib-jshint": "~0.6.0",

"grunt-contrib-nodeunit": "~0.2.0",

"grunt-contrib-concat": "~0.1.3",

"grunt-contrib-uglify": "~0.2.0",

"grunt-contrib-copy": "~0.4.1",

"grunt-contrib-clean": "~0.4.1",

"grunt-contrib-cssmin": "~0.6.1",

"grunt-htmlcompressor": "~0.1.8",

"grunt-contrib-watch": "~0.3.1",

"grunt-regarde": "~0.1.1",

"grunt-contrib-connect": "0.1.2",

"grunt-contrib-livereload": "0.1.1"

"grunt-open": "~0.2.2",

"grunt-karma": "~0.6.1",

"karma": "~0.10.1",

"karma-chrome-launcher": "~0.1.0",

"karma-jasmine": "~0.1.0",

"karma-qunit": "~0.1.0",

"karma-html2js-preprocessor": "~0.1"

}

}
GRUNT: KARMA
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
*.html *.js *.css
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
fooSpec.jsbarSpec.jsbarSpec.js
Chrome Firefox
Android
iOS
fooSpec.jsbarSpec.jsbarSpec.js
fooSpec.jsbarSpec.jsbarSpec.jsfooSpec.jsbarSpec.jsfooSpec.js
Karma
GRUNT: KARMA
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
*.html *.js *.css
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
fooSpec.jsbarSpec.jsbarSpec.js
Chrome Firefox
Android
iOS
fooSpec.jsbarSpec.jsbarSpec.js
fooSpec.jsbarSpec.jsbarSpec.jsfooSpec.jsbarSpec.jsfooSpec.js
Karma
watches
1
GRUNT: KARMA
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
*.html *.js *.css
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
fooSpec.jsbarSpec.jsbarSpec.js
Chrome Firefox
Android
iOS
fooSpec.jsbarSpec.jsbarSpec.js
fooSpec.jsbarSpec.jsbarSpec.jsfooSpec.jsbarSpec.jsfooSpec.js
Karma
watches
1
register
2
GRUNT: KARMA
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
*.html *.js *.css
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
fooSpec.jsbarSpec.jsbarSpec.js
Chrome Firefox
Android
iOS
fooSpec.jsbarSpec.jsbarSpec.js
fooSpec.jsbarSpec.jsbarSpec.jsfooSpec.jsbarSpec.jsfooSpec.js
Karma
watches
1
register
2
3
changed
GRUNT: KARMA
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
*.html *.js *.css
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
fooSpec.jsbarSpec.jsbarSpec.js
Chrome Firefox
Android
iOS
fooSpec.jsbarSpec.jsbarSpec.js
fooSpec.jsbarSpec.jsbarSpec.jsfooSpec.jsbarSpec.jsfooSpec.js
Karma
watches
1
register
2
request rerun 4
3
changed
GRUNT: KARMA
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
*.html *.js *.css
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
fooSpec.jsbarSpec.jsbarSpec.js
Chrome Firefox
Android
iOS
fooSpec.jsbarSpec.jsbarSpec.js
fooSpec.jsbarSpec.jsbarSpec.jsfooSpec.jsbarSpec.jsfooSpec.js
Karma
watches
1
register
2
request rerun 4
execute5
3
changed
GRUNT: KARMA
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
*.html *.js *.css
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
---------------

---------------
---------------
---------------
---------------
fooSpec.jsbarSpec.jsbarSpec.js
Chrome Firefox
Android
iOS
fooSpec.jsbarSpec.jsbarSpec.js
fooSpec.jsbarSpec.jsbarSpec.jsfooSpec.jsbarSpec.jsfooSpec.js
Karma
watches
1
register
2
request rerun 4
execute5
test report
6
3
changed
RUNNING GRUNT WITH
MAVEN
• yeoman-maven-plugin	

• Exec Maven plugin

More Related Content

What's hot

High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax Applications
Julien Lecomte
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
Terry Ryan
 
WordPress Admin UI - Future Proofing Your Admin Pages
WordPress Admin UI - Future Proofing Your Admin PagesWordPress Admin UI - Future Proofing Your Admin Pages
WordPress Admin UI - Future Proofing Your Admin Pages
Brandon Dove
 
Taiwan Web Standards Talk 2011
Taiwan Web Standards Talk 2011Taiwan Web Standards Talk 2011
Taiwan Web Standards Talk 2011
Zi Bin Cheah
 

What's hot (20)

jQuery UI and Plugins
jQuery UI and PluginsjQuery UI and Plugins
jQuery UI and Plugins
 
HTML5 - Introduction
HTML5 - IntroductionHTML5 - Introduction
HTML5 - Introduction
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5
 
HTML 5 - Overview
HTML 5 - OverviewHTML 5 - Overview
HTML 5 - Overview
 
High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax Applications
 
Makezine
MakezineMakezine
Makezine
 
Intro to html 5
Intro to html 5Intro to html 5
Intro to html 5
 
How to make Ajax work for you
How to make Ajax work for youHow to make Ajax work for you
How to make Ajax work 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
 
HTML5 Essentials
HTML5 EssentialsHTML5 Essentials
HTML5 Essentials
 
Using Ember to Make a Bazillion Dollars
Using Ember to Make a Bazillion DollarsUsing Ember to Make a Bazillion Dollars
Using Ember to Make a Bazillion Dollars
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
 
HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?
 
ActiveDOM
ActiveDOMActiveDOM
ActiveDOM
 
WordPress Admin UI - Future Proofing Your Admin Pages
WordPress Admin UI - Future Proofing Your Admin PagesWordPress Admin UI - Future Proofing Your Admin Pages
WordPress Admin UI - Future Proofing Your Admin Pages
 
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
 
jQuery For Beginners - jQuery Conference 2009
jQuery For Beginners - jQuery Conference 2009jQuery For Beginners - jQuery Conference 2009
jQuery For Beginners - jQuery Conference 2009
 
Secure WordPress Development Practices
Secure WordPress Development PracticesSecure WordPress Development Practices
Secure WordPress Development Practices
 
Taiwan Web Standards Talk 2011
Taiwan Web Standards Talk 2011Taiwan Web Standards Talk 2011
Taiwan Web Standards Talk 2011
 
Web Standards: Fueling Innovation [Web Design World Boston '08]
Web Standards: Fueling Innovation [Web Design World Boston '08]Web Standards: Fueling Innovation [Web Design World Boston '08]
Web Standards: Fueling Innovation [Web Design World Boston '08]
 

Similar to High-Quality JavaScript

[rwdsummit] Adaptive Images in Responsive Web Design
[rwdsummit] Adaptive Images in Responsive Web Design[rwdsummit] Adaptive Images in Responsive Web Design
[rwdsummit] Adaptive Images in Responsive Web Design
Christopher Schmitt
 
"Your script just killed my site" by Steve Souders
"Your script just killed my site" by Steve Souders"Your script just killed my site" by Steve Souders
"Your script just killed my site" by Steve Souders
Dmitry Makarchuk
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
Chris Alfano
 

Similar to High-Quality JavaScript (20)

WordCamp Cologne - WordPress auf SPEED
WordCamp Cologne - WordPress auf SPEEDWordCamp Cologne - WordPress auf SPEED
WordCamp Cologne - WordPress auf SPEED
 
Burn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websitesBurn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websites
 
JavaScript Web Development
JavaScript Web DevelopmentJavaScript Web Development
JavaScript Web Development
 
[rwdsummit] Adaptive Images in Responsive Web Design
[rwdsummit] Adaptive Images in Responsive Web Design[rwdsummit] Adaptive Images in Responsive Web Design
[rwdsummit] Adaptive Images in Responsive Web Design
 
Writing your Third Plugin
Writing your Third PluginWriting your Third Plugin
Writing your Third Plugin
 
"Your script just killed my site" by Steve Souders
"Your script just killed my site" by Steve Souders"Your script just killed my site" by Steve Souders
"Your script just killed my site" by Steve Souders
 
Get Grulping with JavaScript Task Runners (Matt Gifford)
Get Grulping with JavaScript Task Runners (Matt Gifford)Get Grulping with JavaScript Task Runners (Matt Gifford)
Get Grulping with JavaScript Task Runners (Matt Gifford)
 
Container Days 2017 Hamburg - Plesk - How Docker helps tune Websites into Ra...
 Container Days 2017 Hamburg - Plesk - How Docker helps tune Websites into Ra... Container Days 2017 Hamburg - Plesk - How Docker helps tune Websites into Ra...
Container Days 2017 Hamburg - Plesk - How Docker helps tune Websites into Ra...
 
Container Days 2017 Hamburg - Plesk - How Docker helps tune Websites into Rac...
Container Days 2017 Hamburg - Plesk - How Docker helps tune Websites into Rac...Container Days 2017 Hamburg - Plesk - How Docker helps tune Websites into Rac...
Container Days 2017 Hamburg - Plesk - How Docker helps tune Websites into Rac...
 
Sanjeev ghai 12
Sanjeev ghai 12Sanjeev ghai 12
Sanjeev ghai 12
 
Nodejs meetup-12-2-2015
Nodejs meetup-12-2-2015Nodejs meetup-12-2-2015
Nodejs meetup-12-2-2015
 
CQRS, ReactJS, Docker in a nutshell
CQRS, ReactJS, Docker in a nutshellCQRS, ReactJS, Docker in a nutshell
CQRS, ReactJS, Docker in a nutshell
 
CQRS, React, Docker in a Nutshell
CQRS, React, Docker in a NutshellCQRS, React, Docker in a Nutshell
CQRS, React, Docker in a Nutshell
 
Docker cqrs react
Docker cqrs reactDocker cqrs react
Docker cqrs react
 
SPA, isomorphic and back to the server: our journey with JavaScript @ JsDay 2...
SPA, isomorphic and back to the server: our journey with JavaScript @ JsDay 2...SPA, isomorphic and back to the server: our journey with JavaScript @ JsDay 2...
SPA, isomorphic and back to the server: our journey with JavaScript @ JsDay 2...
 
Specification-Driven Development of REST APIs by Alexander Zinchuk
Specification-Driven Development of REST APIs by Alexander Zinchuk   Specification-Driven Development of REST APIs by Alexander Zinchuk
Specification-Driven Development of REST APIs by Alexander Zinchuk
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
 
(2018) Webpack Encore - Asset Management for the rest of us
(2018) Webpack Encore - Asset Management for the rest of us(2018) Webpack Encore - Asset Management for the rest of us
(2018) Webpack Encore - Asset Management for the rest of us
 
Automatically Assessing Code Understandability: How Far Are We?
Automatically Assessing Code Understandability: How Far Are We?Automatically Assessing Code Understandability: How Far Are We?
Automatically Assessing Code Understandability: How Far Are We?
 
Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015
 

More from Marc Bächinger

Architecting non-trivial browser applications (Jazoon 2012)
Architecting non-trivial browser applications (Jazoon 2012)Architecting non-trivial browser applications (Jazoon 2012)
Architecting non-trivial browser applications (Jazoon 2012)
Marc Bächinger
 

More from Marc Bächinger (8)

HTML5 unplugged
HTML5 unpluggedHTML5 unplugged
HTML5 unplugged
 
Modern web application network architecture
Modern web application network architectureModern web application network architecture
Modern web application network architecture
 
JavaScript toolchain
JavaScript toolchainJavaScript toolchain
JavaScript toolchain
 
JQuery primer
JQuery primerJQuery primer
JQuery primer
 
With your bare hands
With your bare handsWith your bare hands
With your bare hands
 
Architecting non-trivial browser applications (Jazoon 2012)
Architecting non-trivial browser applications (Jazoon 2012)Architecting non-trivial browser applications (Jazoon 2012)
Architecting non-trivial browser applications (Jazoon 2012)
 
Jax-rs-js Tutorial
Jax-rs-js TutorialJax-rs-js Tutorial
Jax-rs-js Tutorial
 
Html5 communication
Html5 communicationHtml5 communication
Html5 communication
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 

High-Quality JavaScript