SlideShare uma empresa Scribd logo
1 de 11
Next “Tech” Big Thing
#1: Client-Side JavaScript
Is today‘s topic made of „Buzz“ words?
2
• React
• Angular 2
• jQuery 3
• Or is it the “JavaScript Fatigue”?
• article: How it feels to learn JavaScript in 2016
Before React...
3
• jQuery => Vanilla JS
• Tedious, error prone development (honestly)
• Hardly linked to DOM (slow & not portable)
• Story: jQuery Deferred !== ES6 Promise
• Backbone.JS
• MV-* architecture (is * == “missing”?)
• No rendering, empty View::render()
• Managing the “Events Hell”
• Angular 1.x
• I passed on this one... sorry!
• Rumor 1: doesn‘t scale (bi-dir. data binding)
• Rumor 2: unstable API (deprecated $scope)
About JavaScript
4
• For JS skepticals… JS is today everywhere (browser,
server, OS, IoT, …)
• Largely misunderstood language
• Functional + prototypal inheritance !== OO
• ES 5 is complex (function binding, scoping, …)
• ES.Next should make it easier and stronger
• Better functional programming (arrow func)
• Less variables... less bugs! (const)
• Ecma TC39 & language iterations
• Quizz: what‘s added in EcmaScript 2016?
About Functional Programming
5
• Functional vs OO programming
• Higher-order functions (map/reduce/…)
• Pure functions
• Immutable data structures
• Is it better for Async & Concurreny?
• OO = Threads & Atomics (and race conditons!)
• FP = map/reduce/... can be parallelized
• Rich Hickey‘s videos (Clojure)
• BUT Frontend Devs still need a Component Model
• Story: React ES6 Classes vs react-stamp
Then came React...
6
• Virtual DOM + diffing algorithm = faster rendering
• FP benefits = pure functions, composition, immutable
(shallow comparison)
• Component Model with ES6 Classes, props & state
• Flux/Redux solves the “Events Hell” (unidirectional flow)
• Strong ecosystem with side-projects like:
• React Native (mobile), Immutable, GraphQL (data),
Flow (static type analysis), …
Still some problems...
7
• React isn‘t a full-featured framework
• Needs time to assimile + assemble React libraries
• Criticized Facebook‘s Open Source license
• Redux adds some boilerplate
• Advanced FP is hard without Static Typing (Flow?)
• Exercise: let‘s play with map & categories
What‘s with Angular 2?
8
• Full-featured framework (faster project start?)
• demo: Angular-CLI
• Not much to do with Angular 1.x (thankfully)
• TypeScript 2 = „hate it or love it“
• Right balance of OO + FP (with ES7 Decorators)
• FP + Typing = you may not look backwards
• Ships with the Next Big Thing aka Observables (RxJS)
• Promises on „steroids“ (for event concurrency)
• TC39 stage 1 since Aug 2016
Does it match my wish list?
9
• In 2016, as Frontend Dev, I wish:
• a correct HTML5 Router => @angular/router
• to work with forms => @angular/forms
• A Flux/Redux approach => @ngrx/store
• Hot Reload & Time Travel: Angular-CLI (demo)
• Linting & Type analysis => TS + VS Code* (demo)
• Sourcemaps in browser => Angular-CLI (demo)
* or WebStorm!
What I get additionally (for free)
10
• Dependency Injection Engine (Spring-like)
• Might be better than with pure FP (exercice)
• CSS scoping (emulated or with Shadow DOM)
• Ahead-Of-Time compilation & Lazy routes loading
• RxJS, RxJS, RxJS, RxJS, RxJS
• Lots of good online resources:
• Official documentation: angular.io
• Youtube: Angular University, Angular Air
Thank you!
11
• Contact: frederic@coffeecircle.com
• Q&A
• ... more demos?

Mais conteúdo relacionado

Destaque

Customising civicrm
Customising civicrmCustomising civicrm
Customising civicrmChris Ward
 
Kế hoạch thi HK2 2015-2016
Kế hoạch thi HK2 2015-2016Kế hoạch thi HK2 2015-2016
Kế hoạch thi HK2 2015-2016Mãi Mãi Yêu
 
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...Prasid Pathak
 
Choosing Javascript Libraries to Adopt for Development
Choosing Javascript Libraries to Adopt for DevelopmentChoosing Javascript Libraries to Adopt for Development
Choosing Javascript Libraries to Adopt for DevelopmentEdward Apostol
 
ReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparisonReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparison500Tech
 
AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)Alex Ross
 
Komputarni shriftove
Komputarni shriftoveKomputarni shriftove
Komputarni shriftovefatmish
 
คณิต 50
คณิต 50คณิต 50
คณิต 50chugafull
 
атыгулова салтанат+приют для животных+клиенты
атыгулова салтанат+приют для животных+клиентыатыгулова салтанат+приют для животных+клиенты
атыгулова салтанат+приют для животных+клиентыSalta Atygulova
 

Destaque (17)

Customising civicrm
Customising civicrmCustomising civicrm
Customising civicrm
 
Kế hoạch thi HK2 2015-2016
Kế hoạch thi HK2 2015-2016Kế hoạch thi HK2 2015-2016
Kế hoạch thi HK2 2015-2016
 
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
 
Choosing Javascript Libraries to Adopt for Development
Choosing Javascript Libraries to Adopt for DevelopmentChoosing Javascript Libraries to Adopt for Development
Choosing Javascript Libraries to Adopt for Development
 
React vs Angular2
React vs Angular2React vs Angular2
React vs Angular2
 
ReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparisonReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparison
 
AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)
 
Deloitte disruption ahead IBM Watson
Deloitte disruption ahead IBM WatsonDeloitte disruption ahead IBM Watson
Deloitte disruption ahead IBM Watson
 
Komputarni shriftove
Komputarni shriftoveKomputarni shriftove
Komputarni shriftove
 
คณิต 50
คณิต 50คณิต 50
คณิต 50
 
haftalik dusunce ozgurlugu bulteni_13.05.31_22
haftalik dusunce ozgurlugu bulteni_13.05.31_22 haftalik dusunce ozgurlugu bulteni_13.05.31_22
haftalik dusunce ozgurlugu bulteni_13.05.31_22
 
2010 june secretary report
2010 june secretary report2010 june secretary report
2010 june secretary report
 
Ordinanza caldarola
Ordinanza caldarolaOrdinanza caldarola
Ordinanza caldarola
 
атыгулова салтанат+приют для животных+клиенты
атыгулова салтанат+приют для животных+клиентыатыгулова салтанат+приют для животных+клиенты
атыгулова салтанат+приют для животных+клиенты
 
UmiamFlyer_0
UmiamFlyer_0UmiamFlyer_0
UmiamFlyer_0
 
Ethnocentrism
EthnocentrismEthnocentrism
Ethnocentrism
 
Biotecnología
BiotecnologíaBiotecnología
Biotecnología
 

Semelhante a NTBT #1 "Client-Side JavaScript"

React server side rendering performance
React server side rendering performanceReact server side rendering performance
React server side rendering performanceNick Dreckshage
 
Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...
Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...
Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...Codecamp Romania
 
What we do with Go
What we do with GoWhat we do with Go
What we do with GoMarcelLanz
 
RubyConf China 2015 - Rails off assets pipeline
RubyConf China 2015 - Rails off assets pipelineRubyConf China 2015 - Rails off assets pipeline
RubyConf China 2015 - Rails off assets pipelineFlorian Dutey
 
An Angular developer moving to React
An Angular developer moving to ReactAn Angular developer moving to React
An Angular developer moving to ReactSouvik Basu
 
jQuery Conference 2012 keynote
jQuery Conference 2012 keynotejQuery Conference 2012 keynote
jQuery Conference 2012 keynotedmethvin
 
DIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development todayDIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development todayBojan Veljanovski
 
React.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UIReact.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UIMarcin Grzywaczewski
 
Google Developers Group - Porto Alegre # Introducing to AngularJS
Google Developers Group - Porto Alegre # Introducing to AngularJSGoogle Developers Group - Porto Alegre # Introducing to AngularJS
Google Developers Group - Porto Alegre # Introducing to AngularJSVinicius Linck
 
Intro to React Native
Intro to React NativeIntro to React Native
Intro to React NativeForSharing
 
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15React Native and the future of web technology (Mark Wilcox) - GreeceJS #15
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15GreeceJS
 
JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"
JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"
JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"GeeksLab Odessa
 
An Introduction to ReactNative
An Introduction to ReactNativeAn Introduction to ReactNative
An Introduction to ReactNativeMichał Taberski
 
Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Nuxeo
 
Realtime Analytics with MongoDB Counters (mongonyc 2012)
Realtime Analytics with MongoDB Counters (mongonyc 2012)Realtime Analytics with MongoDB Counters (mongonyc 2012)
Realtime Analytics with MongoDB Counters (mongonyc 2012)Scott Hernandez
 

Semelhante a NTBT #1 "Client-Side JavaScript" (20)

React server side rendering performance
React server side rendering performanceReact server side rendering performance
React server side rendering performance
 
Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...
Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...
Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...
 
React.js at Cortex
React.js at CortexReact.js at Cortex
React.js at Cortex
 
What we do with Go
What we do with GoWhat we do with Go
What we do with Go
 
RubyConf China 2015 - Rails off assets pipeline
RubyConf China 2015 - Rails off assets pipelineRubyConf China 2015 - Rails off assets pipeline
RubyConf China 2015 - Rails off assets pipeline
 
An Angular developer moving to React
An Angular developer moving to ReactAn Angular developer moving to React
An Angular developer moving to React
 
jQuery Conference 2012 keynote
jQuery Conference 2012 keynotejQuery Conference 2012 keynote
jQuery Conference 2012 keynote
 
DIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development todayDIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development today
 
JavaOne_2010
JavaOne_2010JavaOne_2010
JavaOne_2010
 
React.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UIReact.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UI
 
Jquery react angular
Jquery react angularJquery react angular
Jquery react angular
 
Google Developers Group - Porto Alegre # Introducing to AngularJS
Google Developers Group - Porto Alegre # Introducing to AngularJSGoogle Developers Group - Porto Alegre # Introducing to AngularJS
Google Developers Group - Porto Alegre # Introducing to AngularJS
 
Intro to React Native
Intro to React NativeIntro to React Native
Intro to React Native
 
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15React Native and the future of web technology (Mark Wilcox) - GreeceJS #15
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15
 
JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"
JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"
JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"
 
An Introduction to ReactNative
An Introduction to ReactNativeAn Introduction to ReactNative
An Introduction to ReactNative
 
JSON all the way
JSON all the wayJSON all the way
JSON all the way
 
Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011
 
Realtime Analytics with MongoDB Counters (mongonyc 2012)
Realtime Analytics with MongoDB Counters (mongonyc 2012)Realtime Analytics with MongoDB Counters (mongonyc 2012)
Realtime Analytics with MongoDB Counters (mongonyc 2012)
 
Frontend as a first class citizen
Frontend as a first class citizenFrontend as a first class citizen
Frontend as a first class citizen
 

Último

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 

Último (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 

NTBT #1 "Client-Side JavaScript"

  • 1. Next “Tech” Big Thing #1: Client-Side JavaScript
  • 2. Is today‘s topic made of „Buzz“ words? 2 • React • Angular 2 • jQuery 3 • Or is it the “JavaScript Fatigue”? • article: How it feels to learn JavaScript in 2016
  • 3. Before React... 3 • jQuery => Vanilla JS • Tedious, error prone development (honestly) • Hardly linked to DOM (slow & not portable) • Story: jQuery Deferred !== ES6 Promise • Backbone.JS • MV-* architecture (is * == “missing”?) • No rendering, empty View::render() • Managing the “Events Hell” • Angular 1.x • I passed on this one... sorry! • Rumor 1: doesn‘t scale (bi-dir. data binding) • Rumor 2: unstable API (deprecated $scope)
  • 4. About JavaScript 4 • For JS skepticals… JS is today everywhere (browser, server, OS, IoT, …) • Largely misunderstood language • Functional + prototypal inheritance !== OO • ES 5 is complex (function binding, scoping, …) • ES.Next should make it easier and stronger • Better functional programming (arrow func) • Less variables... less bugs! (const) • Ecma TC39 & language iterations • Quizz: what‘s added in EcmaScript 2016?
  • 5. About Functional Programming 5 • Functional vs OO programming • Higher-order functions (map/reduce/…) • Pure functions • Immutable data structures • Is it better for Async & Concurreny? • OO = Threads & Atomics (and race conditons!) • FP = map/reduce/... can be parallelized • Rich Hickey‘s videos (Clojure) • BUT Frontend Devs still need a Component Model • Story: React ES6 Classes vs react-stamp
  • 6. Then came React... 6 • Virtual DOM + diffing algorithm = faster rendering • FP benefits = pure functions, composition, immutable (shallow comparison) • Component Model with ES6 Classes, props & state • Flux/Redux solves the “Events Hell” (unidirectional flow) • Strong ecosystem with side-projects like: • React Native (mobile), Immutable, GraphQL (data), Flow (static type analysis), …
  • 7. Still some problems... 7 • React isn‘t a full-featured framework • Needs time to assimile + assemble React libraries • Criticized Facebook‘s Open Source license • Redux adds some boilerplate • Advanced FP is hard without Static Typing (Flow?) • Exercise: let‘s play with map & categories
  • 8. What‘s with Angular 2? 8 • Full-featured framework (faster project start?) • demo: Angular-CLI • Not much to do with Angular 1.x (thankfully) • TypeScript 2 = „hate it or love it“ • Right balance of OO + FP (with ES7 Decorators) • FP + Typing = you may not look backwards • Ships with the Next Big Thing aka Observables (RxJS) • Promises on „steroids“ (for event concurrency) • TC39 stage 1 since Aug 2016
  • 9. Does it match my wish list? 9 • In 2016, as Frontend Dev, I wish: • a correct HTML5 Router => @angular/router • to work with forms => @angular/forms • A Flux/Redux approach => @ngrx/store • Hot Reload & Time Travel: Angular-CLI (demo) • Linting & Type analysis => TS + VS Code* (demo) • Sourcemaps in browser => Angular-CLI (demo) * or WebStorm!
  • 10. What I get additionally (for free) 10 • Dependency Injection Engine (Spring-like) • Might be better than with pure FP (exercice) • CSS scoping (emulated or with Shadow DOM) • Ahead-Of-Time compilation & Lazy routes loading • RxJS, RxJS, RxJS, RxJS, RxJS • Lots of good online resources: • Official documentation: angular.io • Youtube: Angular University, Angular Air
  • 11. Thank you! 11 • Contact: frederic@coffeecircle.com • Q&A • ... more demos?