Giter VIP home page Giter VIP logo

bommezijn / browser-technologies-2122 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cmda-minor-web/browser-technologies-2122

0.0 0.0 0.0 41.17 MB

The course Browser Technologies is about learning to build robust and accessible websites using Progressive Enhancement and testing. Browser Technologies is part of the half year minor programme about Web Design and Development in Amsterdam. Bachelor Communication and Multimedia Design, Amsterdam University of Applied Science.

Home Page: https://enigmatic-shelf-01341.herokuapp.com/

License: MIT License

JavaScript 30.10% CSS 29.30% EJS 21.00% HTML 19.61%

browser-technologies-2122's Introduction

Browser Technologies 2122 @CMDA-Minor-Web

In het vak Browser Technologies gaan we onderzoeken wat Progressive Enhancement is en hoe je dit kan toepassen om goede, robuuste, toegankelijke websites te maken. Voor iedereen. Het web is voor iedereen, in dit vak leer je hoe je daarvoor kan zorgen.

Leerdoelen van Browser Technologies

  • je leert wat Progressive enhancement is en hoe je dit kan toepassen.
  • je leert Browser Technologies te onderzoeken, testen en implementeren als enhancement.
  • je leert hoe je Feature Detection doet en wat je kan doen als een 'feature' niet werkt of wordt ondersteund.

Installation

clone browser-technologies-2122 with git

#navigate to directory you want to save in
cd someDirectory/inA/dir
git clone https://github.com/bommezijn/browser-technologies-2122.git
cd browser-technologies-2122

Install the project with npm or your preferred package manager

  npm install my-project
  # To start developing run dev
  npm run dev

Documentatie en opdrachten

Om Browser Technologies te snappen hebben wij theorie moeten leren en begrijpen

  • Opdracht 1: Wat is progressive Enhancement Het zoeken van metaforen voor progressive enhancement. Browser Technologies - team 2
  • Opdracht 2: Break the web Letterlijk het web breken aannames die jij maakt valideren en in te leven in de eindgebruiker. Aantal features onderzoeken. zie wiki.

Eindopdracht

Progressive enhancement (PE), het van de grond op een website (of webapplicatie) bouwen dat voor iedere gebruiker werkt. Het zal werken in iedere context. Hoe meer de context toe laat hoe beter de website zal werken.
PE wordt toegepast door middel van progressief het web te bouwen, als het fundament sterk is, zal de rest ook van zelf sterker zijn. Dus de basis; HTML moet als eerste functioneel zijn. Dan maak je dit vervolgens prettig om te gebruiken, je kijkt niet meer alleen naar HTML, maar het is prettig om naar te kijken. Vervolgens maak je het enhanced, met JavaScript voeg je features toe die het de gebruiker alleen maar makkelijker maakt.

In een lopende verhaal heb ik net eigenlijk de drie lagen benoemd:

  1. Functional (HTML)
  2. Usable (HTML + CSS)
  3. Pleasurable (HTML + CSS + JS)

Om te controleren als dit op de juiste manier wordt gedaan is feature detection ook van belang, het controleren als iets wel wordt ondersteund door de browser, dit kan zowel in JavaScript als in CSS.

Demo

Screenshot of the first page of the webapp Deployed via Heroku, please be patient

Backup demo

Wireflow

Basis van de wireflow en de logica van de applicatie. Het doel van de applicatie is om een formulier door de gebruiker in te laten vullen, maar ook om te definieëren wat de verschillende lagen zijn.

browser-technologies-2122-02 browser-technologies-2122-01

Functional Layer Functional layer Functionele laag van de enquete, hier zie je de barebone HTML van de webapplicatie.

Usable Layer Usable layer De usable layer, de laag waar het visueel aantrekkelijker wordt voor de gebruiker, zodat deze gebruiker de enquete eerder neigt in te vullen.

Pleasurable layer Pleasurable layer De laag waar alles bij elkaar komt, de pleasurable layer, hier zal bovenop de vorige twee lagen, een laag JavaScript overheen gaan, dit zou het voor de gebruiker nog prettiger moeten maken.

Features

Welke features / browser technologies zijn er gebruikt in de demo? op basis van the web platform

CSS features

storage technologies

HTML bonus features

Test devices

Voor het testen van de webapplicatie is er gekeken naar de volgende apparaten

Device Chromium Non-Chromium works
Laptop Brave x
Laptop x Safari
iOS 15
One UI

Test verslag

Test verslag dat mijn onderzoek zwart op wit plaatst over hoe en wat ik heb lopen testen op de apparaten.

Beschrijving van de feature lijst die zijn onderzocht

De feature-lijst die ik heb gebruikt in de applicatie zijn groot en deels 'widely covered' wat inhoudt dat het door de meeste browsers (deels) wordt ondersteund. Hoewel dit vooral browser features zijn, zijn er ook enkele features geschreven om de ervaring van de gebruiker te verbeteren.

Het gebruik van localStorage; Dit zorgt ervoor dat de gebruiker zijn of haar progressie bij kan houden door de enquete heen. Dit is ook één van de requirements van de opdracht. Deze feature werkt echter wel alleen wanneer JavaScript beschikbaar is. Hiervoor is een feature detection check geschreven in de clientside, dit is deels door mijzelf maar ook door Mozilla geschreven.

Het gebruik van variabelen en andere nieuwere technieken in CSS; dit is op een soort gelijke manier opgevangen als JavaScript, alleen dan met CSS. Door middel van gebruik te maken van de @supports selector kan ik een feature detection uitvoeren waar ik kijk als een bepaalde techniek wel beschikbaar is, is dit niet dan zorg ik ervoor met CSS dat dit wordt afgevangen. Een goed voorbeeld hiervan zijn de CSS variabelen.

Welke browser(s) de feature(s) wel/niet ondersteunen

Op basis van de devices waarmee ik heb kunnen testen werken alle functionaliteiten zoals toebehoren, maar dat is maar een klein deel van de gebruikbaarheid. Hierom heb ik voor iedere functionaliteit caniuse geraadpleegd.

Feature Percentage Notes
currentcolor 98.12% safari 3.2 & IE6-8
@supports 89.15% betere support sinds 2019
display flex 98.06% IE6-9 en Opera 10-11.5
selectors 98.17% IE6, FF2-3, Safari 3.1
localStorage 95.51% IE6-7, FF2-3, Safar3.1-3.2 Opera, 10.1
classList 98.01% Support is beter sinds 2013
data-* 98.19% Partial support tot 2012
defer 97.07% Opera Mini geen support, tot 2010 minder support
aria-* 97.2% android 2.1-4.3 geen support, voor de rest partial support

Welke functionaliteiten zoals JavaScript je aan en uit hebt gezet in de tests

op iOS heb ik onder settings > Safari de opties voor JavaScript / CSS en meer aan en uit gezet, daarnaast heb ik onder advanced gekeken welke technologieen aan staan en gekeken welke uitstaan. Dit kon worden getest via de inspector tool voor iOS Safari. Inspector tool for the iPhone via Safari

Ook is er gekeken naar hoe de website zich gedraagt een resource niet geladen kan worden, hiermee kun je bedenken dat bijvoorbeeld de CSS bestand(en) of JavaScript bestand(en) foutief zijn ingeladen. Door middel van progressive enhancement blijft de webapplicatie zich voortdoen zoals verwacht. Je kan de formulier blijven invullen zonder CSS of JavaScript, maar dan wordt de progressie niet opgeslagen.

Qua features binnen JavaScript heb ik de code geschreven met zo min mogelijk nieuwe functionaliteiten die zijn geintroduceerd sinds 2015. Toch zijn er enkele doorheen geslipt;

  • const, let Om variabelen specifiek te houden voor hun block scope heb ik gebruik gemaakt van deze var alternatieven. De bruikbaarheid volgens caniuse is 98.01% en 95.61% respectief. De browsers waar hier een fout zal ontstaan zullen een versie hebben van voor 2015. De fout specifiek in kwestie is dat de variabel declaratie niet als block scope wordt gedefineerd.
  • Een enkele arrow function, Voor compatibility redenen heb ik de meeste functies of callbacks geschreven met function(){ } maar het mocht toch zijn dat ik hier en daar een arrow function heb gebruikt. Met name in de serverside heb ik dit gedaan. Alhoewel de support voor arrow functions wel op 94.85% staat, zijn het reeds weer de oudere browsers tot medio 2016 dit niet altijd ondersteunen.

Toekomstige features

Als ik deze webapplicatie zou uitbreiden naar een volledig product / concept zou meer tijd hebben besteed aan de volgende punten;

  • Verbetering in het controleren als een feature wordt ondersteund. Op het moment wordt feature detection toegepast waar ik denk dat een feature niet volledig wordt ondersteund, als dit op meerdere plekken voorkomt schrijf ik dit nog maals, dit volgt het principe DRY niet.
  • Meer tijd besteden aan validatie, validatie werkt niet volledig zoals verwacht, dit heeft waarschijnlijk te maken met het herschrijven van functionaliteit. Een van de bugs die hier aanwezig zijn is dat de serverside variant de problemen voordoet maar de statische variant dit probleem niet voordoet.
  • Als toevoeging zou ik de backend willen uitbreiden om resultaten op een externe locatie op te slaan, zoals een database. Met deze toevoeging zou ik vervolgens een beheerdersomgeving kunnen bouwen waar de beheerder de resultaten kan inzien.

browser-technologies-2122's People

Contributors

koopreynders avatar dewarian avatar roberrrt-s avatar bommezijn avatar joostf avatar

browser-technologies-2122's Issues

Pleasurable Layer

Pleasurable layer within Browser Technologies, the layer where HTML, CSS and JavaScript come together.

The pleasurable layer enhances the experience, allows the user to do the following;

  • Progressive disclosure; Questions pop up one at a time.
  • Save progress and return later.
  • On a local instance store in a local jason file.
  • User friendly

Saving to JSON overwrites instead of appending

Saving to JSON is being used incorrectly, Currently when saving to jason.json it overwrites into a new file instead of appending.

async function saveUser(data) {
let stringified = JSON.stringify(data)
const path = './public/jason.json'
return await fs.writeFile(path, stringified, (err, result) => {
if (err) { console.log('error at writing', err); return false }
console.log(`user stored in json \n ${stringified}`)
return true
})
}

Create a check if user exists and update, otherwise add to JSON.

solution

  • Update the function with createWritableStream to append to the file.
  • Check if userId exists and update userData

Usable Layer

The usable layer, where the functional layer is enhanced with visuals. CSS is available and can be used to enhance what the user sees, it makes it just usable

to have the project usable there are a few checkpoints:

  • Is CSS available?
  • Does the browser / device support XYZ? Style defensively.
  • Is it human friendly? Accessibility is key.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.