jaime martínez op wordcamp antwerpen 3 maart 2018 · een modulaire aanpak tijdens development...

55
Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Upload: others

Post on 24-May-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Een modulaire aanpak tijdens development

Jaime Martínez op WordCamp Antwerpen

3 maart 2018 @jmslbam / @levellevel

Page 2: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

1. Het landschap

Page 3: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Welk probleem proberen we op te lossen?

Page 4: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Het bouwen van een project dat meerdere jaren blijft

draaien en uitgebreid kan worden door verschillende

personen binnen Level Level

Page 5: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Zelfs slechte code kan functionerenEchter, wanneer code niet clean is, kan dit een

development team op de knieën brengen.

Clean Code: A Handbook of Agile Software Craftsmanship

Page 6: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

2. Analyse

Page 7: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel
Page 8: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel
Page 9: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel
Page 10: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel
Page 11: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel
Page 12: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel
Page 13: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel
Page 14: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel
Page 15: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

single.php— content —

Non-modulaire aanpak

Page 16: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

3. Het probleem

Page 17: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

archive.phptitel

titel

Non-modulaire aanpak

single.php— content —

Page 18: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

archive.phptitel

titel

single.php— content —

comment.php— Review —

Non-modulaire aanpak

Page 19: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Buttons… Buttons everywhere

Andere HTML Verschillende CSS Classes Verschillende bronnen

HET PROBLEEM

Page 20: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Buttons… Buttons everywhere

1/3 kan weg

HET PROBLEEM

Page 21: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

4. De opties

Page 22: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Quick fix en doorgaan1

Onderdelen herschrijven2

Compleet opnieuw beginnen3

Clean starten4

Wat kun je doen?DE OPTIES

Page 23: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

5. De oplossingen

Page 24: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Seperation of concernDE OPLOSSINGEN

Page 25: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

archive.phptitel

titel

single.php— content —

comment.php— Review —

Non-modulaire aanpak

Page 26: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

archive.phpsingle.php comment.php

JS vote

getRating()

review rating: 2

HTML

Modulaire aanpak

Page 27: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

single.php

JS vote

getRating()

review rating: 2

HTML

archive.php comment.php

Modulaire aanpak

Page 28: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Source: https://schlessera.github.io/wcut-2017/#/modularity-0

Modulaire aanpak

Page 29: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Modulaire codebase

Page 30: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Modulaire codebase

Page 31: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

ComponentenDE OPLOSSINGEN

Page 32: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Stop denken in pagina’sx

Start te denken in componenten of zelfs in kleinere onderdelen

v

ComponentenDE OPLOSSINGEN

Page 33: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Ja!

Page 34: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Extenden met CSS classesDE OPLOSSINGEN

Page 35: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Extenden met CSS classes

DE OPLOSSINGEN

Page 36: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Extenden met CSS classes

DE OPLOSSINGEN

Learn from frameworks

Page 37: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

teaser teaser-magazine

Page 38: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

teaser teaser-post

teaser teaser-post

teaser teaser-video

teaser teaser-magazine

Page 39: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

teaser teaser-post teaser-1x2

teaser teaser-post teaser-1x1

teaser Teaser-video teaser-1x1

teaser teaser- magazine teaser-2x1

Page 40: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Flexibiliteit binnen CSSDE OPLOSSINGEN

Page 41: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Flexibiliteit binnen CSS

DE OPLOSSINGEN

v

x

v

Pass op voor CSS specificity

Geen ids

Nest niet te diep

body.page-homepage .teaser-video .button-play

.button & .button-video-play

.my-menu__item & .my-menu__item—active

x Echt, geen id's.

Page 42: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Flexibiliteit binnen CSS

DE OPLOSSINGENCSS technieken

Onderzoek technieken zoals

• SMAACSS

• ACSS

• BEM

Gebruik LESS of SASS

Is niet verplicht ;)

Page 43: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

OOP (Object Oriented Programming)

DE OPLOSSINGEN

Page 44: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

teaser teaser-magazine

Page 45: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

OverervenOBJECT ORIENTED PROGRAMMING

Clarkson object

Post

Video Post

Magazine Post

Model View Control

Page 46: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

OverervenOBJECT ORIENTED PROGRAMMING

Clarkson object

Post

Video Post

Magazine Post

Page 47: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Gebruik een template engineDE OPLOSSINGEN

Page 48: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Dit is een sidebar

https://level-level.com/clarkson-core-op-wordcamp-nederland-2016/

Content

Page 49: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

TWO COLUMN

PAGE SINGLE

Page 50: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

So use Clarkson ;)

Page 51: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

6. De redenen (almost there)

Page 52: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Dus waarom?DE REDENEN

Minder support tickets

1 Herbruikbare code

2 Uitbreidingen worden eenvoudiger

3 Testbare code

4

Klant blij, wij blij.5

Page 53: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Omarm de modulariteit

DE REDENEN

Splits complexiteit op

Stapje bij stapje

Spreek best-practices af met je team

Page 54: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Jaime Martínez op WordCamp Antwerpen 2018

Een modulaire aanpak tijdens development

Page 55: Jaime Martínez op WordCamp Antwerpen 3 maart 2018 · Een modulaire aanpak tijdens development Jaime Martínez op WordCamp Antwerpen 3 maart 2018 @jmslbam / @levellevel

Resources

● Clarkson: Twig, WordPress Models and WordPress:

http://wp-clarkson.com/core/ & http://wp-clarkson.com/theme

● Clarkson Video: Clarkson talk op WordCamp NL 2016 via WordPress.tv

● Modern CSS: https://medium.com/statuscode/an-answer-to-how-to-get-good-with-css-3dfcfd862107

Dit bovenstaande artikel linked zelf ook weer naar hele goede artikelen.

● CSS Methodes : http://clubmate.fi/oocss-acss-bem-smacss-what-are-they-what-should-i-use

● CSS specificity: https://www.smashingmagazine.com/2007/07/css-specificity-things-you-should-

know/ & http://www.htmldog.com/guides/css/intermediate/specificity/

● Render template parts : hm_get_template_part()