- Liittynyt
- 18.10.2016
- Viestejä
- 274
Jatkan hyvin alkanutta keskustelua tässä kontekstissa:Millä kielellä kannattaisi lähteä harjoittelemaan nettisivujen tekemistä? Pythonista kokemusta aika paljonkin, muiden kielien lukeminen ja opettelu onnistuu kohtalaisesti. Itse olen kuullut vain Djangosta, onko se hyvä? Ei ole siis käytännössä mitään hajua miten nettisivujen käyttäjälle näkyvä puoli toteutetaan.
1. yleinen virhe, minkä henkilökohtaisesti koen (etenkin aloittelevien) kehittäjien tekevän on frameworkin / kirjaston valitseminen web-sivustojen tekemiseen. Eli tehdään sovelluskehitykseen sopivalla kikkaleella fancyt kotskasivut. Tämä, kun ei ole esim. Reactin / Angularin / Vuen tarkoitus, että "käyntikorttimaiset" kotisivut tehtäisiin niillä.
2. lisäksi HTML:n ja CSS:n perusteellinen osaaminen on monesti aliarvostettua. Sitä näkee vaikkapa triviaalien animointien olevan toteutettu JS:llä (ja apuna n+1 riippuvuutta aina PopMotioniin saakka), vaikka saman saa tehtyä CSS:llä.
3. semanttinen osuus "Markup Language":sta on jäänyt monilta pois ja 90% sisällöstä survotaan kylmästi divien sisään. Tällähän ei loppukäyttäjän näkökulmasta ole varsinaista merkitystä, mutta pitää muistaa myös, että sivuston rakenteen tulkinta on monesti selainten ja niille tehtyjen lisäosien vastuulla.
4. mobiililaitteet edustavat yleensä vähintään 50% vierailukerroista. Tämä kannattaa ottaa huomioon - ei niinkään opettelemalla "responsive web design" -huttua vaan aidosti tutustumalla CSS:n täysin käyttökelpoisiin ominaisuuksiin (esim. flexbox, gridit, media queryt).
"Mobile first" on myös fraasi jota hoetaan ja se toki pitää paikkansa. Mutta itse en jättäisi hyvin alkanutta kehitystä kesken vain siksi, että serkun tyttöystävän kolme vuotta vanha android ei rendaa sivustoa täydellisesti. Eli kannattaa valita taistelunsa responsiivisuuden suhteen. Ja "RWD" on aika 2013 juttua - itse kutsun tätä aluetta "Adaptive User Interface Designiksi" - eli koko käyttöliittymän tulee mukautua niin päätelaitteen kuin myös muiden käyttäjän ominaisuuksien mukaan. Tämä tarkoittaa siis paljon muutakin kuin ärsyttäviä hampurilais-menuja.
5. palvelinpuoli (johon alkuperäisessä kysymyksessä viitataan) on kokonaan toinen osio. Mielestäni käytetyt kielet, kirjastot ja konventiot riippuvat monesti kokonaistoteutuksesta. Nyt, kun kyseessä on web-sivusto, niin itse teen aina node+express endpointit, johon "mockaan" oikeat, sivuilla näytettävät tiedot esim. JSON-tiedostoina, jotka populoidaan pug:illa (ex-Jade). Vasta tämän jälkeen alan harkita - ihan jo ylläpidettävyyden näkökulmasta - josko tarvittaisiin (dokumentti)tietokanta. Ehkä voisit harkita tämän toisentamista Pythonilla ja lähteä siitä liikkeelle?
Suosittelen miettimään, miten hakee tietoa netistä. Viitaten vaikka kohtaan #2: kun halutaan kaunis transitio etusivun kuville, niin kannattaa esim. hakea "image transitions with css" eikä "bleeding edge javascript library for animations".
Ja kun tulee ensimmäisen JS:ää vaativan toimenpiteen aika, niin silloin pitää hahmottaa asia (joka jo mainittiinkin) että kirjoitetaanko JavaScriptiä sellaisenaan vai käyttääkö sitä DOMin sörkkimiseen. Tässä karrikoitu esimerkki:
Koodi:
// JS:ää:
const numbers = "0123456789".split("");
// JS:ää:
const classNames = numbers.map((number) => `className-${number}`);
// DOM-manipulointia (tai sen valmistelua):
const elements = document.querySelectorAll('div');
// DOM-manipulointia:
Array.from(elements).forEach((element) => element.classList.add(classNames.shift()));
Harras mielipiteeni on, että mitä enemmän joudut manipuloimaan DOMia, niin sitä todennäköisemmin teet jotain väärin.
Myös se kannattaa muistaa, että paperilla moni asia voi näyttää hyvältä. Mutta kun pääsee aidosti kokeilemaan sitä ruudulla / päätelaitteella, niin tilanne saattaa kääntyä päälaelleen. Siksi "fail fast, fail often" on hyvä ideologia jota seurata. Siinä vaiheessa, kun koko leiska on jo taitettu kasaan ja tajutaan, että sekä leipäteksti että kaikki call to action -elementit ovat liian pieniä, niin homma lähtee valitettavasti käytännön nollasta. Eli konsepti- ja UI-suunnittelu on hyvä startti, mutta varsinainen UX asettuu uomiinsa vasta sitten, kun tekelettä pääsee ensimmäisen kerran kokeilemaan.