Looking at the Vue
A retrospective
About me
Robert MacLean
Veteran full stack software developer
DevConf & Developer User Group Director
Day job at Equal Experts
31st March 2020
You + 800 of your best friends
5 tracks, over 40 talks
www.DevConf.co.za
What are we covering?
It’s a project retrospective
Cover some of what we did and how we did it
Shared some cool things we did
Focus on front end
Useful advice (at least 5 of them)
Goal of the project
Domain: Large financial services company
Problem: Signup is hard. Paperwork. Legal
requirements. Manual Steps
Solution: Build a MVP that takes a customer through
signup quickly
Flexibility
Build for reuse (i.e. favour components/isolation)
What we used
Vue (duh)
TypeScript
MobX
CSS Framework – Grids; per component CSS 🤕
VSCode
VSCode trick
Focus on UI + Sharing
Code
UI Idea
Content
Next/back button
Brand + Popup messages
Shared Palette
Component
Component
Router View
Routing
Pro/Con
It is awesome to not have to worry about coding
next buttons
Would work great in other aspects too
Maybe over engineered up front… or not enough
Limitations in using an array
Managing State
Pro/Con
Loved working with mobx and decorators
Might feel a bit too much like magic
Building Components
Label
SuffixPlaceholderPrefix
ANIMATIONS FOR EVERYTHING!!!!
Testing
Demo
Testcafe
Testcafe
Testcafe
Testcafe
TestCafe Studio
Build VUE Plugins!
https://github.com/rmaclean-ee/vue-cli-plugin-
testcafe
Bits and pieces
lighthouse
Nomatim from OpenStreetMaps
Nomatim from OpenStreetMaps
Thanks! Any questions?
Want more demos?

Looking at the Vue

Editor's Notes

  • #5 Convention over configuration for routing Using OSM Nominatim Integrating Google Lighthouse Using TestCafe My favourite piece of code Use of decorators to kill boiler plate code
  • #7 , so: Use selfie + proof of presence to tick legal requirements Mobile first web experience that embraces what is available to mitigate typing Hide the slow backends using smart UX
  • #13 All the code for a page
  • #14 Plumbing on the palette Demo this: console.log("%c[Vue.JS]","color: rebeccapurple; font-weight: bold", "How cool is this?")
  • #17 Allowing us to just drop pages into it and have them found and added
  • #18 Build up the routes dynamically
  • #19 The configure the flow of independently
  • #26 Demo for vuex
  • #27 Same for mobx
  • #28 Decorators
  • #30 Use of decorators in the view
  • #31 Talk about loading and saving aspects of a page
  • #36 TextInput component
  • #38 npm install -g testcafe testcafe chrome demoTest.js testcafe chrome,firefox,safari demoTest.js testcafe remote demoTest.js --qr-code import { Selector } from 'testcafe'; fixture`Getting Started`.page`http://devexpress.github.io/testcafe/example`; test('My first test', async (t) => {   await t.typeText('#developer-name', 'John Smith').click('#submit-button');   await t.expect(Selector('#article-header').innerText).eql('Thank you, John Smith!'); });