appli web - Offirmo-team/wiki GitHub Wiki

Voir aussi développement mobile, développement web, dévelopement bureau, electron, javascript, serveur, API web, css, html, yeoman, webstorm, bower, bootstrap, node.js, AngularJS, require.js, express, mocha, chai, backbone, jquery, module web...

Introduction

single page webapp.

Docs générales

Concepts

https://docs.google.com/document/d/1DMacL7iwjSMPP0ytZfugpU4v0PWUK0BT6lhyaVEmlBQ/edit#

  • Offline & Realtime Synchronization
  • Offline Access Policies
  • Realtime Multi-User Presence
  • Session-Persisted App State
  • Offline Support with Proactive Caching
  • Offline Archiving and Querying
  • High Frequency, Multi-Client Data Synchronization
  • Multi-Client Shared State & Predictive Cache
  • Multiplayer board game
  • Multiplayer RPG
  • micro-frontends https://shahata.medium.com/taking-micro-frontends-to-the-next-level-1a1a91adc476

Progressive web apps:

techniques

history

Voir aussi sécurité et javascript#sécurité.

introduction

Les classiques:

Technos:

Généralité

check list

tous les classiques :

  • SSL / TLS / HTTPS : voir http#ssltls
  • SQL, OS, LDAP injections
  • broken auth and security
  • XSS and clickjacking
  • direct object references leaks
  • security misconfiguration
  • sensitive data exposure
  • missing access control (least privilege !)
  • CRSF
  • 3rd party modules
  • unvalidated redirects

plus quelques uns plus rarement mentionnés :

  • mettre un délai systématique sur le test de mot de passe (brute force)
  • ne pas charger toute l'appli tant que pas logué (contre le DOS)
  • redemander le mot de passe sur action sensible, et maintenir cet état qq instants
    • fait par GitHub = sudo mode
    • utiliser APIs log, absence pour sortir de ce mode en avance
  • si un mot de passe est en cours de saisie, l'effacer immédiatement si la page est passée en arrière plan ou dans tous les cas au bout de X secondes
    • ex. un utilisateur qui tape son mot de passe puis s'absente avant d'avoir validé
    • m'est arrivé, Fortunéo le fait

authentification

Techniques

http://security.stackexchange.com/questions/58215/are-random-urls-a-safe-way-to-protect-profile-photos

Technos

Libs

Outils

Conception

UX

tech

Bonnes réflexions:

Conseils google :

Autres

Principes de conception

Reuse : frameworks, modules

frameworks

"one new framework every day" http://codeofrob.com/entries/a-comparison-of-various-js-frameworks-using-cold-hard-data.html

Voir angular.js, react

Modules

Composants de framework

Modèle

templates

Choix

dustjs par linkedin

Performance

outils

IDE

En ligne

Combo :

test / debug

Remote debug

Inspection

dev divers

npm install -g puer
puer
serve
  • browser-sync

gestion d'utilisateurs

Voir UX

Rendu visuel

Templates

voir dustjs, FormatJS

stylage

Voir aussi css

Typographie

Voir css#Typographie pour la technique.

*L’apostrophe est probablement le signe typographique le plus malmené de nos jours :

taper directement au clavier : ’
dans le code HTML inscrire : <nowiki>&#8217;</nowiki>
dans le code HTML inscrire : <nowiki>&rsquo;</nowiki>

responsive

snippets

Texte enrichi

Totalement non trivial si on veut UTF8, entités, etc.

SEO / indexation

Historique / bouton retour

persistence

DB

Voir base de données

session storage

Local storage

migrations

https://github.com/gabesoft/trans

offline usage

offline detection ?

emails

Voir courriel.

download / upload

performances

Outils

https://www.dareboost.com/fr/home

Chargement

multi-coeur

Threads

Optimisation

Cache

  • Cache du navigateur : Voir http

CDN

...

libs

Base CMS http://apostrophecms.org/

test / debug / inspection

fullscreen

page

animation

favicon

graphisme

polyfills

progression / état

Temps

Stockage

emoji

http://www.emoji-cheat-sheet.com/

widgets

Pour framework bootstrap

Formatage multi-langue

Formulaires

Champs de formulaires

loader

popup (général)

carousel

breadcrumb

scrollbars

préférences

compte à rebours

aide

Diagrammes

Upload

temps / date / heure

Tables

spécifiques

Tuiles

graphes

à trier

Accessibilité

Communication

ajax

...

Websockets

autres

contrôle

clavier

touch

  • ...

copier/coller

Les navigateurs hormis IE empêchent en JS pur de copier dans le clipboard (pour des raisons de sécurité). Les workarounds possible : utiliser Flash... ou simplifier la vie à l'utilisateur en sélectionnant pour lui (de façon visible ou masquée).

i18n

Références

bases

détection de la langue

lib

widget de choix

  • ...

à trier

Qualité / test

Performance

Metriques: https://bitsofco.de/what-is-first-input-delay/

  • FID First input delay = tracks the delay between the time a user can attempt to interact with a part of the site, and the time that the interface is able to respond to that interaction
  • apdex
  • TTI time to interactive = refers to the point at which a user can reliably interact with the content on the website, such as clicking links or entering text into input fields.
  • FCP First Contentful Paint = refers to the point at which the browser renders any information from the DOM
  • FM First Meaningful = first useful bit of content is rendered on the screen
  • FP, FMP, TTYL

mesure https://web.dev/measure

Problèmes rencontrés

Compatibilité navigateurs

Divers

gestion onglets

cycle de vie

visible invisible ?

fermeture ? avertissement ?

https://github.com/ai/visibilityjs

communication inter onglets

http://ponyfoo.com/articles/cross-tab-communication

Liens docs base

à trier

AMP

libs

⚠️ **GitHub.com Fallback** ⚠️