SlideShare ist ein Scribd-Unternehmen logo
1 von 57
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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]
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Kürzlich hochgeladen (20)

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...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
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)
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
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
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 

High-Quality JavaScript