Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

TechEvent BASTA von WPF nach Angular in 60 Minuten

29 Aufrufe

Veröffentlicht am

BASTA von WPF nach Angular in 60 Minuten

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

TechEvent BASTA von WPF nach Angular in 60 Minuten

  1. 1. Von WPF nach Angular in 60 Minuten BASTA 2018 Manuel Meyer @manumeyer1 Thomas Gassmann @gassmannT https://m.trivadis.com/angular-schulung
  2. 2. Manuel Meyer Consultant & Trainer für .NET/Azure www.azurezurichusergroup.com www.dotnetday.ch www.manuelmeyer.ch @manuelmeyer1
  3. 3. Thomas Gassmann Senior Consultant, Trainer, Speaker www.thomasgassmann.net @gassmannT https://www.meetup.com/Swiss-Angular/
  4. 4. WPF to Angular
  5. 5. Fussballmanager 2018
  6. 6. JavaScript «The by-design purpose of JavaScript was to make the monkey dance when you moused over it» Brendan Eich
  7. 7. New Project Visual Studio: File -> New Project F5 Angular CLI: > ng new <name> > ng serve
  8. 8. View Code // XAML <Button Width="75" Height="20" >Search</ Button> <TextBox Height="23" Text="TextBox" Width="120"/> <!-- HTML --> <input type="text" value="text"> <button>Search</button>
  9. 9. Model Classes // C# POCO public class Game { public string MatchInfo1 { get; set; } public int FifaId { get; set; } } <!-- TypeScript --> export interface Game { MatchInfo1: string; FifaId: number; }
  10. 10. Backend Call // REST API Call -> «Add REST Client» var url = $"{endpointUri}/Game/?countryCode={code}"; var client = new WmAPI.WmAPIClient(url); Game[] result = client.GetAll(); <!-- TypeScript --> -> Convert Swagger to TypeScript Class const url = `${endpointUri}/Game/?countryCode=${code}`; return this.http.get<Game[]>(url);
  11. 11. Data Binding // XAML <Label Content="{Binding /MatchInfo1}"/> <ListView ItemsSource="{Binding}" DisplayMemberPath="Description" > <!-- HTML --> {{selectedMatch.GameInfo1}} <a (click)="showDetail(match)" *ngFor="let game of games$ | async"> {{ game.Description }} </a>
  12. 12. WPF versus Angular ▪ File new Project ▪ C# ▪ XAML ▪ Controls ▪ User Controls ▪ Resource Dictionaries ▪ Commands ▪ Data Binding ▪ Value Converter ▪ ng new <my-name> ▪ Typescript ▪ HTML ▪ HTML Elements ▪ Components ▪ CSS ▪ HTML Events ▪ Data Binding ▪ Pipe
  13. 13. How to start with Angular?
  14. 14. Download Visual Studio Code
  15. 15. Install VSCode Extensions
  16. 16. Get it from: nodejs.org
  17. 17. npm install @angular/cli
  18. 18. npm install @angular/cli -g
  19. 19. Angular CLI ▪ Command line interface for Angular ▪ Build an Angular application ▪ Generate files (Scaffolding) ▪ Execute / run the application ▪ Run unit and e2e tests ▪ Prepare and «optimize» the application for deployment.
  20. 20. Module Anatomy of an Angular Application Component person-list Component person-detail Component person-edit PersonService
  21. 21. CLI: Generate new app ng new my-app Generate a new app in /my-app ng new my-app --dry-run Report without writing files ng new my-app --skip-install Generate without npm install ng new --style scss Use SCSS instead of CSS ng new my-app --routing Generate app with routing
  22. 22. Project structure
  23. 23. CLI: Generate Component ng generate <blueprint> Generate component/service, etc. ng g component product-list Generate a component ng g c <name> --spec=false Without unit tests
  24. 24. CLI: Serve and build ng serve Serve the app on localhost:4200 ng serve -o Serve the app and open ng build Build in dev mode ng build --prod Build in prod mode
  25. 25. Fussballmanager 2018
  26. 26. 4 Tipps aus der Praxis
  27. 27. 1. Die Spezifikation der Anforderungen «Die Spezifikation ist die alte Applikation. Das muss im Web genau so aussehen wie jetzt» --der Chef
  28. 28. Und tschüss… Photo credit: Mark Spearman on VisualHunt.com / CC BY
  29. 29. Photo credit: zoetnet on Visual Hunt / CC BY …aber vielleicht kann man ja mit dem Kunden sprechen, auch wenns dauert…
  30. 30. Photo credit: Chris Blakeley on Visualhunt / CC BY-NC-ND Auf jeden Fall braucht der Kunde Hilfe für UX und UI Design. Das Web ist eben doch eine andere Welt!
  31. 31. 2. Hilfe für UX & UI Design Requirements for a Partner ▪ Must be strong in Web UX Design ▪ Must be strong in Web UI Design ▪ Must deliver CODE, or else…
  32. 32. 3. Die Utopie der grünen Wiese «Das muss man komplett neu schreiben» --Wir alle
  33. 33. 3. Die Grüne Wiese Die Projektleiterin ist super happy mit der grünen Wiese!
  34. 34. Photo credit: Darron Birgenheier on Visual hunt / CC BY-SA Aber sobald die Entwickler auf der Wiese rumackern, dann ist der Spass vorbei…
  35. 35. Oder es kommt noch schlimmer….
  36. 36. 3. Die Grüne Wiese 1 «The worst strategic mistake is rewriting code from scratch» --Joel Spolsky Things you should never do: https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/
  37. 37. 4. The black hole of coupling «The integration problem» & «The black hole of coupling» --Udi Dahan Own the Future: https://www.youtube.com/watch?v=2iYdKQXGY2E Slides: https://www.slideshare.net/udidahan/own-the-future
  38. 38. The 4 Problems
  39. 39. 1. The Keyboard Problem «Mit Ctrl-N konnte man schon immer einen neuen Kunden anlegen» --der Chef
  40. 40. 2. The DatePicker Problem
  41. 41. 3. The Excel in the Browser Problem
  42. 42. 4. The “bei Google gehts auch” Problem
  43. 43. Recap
  44. 44. Recap ▪ Most of the concepts are similar ▪ Its 2018. Thanks to TypeScript, we do NOT need to be afraid fo JS anymore ▪ Technologies are aligning ▪ But the Web is a different world.
  45. 45. Thank you Thomas Gassmann @gassmannT thomasgassmann.net thomas.gassmann@trivadis.com Manuel Meyer @manuelmeyer1 Manuelmeyer.net manuel.meyer@trivadis.com
  46. 46. Ressources ▪ angular.io/docs ▪ m.trivadis.com/angular ▪ swissangular.com ▪ manuelmeyer.net ▪ thomasgassmann.net
  47. 47. https://m.trivadis.com/angular-schulung Mit Trivadis zum Angular Superhero

×