javascript applications for the enterprise: building for ...npm install –g bower bower install...

31
JavaScript Applications for the Enterprise: Building for Production GEORGE BOCHENEK // RANDY JONES @bosshenek @randysjones

Upload: others

Post on 24-May-2020

17 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

JavaScript Applications

for the Enterprise:

Building for ProductionGEORGE BOCHENEK // RANDY JONES

@bosshenek @randysjones

Page 2: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

Production

A Typical Userhttp://www.webperformancetoday.com/2012/02/28/4-awesome-slides-showing-how-page-speed-correlates-to-business-metrics-at-walmart-com/

Page 3: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

gzip is awesome

Page 4: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev
Page 5: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

Your images are too big

Page 6: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev
Page 7: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

Blocking Elements

Page 8: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev
Page 9: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev
Page 10: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev
Page 11: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev
Page 12: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev
Page 13: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

Build Components

Page 14: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev
Page 15: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

BowerA package manager

for the web

http://bower.io

Page 16: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

npm install –g bower

bower install arcgis-js-api --save-dev

bower install Esri/arcgis-js-api#4.6.0 --save-dev

Page 17: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

{

"name": "arcgis-js-api-sample-app",

"version": "1.0.0",

"license": "Apache-2.0",

“devDependencies": {

"esri": "arcgis-js-api#4.6.0"

}

}

bower.json

Page 18: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

{

"directory": “."

}

{

"directory": “build-src"

}

.bowerrc

Page 19: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

Running the Build

node ./dojo/dojo load="build",

profile="../../build/buildProject.profile.js",

profiles=null, appConfigFile=null, package=null,

packages=null, require=null, requires=null,

releaseDir="../../build-temp/js", action=null,

cwd="./build-src/js", dojoConfig=null,

basePath="."

Page 20: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

Build Automation

Page 21: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

npm install –g grunt-cli

npm install grunt-dojo --save-dev

npm install grunt-replace --save-dev

Page 22: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

{

"name": "enterprise-test-sample",

"version": "1.0.0",

"description": “…

"main": "Gruntfile.js",

"devDependencies": {

"grunt": "^0.4.5",

"grunt-contrib-clean": "^1.0.0",

"grunt-contrib-copy": "^1.0.0",

"grunt-dojo": "^1.1.1",

"grunt-karma": "^0.12.1",

"grunt-replace": "^0.11.0",

"karma": "^0.13.22",

"karma-chrome-launcher": "^0.1.4",

"karma-dojo": "0.0.1",

"karma-jasmine": "^0.1.5",

"karma-junit-reporter": "^0.3.8"

}

}

package.json

npm install

Page 23: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

Sample Projecthttps://github.com/Esri/enterprise-build-sample-js

Page 24: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

Continuous Integration

Page 25: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

What about…

Web AppBuilder?

Page 26: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

Separate Your Code

https://github.com/Esri/generator-esri-appbuilder-js

Web AppBuilderDev Edition

generate

watchCopywidget

git

create

Page 27: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

Source Control the Right Things

https://github.com/Esri/generator-esri-appbuilder-js

Web AppBuilderDev Edition

generate

watchCopywidget watch

Config ProjectCopy

configs

git

git

createWidget Project git

Page 28: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

Web AppBuilder Pipeline

https://github.com/rsjones/wab-config

Web AppBuilderDev Edition

Config Projectgit git

createWidget Project git

Template App w/All Widgets

App to build

Copy to app directory

App.zip deploy

https://github.com/rsjones/wab-widget

Submodule

Page 29: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

Web Dev Best Practices

https://developers.google.com/speed/pagespeed/insights/

https://github.com/h5bp/server-configs

https://developers.google.com/web/tools/lighthouse/

Custom App Example

https://github.com/Esri/enterprise-build-sample-js

Web AppBuilder Resources

App SeparationExample: https://github.com/rsjones/wab-config

https://github.com/rsjones/wab-widget

https://github.com/gbochenek/esri-wab-build

https://github.com/Esri/generator-esri-appbuilder-js

Resources

Page 30: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev
Page 31: JavaScript Applications for the Enterprise: Building for ...npm install –g bower bower install arcgis-js-api --save-dev bower install Esri/arcgis-js-api#4.6.0 --save-dev

Questions?George Bochenek

@bosshenekRandy Jones@randysjone