SlideShare a Scribd company logo
Robert Winterbottom @RWinter85
Aamir Suleman @iSpatial
Slides: http://bit.ly/1Fb5ZHk
Make JavaScript Lean, Mean, and Clean
Mesquite C
March 11th , 2:30pm
Overview
• Gulp
• RequireJS Optimizer
• Other considerations
Gulp
• Task Automation
• Simple and Efficient
Gulp – Common Uses
1. JSLint
2. Code Minification
3. Image Optimization
4. FTP
5. Watch files
Gulp – What is needed?
• Install NodeJS
• Install Gulp
• Get the Ingredients
gulp-* plugins
• Make the Recipe
gulpfile.js
Gulp - Plugin
Gulp – More Plugins
• gulp-concat
• gulp-autoprefixer
• gulp-minify-html
• gulp-imagemin
• gulp-uglify
• http://gulpjs.com/plugins/
Gulp - Chaining
development workflow
• Jade  HTML
• Stylus  CSS on edit
• JavaScript JSLint on edit
• Minify
• Port only require files (no jade, stylus, etc)
• FTP the build
build workflow
Demo : GulpJS
Build Option 2
• Concatenate JS files to a single file using
RequireJS Optimizer
RequireJS Optimizer
• Simple to use !!!
• Open source
• Optimize your AMD
modules
• Works easily with your
favorite task runner or
directly in node.js
What can the optimizer do for you?
• Make your app load faster
• require your css and have it
inlined into the bundle.
• Generate multiple bundles, or
layers, for single or multi page
applications, including shared
bundles.
• Minimize the number of http
requests made when your app
loads.
src version
built
version
src folder build folder
~ 20 items
~ 100 KB
~ 3 items
~ 44 KB
Getting Started
• Grunt
• npm install grunt-contrib-requirejs --save
• Gulp
• npm install gulp-requirejs --save
• Node.js
• npm install requirejs --save
Installation
Dependencies
• node.js
• or Java (although I have not used this approach)
• or Browser (new way to generate bundles)
Simple example with Grunt
Simple example with Gulp
Build Profile
Build Profile Explained
• baseUrl - base directory for the project
• paths - these are the packages you configured in
dojoConfig or require config
• empty: - special reserved word for empty or CDN
modules, such as esri, dijit, dojo, etc.
• name - name of your entry file (minus the .js extension), this
is where the optimizer will start looking for dependencies
• out - Where to put the bundled file
Gotchas
• plugins
• dojo/text!myTemplate.html
• CDN or empty resources
• must be specified as empty: in the build
profile
• Aliases
• full path specified in build profile, not
relative to packages.
• Example:
'MainModel': 'app/js/models/Main'
as opposed to:
'MainModel': 'models/Main'
source: http://i.verylol.com/
Additional Considerations
• Gzip
• CloudFront, CloudFlare
• AppCache – several gotchas!
• Service Workers – coming soon…
Resources
• https://developers.arcgis.com/javascript/
• https://github.com/requirejs/example-multipage/
• http://requirejs.org
• https://github.com/requirejs/
• http://gruntjs.com/
• http://gulpjs.com/
Questions
Github Code example
http://bit.ly/1A6JXzR
http://bit.ly/1Fb5ZHk
• @RWinter85
• @iSpatial

More Related Content

What's hot

Introduction to GulpJs
Introduction to GulpJsIntroduction to GulpJs
Introduction to GulpJs
Harish Gadiya
 
JavaScript Task Runners - Gulp & Grunt
JavaScript Task Runners - Gulp & GruntJavaScript Task Runners - Gulp & Grunt
JavaScript Task Runners - Gulp & Grunt
Lohith Goudagere Nagaraj
 
Composer Tools & Frameworks for Drupal
Composer Tools & Frameworks for DrupalComposer Tools & Frameworks for Drupal
Composer Tools & Frameworks for Drupal
Pantheon
 
Gulp: Task Runner
Gulp: Task RunnerGulp: Task Runner
Gulp: Task Runner
Christopher Bautista
 
Introduction to NodeJS with LOLCats
Introduction to NodeJS with LOLCatsIntroduction to NodeJS with LOLCats
Introduction to NodeJS with LOLCats
Derek Anderson
 
Drush and drupal. администрирование волчек михаил
Drush and drupal. администрирование  волчек михаилDrush and drupal. администрирование  волчек михаил
Drush and drupal. администрирование волчек михаилdrupalconf
 
Gulp: Your Build Process Will Thank You
Gulp: Your Build Process Will Thank YouGulp: Your Build Process Will Thank You
Gulp: Your Build Process Will Thank You
RadWorks
 
通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用
通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用
通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用
Shengyou Fan
 
Drupal, git and sanity
Drupal, git and sanityDrupal, git and sanity
Drupal, git and sanity
Charlie Morris
 
How a Content Delivery Network Can Help Speed Up Your Website
How a Content Delivery Network Can Help Speed Up Your WebsiteHow a Content Delivery Network Can Help Speed Up Your Website
How a Content Delivery Network Can Help Speed Up Your Website
Mediacurrent
 
Heroku Dockerの使い所
Heroku Dockerの使い所Heroku Dockerの使い所
Heroku Dockerの使い所
Yusuke Kon
 
Testing in GO
Testing in GOTesting in GO
Testing in GO
song jiayang
 
Ktor 101 (以 Ktor 實作 Website 範例)
Ktor 101 (以 Ktor 實作 Website 範例)Ktor 101 (以 Ktor 實作 Website 範例)
Ktor 101 (以 Ktor 實作 Website 範例)
Shengyou Fan
 
The development workflow of git github for beginners
The development workflow of git github for beginnersThe development workflow of git github for beginners
The development workflow of git github for beginners
Gunjan Patel
 
GDG Kraków - Intro to front-end automation using bower.js & grunt.js
GDG Kraków - Intro to front-end automation using bower.js & grunt.jsGDG Kraków - Intro to front-end automation using bower.js & grunt.js
GDG Kraków - Intro to front-end automation using bower.js & grunt.js
Dominik Prokop
 
TDC2016SP - Esqueça Grunt ou Gulp. Webpack and NPM rule them all!
TDC2016SP -  Esqueça Grunt ou Gulp. Webpack and NPM rule them all!TDC2016SP -  Esqueça Grunt ou Gulp. Webpack and NPM rule them all!
TDC2016SP - Esqueça Grunt ou Gulp. Webpack and NPM rule them all!
tdc-globalcode
 
Mongo db - How we use Go and MongoDB by Sam Helman
Mongo db - How we use Go and MongoDB by Sam HelmanMongo db - How we use Go and MongoDB by Sam Helman
Mongo db - How we use Go and MongoDB by Sam Helman
Hakka Labs
 
Bootstrap vs. Skeleton
Bootstrap vs. SkeletonBootstrap vs. Skeleton
Bootstrap vs. Skeleton
Juho Vepsäläinen
 
Create a RESTful API with NodeJS, Express and MongoDB
Create a RESTful API with NodeJS, Express and MongoDBCreate a RESTful API with NodeJS, Express and MongoDB
Create a RESTful API with NodeJS, Express and MongoDB
Hengki Sihombing
 
Scripting with NodeJS
Scripting with NodeJSScripting with NodeJS
Scripting with NodeJS
Ben Pearson
 

What's hot (20)

Introduction to GulpJs
Introduction to GulpJsIntroduction to GulpJs
Introduction to GulpJs
 
JavaScript Task Runners - Gulp & Grunt
JavaScript Task Runners - Gulp & GruntJavaScript Task Runners - Gulp & Grunt
JavaScript Task Runners - Gulp & Grunt
 
Composer Tools & Frameworks for Drupal
Composer Tools & Frameworks for DrupalComposer Tools & Frameworks for Drupal
Composer Tools & Frameworks for Drupal
 
Gulp: Task Runner
Gulp: Task RunnerGulp: Task Runner
Gulp: Task Runner
 
Introduction to NodeJS with LOLCats
Introduction to NodeJS with LOLCatsIntroduction to NodeJS with LOLCats
Introduction to NodeJS with LOLCats
 
Drush and drupal. администрирование волчек михаил
Drush and drupal. администрирование  волчек михаилDrush and drupal. администрирование  волчек михаил
Drush and drupal. администрирование волчек михаил
 
Gulp: Your Build Process Will Thank You
Gulp: Your Build Process Will Thank YouGulp: Your Build Process Will Thank You
Gulp: Your Build Process Will Thank You
 
通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用
通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用
通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用
 
Drupal, git and sanity
Drupal, git and sanityDrupal, git and sanity
Drupal, git and sanity
 
How a Content Delivery Network Can Help Speed Up Your Website
How a Content Delivery Network Can Help Speed Up Your WebsiteHow a Content Delivery Network Can Help Speed Up Your Website
How a Content Delivery Network Can Help Speed Up Your Website
 
Heroku Dockerの使い所
Heroku Dockerの使い所Heroku Dockerの使い所
Heroku Dockerの使い所
 
Testing in GO
Testing in GOTesting in GO
Testing in GO
 
Ktor 101 (以 Ktor 實作 Website 範例)
Ktor 101 (以 Ktor 實作 Website 範例)Ktor 101 (以 Ktor 實作 Website 範例)
Ktor 101 (以 Ktor 實作 Website 範例)
 
The development workflow of git github for beginners
The development workflow of git github for beginnersThe development workflow of git github for beginners
The development workflow of git github for beginners
 
GDG Kraków - Intro to front-end automation using bower.js & grunt.js
GDG Kraków - Intro to front-end automation using bower.js & grunt.jsGDG Kraków - Intro to front-end automation using bower.js & grunt.js
GDG Kraków - Intro to front-end automation using bower.js & grunt.js
 
TDC2016SP - Esqueça Grunt ou Gulp. Webpack and NPM rule them all!
TDC2016SP -  Esqueça Grunt ou Gulp. Webpack and NPM rule them all!TDC2016SP -  Esqueça Grunt ou Gulp. Webpack and NPM rule them all!
TDC2016SP - Esqueça Grunt ou Gulp. Webpack and NPM rule them all!
 
Mongo db - How we use Go and MongoDB by Sam Helman
Mongo db - How we use Go and MongoDB by Sam HelmanMongo db - How we use Go and MongoDB by Sam Helman
Mongo db - How we use Go and MongoDB by Sam Helman
 
Bootstrap vs. Skeleton
Bootstrap vs. SkeletonBootstrap vs. Skeleton
Bootstrap vs. Skeleton
 
Create a RESTful API with NodeJS, Express and MongoDB
Create a RESTful API with NodeJS, Express and MongoDBCreate a RESTful API with NodeJS, Express and MongoDB
Create a RESTful API with NodeJS, Express and MongoDB
 
Scripting with NodeJS
Scripting with NodeJSScripting with NodeJS
Scripting with NodeJS
 

Viewers also liked

The School District Demographics System (SDDS) Goes Mobile! - Blue Raster NCE...
The School District Demographics System (SDDS) Goes Mobile! - Blue Raster NCE...The School District Demographics System (SDDS) Goes Mobile! - Blue Raster NCE...
The School District Demographics System (SDDS) Goes Mobile! - Blue Raster NCE...Blue Raster
 
NCES School District Mapping
NCES School District MappingNCES School District Mapping
NCES School District MappingBlue Raster
 
Kill those bugs with the ultimate tool - Chrome DevTools
Kill those bugs with the ultimate tool - Chrome DevToolsKill those bugs with the ultimate tool - Chrome DevTools
Kill those bugs with the ultimate tool - Chrome DevToolsBlue Raster
 
The Power of Story Maps, Data Visualization, and Analysis: NetHope and Blue R...
The Power of Story Maps, Data Visualization, and Analysis: NetHope and Blue R...The Power of Story Maps, Data Visualization, and Analysis: NetHope and Blue R...
The Power of Story Maps, Data Visualization, and Analysis: NetHope and Blue R...
Blue Raster
 
Total Knockout: Start-to-Finish Development of Suitability Applications Using...
Total Knockout: Start-to-Finish Development of Suitability Applications Using...Total Knockout: Start-to-Finish Development of Suitability Applications Using...
Total Knockout: Start-to-Finish Development of Suitability Applications Using...
Blue Raster
 
Creating Apps with Maps in AppStudio - Esri User Conference 2015 Presentation
Creating Apps with Maps in AppStudio - Esri User Conference 2015 PresentationCreating Apps with Maps in AppStudio - Esri User Conference 2015 Presentation
Creating Apps with Maps in AppStudio - Esri User Conference 2015 Presentation
Blue Raster
 

Viewers also liked (6)

The School District Demographics System (SDDS) Goes Mobile! - Blue Raster NCE...
The School District Demographics System (SDDS) Goes Mobile! - Blue Raster NCE...The School District Demographics System (SDDS) Goes Mobile! - Blue Raster NCE...
The School District Demographics System (SDDS) Goes Mobile! - Blue Raster NCE...
 
NCES School District Mapping
NCES School District MappingNCES School District Mapping
NCES School District Mapping
 
Kill those bugs with the ultimate tool - Chrome DevTools
Kill those bugs with the ultimate tool - Chrome DevToolsKill those bugs with the ultimate tool - Chrome DevTools
Kill those bugs with the ultimate tool - Chrome DevTools
 
The Power of Story Maps, Data Visualization, and Analysis: NetHope and Blue R...
The Power of Story Maps, Data Visualization, and Analysis: NetHope and Blue R...The Power of Story Maps, Data Visualization, and Analysis: NetHope and Blue R...
The Power of Story Maps, Data Visualization, and Analysis: NetHope and Blue R...
 
Total Knockout: Start-to-Finish Development of Suitability Applications Using...
Total Knockout: Start-to-Finish Development of Suitability Applications Using...Total Knockout: Start-to-Finish Development of Suitability Applications Using...
Total Knockout: Start-to-Finish Development of Suitability Applications Using...
 
Creating Apps with Maps in AppStudio - Esri User Conference 2015 Presentation
Creating Apps with Maps in AppStudio - Esri User Conference 2015 PresentationCreating Apps with Maps in AppStudio - Esri User Conference 2015 Presentation
Creating Apps with Maps in AppStudio - Esri User Conference 2015 Presentation
 

Similar to Make JavaScript Lean, Mean, and Clean

Gulp js
Gulp jsGulp js
Gulp js
Ken Gilbert
 
Grunt and Bower
Grunt and BowerGrunt and Bower
Grunt and Bower
George Estebe
 
Introduction to using Grunt & Bower with WordPress theme development
Introduction to using Grunt & Bower with WordPress theme developmentIntroduction to using Grunt & Bower with WordPress theme development
Introduction to using Grunt & Bower with WordPress theme development
James Bundey
 
Building JavaScript
Building JavaScriptBuilding JavaScript
Building JavaScript
Brady Clifford
 
Modern Development Tools
Modern Development ToolsModern Development Tools
Modern Development Tools
Ye Maw
 
Android gradle-build-system-overview
Android gradle-build-system-overviewAndroid gradle-build-system-overview
Android gradle-build-system-overview
Kevin He
 
License compliance in embedded linux with the yocto project
License compliance in embedded linux with the yocto projectLicense compliance in embedded linux with the yocto project
License compliance in embedded linux with the yocto project
Paul Barker
 
GulpJs - An Introduction
GulpJs - An IntroductionGulpJs - An Introduction
GulpJs - An Introduction
Knoldus Inc.
 
Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014Mandi Walls
 
Better WordPress Theme Development Workflow
Better WordPress Theme Development WorkflowBetter WordPress Theme Development Workflow
Better WordPress Theme Development Workflow
Rajeeb Banstola
 
Gulp - The Streaming Build System
Gulp - The Streaming Build SystemGulp - The Streaming Build System
Gulp - The Streaming Build System
TO THE NEW | Technology
 
Using Grunt with Drupal
Using Grunt with DrupalUsing Grunt with Drupal
Using Grunt with Drupal
arithmetric
 
Automate your WordPress Workflow with Grunt.js
Automate your WordPress Workflow with Grunt.jsAutomate your WordPress Workflow with Grunt.js
Automate your WordPress Workflow with Grunt.js
Josh Lee
 
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Develcz
 
Packaging perl (LPW2010)
Packaging perl (LPW2010)Packaging perl (LPW2010)
Packaging perl (LPW2010)
p3castro
 
World is changed. i feel it in the front end
World is changed. i feel it in the front endWorld is changed. i feel it in the front end
World is changed. i feel it in the front end
Andriy Yun
 
Puppet Camp Denver 2015: Nagios Management With Puppet
Puppet Camp Denver 2015: Nagios Management With PuppetPuppet Camp Denver 2015: Nagios Management With Puppet
Puppet Camp Denver 2015: Nagios Management With Puppet
Puppet
 
Gradle - Build System
Gradle - Build SystemGradle - Build System
Gradle - Build System
Jeevesh Pandey
 
NodeJS - Server Side JS
NodeJS - Server Side JS NodeJS - Server Side JS
NodeJS - Server Side JS
Ganesh Kondal
 
GIT, RVM, FIRST HEROKU APP
GIT, RVM, FIRST HEROKU APPGIT, RVM, FIRST HEROKU APP
GIT, RVM, FIRST HEROKU APP
Pavel Tyk
 

Similar to Make JavaScript Lean, Mean, and Clean (20)

Gulp js
Gulp jsGulp js
Gulp js
 
Grunt and Bower
Grunt and BowerGrunt and Bower
Grunt and Bower
 
Introduction to using Grunt & Bower with WordPress theme development
Introduction to using Grunt & Bower with WordPress theme developmentIntroduction to using Grunt & Bower with WordPress theme development
Introduction to using Grunt & Bower with WordPress theme development
 
Building JavaScript
Building JavaScriptBuilding JavaScript
Building JavaScript
 
Modern Development Tools
Modern Development ToolsModern Development Tools
Modern Development Tools
 
Android gradle-build-system-overview
Android gradle-build-system-overviewAndroid gradle-build-system-overview
Android gradle-build-system-overview
 
License compliance in embedded linux with the yocto project
License compliance in embedded linux with the yocto projectLicense compliance in embedded linux with the yocto project
License compliance in embedded linux with the yocto project
 
GulpJs - An Introduction
GulpJs - An IntroductionGulpJs - An Introduction
GulpJs - An Introduction
 
Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014
 
Better WordPress Theme Development Workflow
Better WordPress Theme Development WorkflowBetter WordPress Theme Development Workflow
Better WordPress Theme Development Workflow
 
Gulp - The Streaming Build System
Gulp - The Streaming Build SystemGulp - The Streaming Build System
Gulp - The Streaming Build System
 
Using Grunt with Drupal
Using Grunt with DrupalUsing Grunt with Drupal
Using Grunt with Drupal
 
Automate your WordPress Workflow with Grunt.js
Automate your WordPress Workflow with Grunt.jsAutomate your WordPress Workflow with Grunt.js
Automate your WordPress Workflow with Grunt.js
 
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
 
Packaging perl (LPW2010)
Packaging perl (LPW2010)Packaging perl (LPW2010)
Packaging perl (LPW2010)
 
World is changed. i feel it in the front end
World is changed. i feel it in the front endWorld is changed. i feel it in the front end
World is changed. i feel it in the front end
 
Puppet Camp Denver 2015: Nagios Management With Puppet
Puppet Camp Denver 2015: Nagios Management With PuppetPuppet Camp Denver 2015: Nagios Management With Puppet
Puppet Camp Denver 2015: Nagios Management With Puppet
 
Gradle - Build System
Gradle - Build SystemGradle - Build System
Gradle - Build System
 
NodeJS - Server Side JS
NodeJS - Server Side JS NodeJS - Server Side JS
NodeJS - Server Side JS
 
GIT, RVM, FIRST HEROKU APP
GIT, RVM, FIRST HEROKU APPGIT, RVM, FIRST HEROKU APP
GIT, RVM, FIRST HEROKU APP
 

More from Blue Raster

ArcGIS Maps and Microsoft Integration: Power BI
ArcGIS Maps and Microsoft Integration: Power BIArcGIS Maps and Microsoft Integration: Power BI
ArcGIS Maps and Microsoft Integration: Power BI
Blue Raster
 
ArcGIS StoryMaps: Agencies Are Creating Great Story Maps; Here's How You Can Too
ArcGIS StoryMaps: Agencies Are Creating Great Story Maps; Here's How You Can TooArcGIS StoryMaps: Agencies Are Creating Great Story Maps; Here's How You Can Too
ArcGIS StoryMaps: Agencies Are Creating Great Story Maps; Here's How You Can Too
Blue Raster
 
Unless We Act Now: Impact of Climate Change on Children
Unless We Act Now: Impact of Climate Change on ChildrenUnless We Act Now: Impact of Climate Change on Children
Unless We Act Now: Impact of Climate Change on Children
Blue Raster
 
ESRI Federal Small Business Specialty 2017 Partner of the Year Award
ESRI Federal Small Business Specialty 2017 Partner of the Year AwardESRI Federal Small Business Specialty 2017 Partner of the Year Award
ESRI Federal Small Business Specialty 2017 Partner of the Year Award
Blue Raster
 
Emerging Hot Spot Analysis
Emerging Hot Spot AnalysisEmerging Hot Spot Analysis
Emerging Hot Spot Analysis
Blue Raster
 
Fighting Climate Change by Fighting Fires - Esri FedGIS 2016 Presentation
Fighting Climate Change by Fighting Fires - Esri FedGIS 2016 PresentationFighting Climate Change by Fighting Fires - Esri FedGIS 2016 Presentation
Fighting Climate Change by Fighting Fires - Esri FedGIS 2016 Presentation
Blue Raster
 
AppStudio for ArcGIS: The Basics - Esri FedGIS 2016
AppStudio for ArcGIS: The Basics - Esri FedGIS 2016AppStudio for ArcGIS: The Basics - Esri FedGIS 2016
AppStudio for ArcGIS: The Basics - Esri FedGIS 2016
Blue Raster
 
Blue Raster Natureserve Synergy Workshop Presentation
Blue Raster Natureserve Synergy Workshop PresentationBlue Raster Natureserve Synergy Workshop Presentation
Blue Raster Natureserve Synergy Workshop Presentation
Blue Raster
 
Blue Raster Presents on Emerging Hotspots of Global Tree Cover Loss
Blue Raster Presents on Emerging Hotspots of Global Tree Cover LossBlue Raster Presents on Emerging Hotspots of Global Tree Cover Loss
Blue Raster Presents on Emerging Hotspots of Global Tree Cover Loss
Blue Raster
 
U.S. National Arboretum - Esri User Conference 2015 Presentation
U.S. National Arboretum - Esri User Conference 2015 Presentation U.S. National Arboretum - Esri User Conference 2015 Presentation
U.S. National Arboretum - Esri User Conference 2015 Presentation
Blue Raster
 
Best Practices for Story Maps
Best Practices for Story MapsBest Practices for Story Maps
Best Practices for Story Maps
Blue Raster
 
Building a Custom UI Control with D3 - 2015 Esri Devoloper Summit
Building a Custom UI Control with D3 - 2015 Esri Devoloper SummitBuilding a Custom UI Control with D3 - 2015 Esri Devoloper Summit
Building a Custom UI Control with D3 - 2015 Esri Devoloper SummitBlue Raster
 
Building a Custom UI control with D3
Building a Custom UI control with D3Building a Custom UI control with D3
Building a Custom UI control with D3Blue Raster
 
Great Story Maps - Blue Raster Esri User Conference 2014 Presentation
Great Story Maps - Blue Raster Esri User Conference 2014 PresentationGreat Story Maps - Blue Raster Esri User Conference 2014 Presentation
Great Story Maps - Blue Raster Esri User Conference 2014 Presentation
Blue Raster
 
Online Mapping Patterns in 2013 and Beyond
Online Mapping Patterns in 2013 and BeyondOnline Mapping Patterns in 2013 and Beyond
Online Mapping Patterns in 2013 and Beyond
Blue Raster
 
Harnessing Python
Harnessing PythonHarnessing Python
Harnessing Python
Blue Raster
 
Migrating Department of Education Web Mapping App to AWS EC2
Migrating Department of Education Web Mapping App to AWS EC2Migrating Department of Education Web Mapping App to AWS EC2
Migrating Department of Education Web Mapping App to AWS EC2
Blue Raster
 
PADDDtracker: Crowdsourcing PADDDs Using the Power of ArcGIS for Server - 201...
PADDDtracker: Crowdsourcing PADDDs Using the Power of ArcGIS for Server - 201...PADDDtracker: Crowdsourcing PADDDs Using the Power of ArcGIS for Server - 201...
PADDDtracker: Crowdsourcing PADDDs Using the Power of ArcGIS for Server - 201...
Blue Raster
 
Javascript Editing Tools Made Easy Blue Raster - Esri Developer Summit 2013 L...
Javascript Editing Tools Made Easy Blue Raster - Esri Developer Summit 2013 L...Javascript Editing Tools Made Easy Blue Raster - Esri Developer Summit 2013 L...
Javascript Editing Tools Made Easy Blue Raster - Esri Developer Summit 2013 L...Blue Raster
 
Python Multiprocessing Spoon-fed - Blue Raster Esri Developer Summit 2013 Lig...
Python Multiprocessing Spoon-fed - Blue Raster Esri Developer Summit 2013 Lig...Python Multiprocessing Spoon-fed - Blue Raster Esri Developer Summit 2013 Lig...
Python Multiprocessing Spoon-fed - Blue Raster Esri Developer Summit 2013 Lig...Blue Raster
 

More from Blue Raster (20)

ArcGIS Maps and Microsoft Integration: Power BI
ArcGIS Maps and Microsoft Integration: Power BIArcGIS Maps and Microsoft Integration: Power BI
ArcGIS Maps and Microsoft Integration: Power BI
 
ArcGIS StoryMaps: Agencies Are Creating Great Story Maps; Here's How You Can Too
ArcGIS StoryMaps: Agencies Are Creating Great Story Maps; Here's How You Can TooArcGIS StoryMaps: Agencies Are Creating Great Story Maps; Here's How You Can Too
ArcGIS StoryMaps: Agencies Are Creating Great Story Maps; Here's How You Can Too
 
Unless We Act Now: Impact of Climate Change on Children
Unless We Act Now: Impact of Climate Change on ChildrenUnless We Act Now: Impact of Climate Change on Children
Unless We Act Now: Impact of Climate Change on Children
 
ESRI Federal Small Business Specialty 2017 Partner of the Year Award
ESRI Federal Small Business Specialty 2017 Partner of the Year AwardESRI Federal Small Business Specialty 2017 Partner of the Year Award
ESRI Federal Small Business Specialty 2017 Partner of the Year Award
 
Emerging Hot Spot Analysis
Emerging Hot Spot AnalysisEmerging Hot Spot Analysis
Emerging Hot Spot Analysis
 
Fighting Climate Change by Fighting Fires - Esri FedGIS 2016 Presentation
Fighting Climate Change by Fighting Fires - Esri FedGIS 2016 PresentationFighting Climate Change by Fighting Fires - Esri FedGIS 2016 Presentation
Fighting Climate Change by Fighting Fires - Esri FedGIS 2016 Presentation
 
AppStudio for ArcGIS: The Basics - Esri FedGIS 2016
AppStudio for ArcGIS: The Basics - Esri FedGIS 2016AppStudio for ArcGIS: The Basics - Esri FedGIS 2016
AppStudio for ArcGIS: The Basics - Esri FedGIS 2016
 
Blue Raster Natureserve Synergy Workshop Presentation
Blue Raster Natureserve Synergy Workshop PresentationBlue Raster Natureserve Synergy Workshop Presentation
Blue Raster Natureserve Synergy Workshop Presentation
 
Blue Raster Presents on Emerging Hotspots of Global Tree Cover Loss
Blue Raster Presents on Emerging Hotspots of Global Tree Cover LossBlue Raster Presents on Emerging Hotspots of Global Tree Cover Loss
Blue Raster Presents on Emerging Hotspots of Global Tree Cover Loss
 
U.S. National Arboretum - Esri User Conference 2015 Presentation
U.S. National Arboretum - Esri User Conference 2015 Presentation U.S. National Arboretum - Esri User Conference 2015 Presentation
U.S. National Arboretum - Esri User Conference 2015 Presentation
 
Best Practices for Story Maps
Best Practices for Story MapsBest Practices for Story Maps
Best Practices for Story Maps
 
Building a Custom UI Control with D3 - 2015 Esri Devoloper Summit
Building a Custom UI Control with D3 - 2015 Esri Devoloper SummitBuilding a Custom UI Control with D3 - 2015 Esri Devoloper Summit
Building a Custom UI Control with D3 - 2015 Esri Devoloper Summit
 
Building a Custom UI control with D3
Building a Custom UI control with D3Building a Custom UI control with D3
Building a Custom UI control with D3
 
Great Story Maps - Blue Raster Esri User Conference 2014 Presentation
Great Story Maps - Blue Raster Esri User Conference 2014 PresentationGreat Story Maps - Blue Raster Esri User Conference 2014 Presentation
Great Story Maps - Blue Raster Esri User Conference 2014 Presentation
 
Online Mapping Patterns in 2013 and Beyond
Online Mapping Patterns in 2013 and BeyondOnline Mapping Patterns in 2013 and Beyond
Online Mapping Patterns in 2013 and Beyond
 
Harnessing Python
Harnessing PythonHarnessing Python
Harnessing Python
 
Migrating Department of Education Web Mapping App to AWS EC2
Migrating Department of Education Web Mapping App to AWS EC2Migrating Department of Education Web Mapping App to AWS EC2
Migrating Department of Education Web Mapping App to AWS EC2
 
PADDDtracker: Crowdsourcing PADDDs Using the Power of ArcGIS for Server - 201...
PADDDtracker: Crowdsourcing PADDDs Using the Power of ArcGIS for Server - 201...PADDDtracker: Crowdsourcing PADDDs Using the Power of ArcGIS for Server - 201...
PADDDtracker: Crowdsourcing PADDDs Using the Power of ArcGIS for Server - 201...
 
Javascript Editing Tools Made Easy Blue Raster - Esri Developer Summit 2013 L...
Javascript Editing Tools Made Easy Blue Raster - Esri Developer Summit 2013 L...Javascript Editing Tools Made Easy Blue Raster - Esri Developer Summit 2013 L...
Javascript Editing Tools Made Easy Blue Raster - Esri Developer Summit 2013 L...
 
Python Multiprocessing Spoon-fed - Blue Raster Esri Developer Summit 2013 Lig...
Python Multiprocessing Spoon-fed - Blue Raster Esri Developer Summit 2013 Lig...Python Multiprocessing Spoon-fed - Blue Raster Esri Developer Summit 2013 Lig...
Python Multiprocessing Spoon-fed - Blue Raster Esri Developer Summit 2013 Lig...
 

Recently uploaded

FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 

Make JavaScript Lean, Mean, and Clean

Editor's Notes

  1. Dsfrswf fsfsr
  2. Streaming Build System, Task runner Gulp.js makes use of pipes for streaming data that needs to be processed. Easier than Grunt Several Plugins Easy to use By preferring code over configuration, gulp keeps things simple and makes complex tasks manageable. Efficient Using the power of node streams, gulp gives you fast builds that don't write intermediary files to disk. High Quality By enforcing strict plugin guidelines, we ensure that plugins stay simple and work as expected. Easy to Learn Using node best practices and maintaining a minimal API surface, your build works exactly as you would imagine.
  3. It's a JavaScript Worker, so it can't access the DOM directly. Instead, a service worker can communicate with the pages it controls by responding to messages sent via the postMessage interface, and those pages can manipulate the DOM if needed. Service worker is a programmable network proxy, allowing you to control how network requests from your page are handled. It will be terminated when not in use, and restarted when it's next needed, so you cannot rely on global state within a service worker's onfetch andonmessage handlers. If there is information that you need to persist and reuse across restarts, service workers do have access to the IndexedDB API. Service workers make extensive use of promises, so if you're new to promises, then you should stop reading this and check out Jake Archibald's article.