51
1 Vue.js Use Cases Igor Nesterenko Lead Software Engineer 18.12.2017

Vue.js Use Cases

Embed Size (px)

Citation preview

Page 1: Vue.js Use Cases

1

Vue.js Use Cases

Igor Nesterenko

Lead Software Engineer

18.12.2017

Page 2: Vue.js Use Cases

2

Agenda

1. Why Vue.js ?

2. Good Parts of Vue.js

3. Case 1 Proof of Concept

4. Case 2 Legacy non-SPA

5. Case 3 Legacy SPA

6. Case 4 Diversity in team experience

7. Case 5 From POC to MVP

8. Summary

Page 3: Vue.js Use Cases

3

Terms

1. SPA - single page application 2. POC - proof of concept3. MVP - minimal viable product4. Progressive Framework - set of libraries developed by the same

team with high attention to backward compatibility and features interoperability

5. JavaScript Fatigue - time spend on configuring js environment

Page 4: Vue.js Use Cases

44

Why Vue.js?

Page 5: Vue.js Use Cases

5

Github Stars Over Years

• What concern it helps to solve ?

• Why Vue.js is growing so rapidly?

• Is it not enough React.js ?

• Why Angular in the bottom, however it’s on a top list in hiring ?

Photo is example for

placement and max. size

Page 6: Vue.js Use Cases

66

Good Parts of Vue.js

Page 7: Vue.js Use Cases

7

Frameworks Like Top Sport Cars

Any ideas which one

is React, Angular or

Vue.js ?

Page 8: Vue.js Use Cases

8

Pragmatic Overview

● Overview few most important aspects when choosing any solution.

● What concepts I have to learn to start using solution ?

● What main special traits of Vue.js to compare to React and Angular ?

Page 9: Vue.js Use Cases

9

Compare by few aspects

Page 10: Vue.js Use Cases

10

Vue Comparison

● Vue’s Docs is rockstar● Vue is smallest one● Official Router, unlike React● Official Store unlike Angular and React● Official Tests Utils, however in beta● MIT License, however No Big Company behind

Page 11: Vue.js Use Cases

11

Thing to learn

Page 12: Vue.js Use Cases

12

Vue Things To Learn

● ES 5 and HTML would be enough

● Even easier that React

● Much more easier the Angular

Page 13: Vue.js Use Cases

13

Good parts of Vue.js

● Can run in browser natively

● It’s joy to learn

● Vue familiar as for Angular as for React developer

● Official guidelines, tools and plugins to scale application

Page 14: Vue.js Use Cases

1414

Case 1 Proof of Concept

Page 15: Vue.js Use Cases

15

Case 1 Proof of concept

● You have some idea to validate before presenting to customer

● Customer ask you to make some prototype of new feature or try new approach

● Just few days

Page 16: Vue.js Use Cases

16

Just include Vue.js in HTML

• no JS fatigue

• clean syntax

Page 17: Vue.js Use Cases

17

Use components in barebone HTML

• define components as you go

• constraints on child to parent props changes

Page 18: Vue.js Use Cases

18

Small POC refactoring

const sourceOfTruth = {}

const vmA = new Vue({

data: sourceOfTruth

})

const vmB = new Vue({

data: sourceOfTruth

})

Page 19: Vue.js Use Cases

1919

Case 2 Legacy non-SPA

Page 20: Vue.js Use Cases

20

Refactor Old-School JSP

Page 21: Vue.js Use Cases

21

Add Vue Component Directly to JSP

Page 22: Vue.js Use Cases

22

Separate Components by Files

Page 23: Vue.js Use Cases

23

Just Compare with Single File Component

Page 24: Vue.js Use Cases

24

Move user-locales to separate JSP

Page 25: Vue.js Use Cases

25

Vue Integration

Page 26: Vue.js Use Cases

26

Refactored JSP

Old JSP

Page 27: Vue.js Use Cases

27

Case 1 Summary

● courage to learn jsp/asp or php ;-)● pair programming● share best practices of component development● educate non-Components people ● ! be aware of security issues

Page 28: Vue.js Use Cases

28

Case 1 Summary

● no additional tooling

● Single File Component like dev experience for free

● no REST API pre-requirements● more clean and maintainable code

Page 29: Vue.js Use Cases

2929

Case 3 Legacy SPA

Page 30: Vue.js Use Cases

30

Case 3 Legacy SPA

● Can’t evolve/maintain, outdated stac

● Example: Backbone, Marionet, AngularJS, RequireJs

● Usual backbone problems: component composition and state management

● Danger ! in some cases the only way to rewrite app from scratch

Page 31: Vue.js Use Cases

31

Refactor Backbone App

Backbone.View

Backbone.Model

DOMTemplateConvert Data to String Direct DOM Manipulations

Listen for changes and

change data through

methods

Page 32: Vue.js Use Cases

32

Build Backbone View adapter for Vue

Backbone.View

BackboneVueAdapter

Override Event Delegation

and use component instead

of template

Page 33: Vue.js Use Cases

33

Build Backbone View adapter for Vue

BackboneVueAdapter

Backbone.ModelDOM

VueComponent

Pass Props to Update Component

Direct DOM Manipulations

Reactive

Updates

Listen for changes and

change data through

methods

Page 34: Vue.js Use Cases

34

Build Backbone View adapter for Vue

BackboneVueAdapter

Backbone.ModelDOM

VueComponent

Listen for changes and

change data through

methods

Reactive

Updates

Pass Props and Listen for

Events

Page 35: Vue.js Use Cases

35

Leave BackboneVueAdapter for Smart Components

BackboneVueAdapter

Backbone.Model

VueComponent

Listen for changes and

modify data through

methods

VueComponent VueComponent

Pass Props and Listen for

Events

Pass Props and Listen for

Events

Page 36: Vue.js Use Cases

36

BackboneVueAdapter Example

Page 37: Vue.js Use Cases

37

BackboneVueAdapter Usage

Page 38: Vue.js Use Cases

38

Rewrite Templates to Components

Page 39: Vue.js Use Cases

39

Rewrite Templates to Components

Page 40: Vue.js Use Cases

40

Case 3 Legacy SPA - Summary

● No additional tools required● Vue allows to decouple Backbone.View from DOM● Limit places with data manipulation● Allows to refactor app step by step into component

architecture● ! Don’t modify the same DOM attributes

Page 41: Vue.js Use Cases

4141

Case 4 Diversity in Team Experience

Page 42: Vue.js Use Cases

42

Case 4 Diversity in Team Experience

● good for newbie

● familiar for Angular people, because templates syntax

● familiar for React people, because only components philosophy

● as result it’s a good tool for team with a big diversity in experience

Page 43: Vue.js Use Cases

4343

Case 5 From POC to MVP

Page 44: Vue.js Use Cases

44

Case 5 From POC to MVP

●Use vue-cli to checkout project templates

●Switch to Single File Components

●State Management

●Unit Testing and e2e

Page 45: Vue.js Use Cases

45

Single File Component

Page 46: Vue.js Use Cases

46

Try Vuex

Page 47: Vue.js Use Cases

47

Structure your App

Page 48: Vue.js Use Cases

48

Testing

● vue-test-utils for components

● nightwatch for e2e for critical use cases

Page 49: Vue.js Use Cases

4949

Summary

Page 50: Vue.js Use Cases

50

Summary

● jQuery-like first user experience

● allows you to go in unfriendly environments

● all you need for complex UI solutions

●may helps in dealing with team diversity

●provide a progressive framework, so you can evolve your POC in scalable app

Page 51: Vue.js Use Cases

51

Thank you