a comparison of the frontend javascript gui frameworks
play

A Comparison of the Frontend JavaScript GUI Frameworks Angular, - PowerPoint PPT Presentation

A Comparison of the Frontend JavaScript GUI Frameworks Angular, React, and Vue 1 History of Frontend GUIs 2 History of Frontend GUIs JavaScript Introduced in 1995 Standardized in 1997 by ECMA DOM Manipulations Plugins


  1. A Comparison of the Frontend JavaScript GUI Frameworks Angular, React, and Vue � 1

  2. History of Frontend GUIs � 2

  3. History of Frontend GUIs • JavaScript Introduced in 1995 • Standardized in 1997 by ECMA • DOM Manipulations • Plugins • jQuery in 2006 by John Resig � 3

  4. Component-Based Web Design � 4

  5. � 5

  6. � 6

  7. Component-Based Web Design • Brad Frost in 2013: „Atomic Design“ • Improved Stability • Separation of Concerns • Reusability • Cleaner Design • Predictability � 7

  8. Framework Overview � 8

  9. Angular • Mi š ko Hevery in 2009 • „Google Feedback“ • Angular 2 in 2016 • TypeScript • Two Separate Documentations • High Modularity � 9

  10. Angular <!-- greeter.component.html --> < h1 class="greeting">{{ this.name }}</ h1 > // greeter.component.ts import { Component, Input } from '@angular/core'; import template from './greeter.component.html' @Component ({ selector: 'greeter', template: template }) export class Greeter { @Input () name: string; } � 10

  11. React • Jordan Walke in 2011 • Facebook Newsfeed • Instagram • Open Sourced in 2013 • JSX • Data Management � 11

  12. React // greeter.jsx import React from 'react'; import ReactDOM from 'react-dom'; class Greeter extends React.Component { render () { return ( < h1 className="greeting"> Hello, {this.props.name} </ h1 > ) } } export default Greeter; � 12

  13. Vue • Evan You in 2014 • „Improved Angular“ • Single-File Components • Proprietary Templating Language • Scoped CSS • Progressive Frontend Framework � 13

  14. Vue <!-- greeter.vue --> <template> < h1 class='greeting'>Hello, {{ name }}</ h1 > </template> <script> export default { props: ['name'] } </script> <style scoped> h1 .greeting { text-decoration: underline; } </style> � 14

  15. Virtual DOM • DOM Manipulations Expensive • Additional Data Structure • Minimal Change-Sets • Not Necessarily More Performant • Implemented by React and Vue � 15

  16. ToDo List Application � 16

  17. � 17

  18. � 18

  19. � 19

  20. � 20

  21. DEMO � 21

  22. ToDo List Application • Getting to Know Each Framework • Test Frameworks under „Real-World“ Conditions • Consists of 4 „Pages“ • Reference Implementation • Implementation Order: Vue, React, Angular � 22

  23. Results � 23

  24. Rendering Angular React Vue ✓ ✓ ✓ Component-Based Rendering Service Worker Virtual DOM Virtual DOM Technique Container ✓ ✓ ✓ Components ✓ ✓ Directives ✗ � 24

  25. Dynamic Content Angular React Vue ✓ ✓ ✓ Data Binding ✓ ✓ Two-Way Bindings ✗ Conditional Directives JavaScript Directives Rendering Event Handlers Directives JavaScript Directives Message Passing Bottom-Up Top-Down Bottom-Up � 25

  26. Routing Angular React Vue ✓ ✓ Routing Module Third Party ✓ ✓ ✓ Hash-Based ✓ ✓ ✓ History pushState ✓ ✓ ✓ Dynamic Segments ✓ ✓ ✓ Nested Routes � 26

  27. Documentation Angular React Vue Getting Started ✓ ✓ ✓ Guide User Guides Extensive Basics Basics ✓ ✓ ✓ API Documentation User Experience Needs Improvement Good Great � 27

  28. Overall Comparison Angular React Vue Initial Startup Time 6 h 3 h 2 h (ToDo List Application) Total Time Until 17 h 12 h 10 h Finished (ToDo List Application) Beginner Poor Ok Great Experience Medium-Large Small-Medium Small-Medium Target Audience Teams Teams Teams SPAs, Small SPAs, Small Intended Use-Case SPAs Components Components � 28

  29. Questions? � 29

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend