SlideShare uma empresa Scribd logo
1 de 57
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

HTML5 - Introduction
HTML5 - IntroductionHTML5 - Introduction
HTML5 - IntroductionDavy De Pauw
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5dynamis
 
High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax ApplicationsJulien Lecomte
 
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 youSimon Willison
 
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 - RJLeonardo Balter
 
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 DollarsMike Pack
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5Terry Ryan
 
HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?Remy Sharp
 
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 PagesBrandon Dove
 
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 anymoreRemy Sharp
 
jQuery For Beginners - jQuery Conference 2009
jQuery For Beginners - jQuery Conference 2009jQuery For Beginners - jQuery Conference 2009
jQuery For Beginners - jQuery Conference 2009Ralph Whitbeck
 
Secure WordPress Development Practices
Secure WordPress Development PracticesSecure WordPress Development Practices
Secure WordPress Development PracticesBrandon Dove
 
Taiwan Web Standards Talk 2011
Taiwan Web Standards Talk 2011Taiwan Web Standards Talk 2011
Taiwan Web Standards Talk 2011Zi Bin Cheah
 
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]Aaron Gustafson
 

Mais procurados (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]
 

Semelhante a High-Quality JavaScript

WordCamp Cologne - WordPress auf SPEED
WordCamp Cologne - WordPress auf SPEEDWordCamp Cologne - WordPress auf SPEED
WordCamp Cologne - WordPress auf SPEEDJan Löffler
 
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 websitesLindsay Holmwood
 
JavaScript Web Development
JavaScript Web DevelopmentJavaScript Web Development
JavaScript Web Developmentvito jeng
 
[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 DesignChristopher Schmitt
 
Writing your Third Plugin
Writing your Third PluginWriting your Third Plugin
Writing your Third PluginJustin Ryan
 
"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 SoudersDmitry Makarchuk
 
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)Future Insights
 
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...Plesk
 
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...Jan Löffler
 
CQRS, ReactJS, Docker in a nutshell
CQRS, ReactJS, Docker in a nutshellCQRS, ReactJS, Docker in a nutshell
CQRS, ReactJS, Docker in a nutshellAndrea Giuliano
 
CQRS, React, Docker in a Nutshell
CQRS, React, Docker in a NutshellCQRS, React, Docker in a Nutshell
CQRS, React, Docker in a NutshellClaudio D'Alicandro
 
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...Alessandro Nadalin
 
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 OdessaJS Conf
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Chris Alfano
 
(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 usStefan Adolf
 
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?sscalabrino
 
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 2015Holger Bartel
 

Semelhante a 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
 

Mais de Marc Bächinger

Modern web application network architecture
Modern web application network architectureModern web application network architecture
Modern web application network architectureMarc 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
 

Mais de 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
 

Último

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
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 Processorsdebabhi2
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
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 CVKhem
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
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...apidays
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
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 RobisonAnna Loughnan Colquhoun
 
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.pptxRustici Software
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
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 DiscoveryTrustArc
 
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...apidays
 
"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 ...Zilliz
 
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 2024The Digital Insurer
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 

Último (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
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
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
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
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
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...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
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
 
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
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
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
 
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...
 
"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 ...
 
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
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
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...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

High-Quality JavaScript