Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Changement de paradigme: de l'app HTML à l'app ...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Changement de paradigme: de l'app HTML à l'app JavaScript

Avatar for Jimmy Bourassa

Jimmy Bourassa

March 18, 2015
Tweet

Other Decks in Technology

Transcript

  1. &

  2. Plan de match ‣ C’est quoi une SPA? ‣ Frameworks

    & outils ‣ Structure d’applications ‣ Design d’API ‣ Tests
  3. C’est quoi une app JavaScript (SPA)? App web où le

    client est en charge de gérer les différents états sans recharger la page.
  4. SPA vs app HTML ‣ Aucun chargement après le chargement

    initial ‣ Conserve l’état entre les différentes parties de l’application ‣ Le UI (HTML?) est généré par le client ‣ Beaucoup de JavaScript
  5. Les SPA, awesome pour ‣ Gérer plusieurs états en simultanément

    ‣ Apps offline ‣ Des UI très interactifs & complexes ‣ Packager pour mobile / desktop
  6. var a, b; (function () { var a = b

    = 'TEST'; })() console.log(a, b); // => ?
  7. Un repo tant que ça fonctionne ‣ Simplicité pour :

    ‣ Synchroniser les versions API <-> web app ‣ Déploiement atomiques
  8. Servir 2 apps en dev 1) Builder la SPA dans

    public/ de l’app serveur
  9. Servir 2 apps en dev 2) Build tool + proxy

    vers l’API + Foreman var Proxy = require('http-proxy'); app.use('/', function(req, res, next){ proxy.web(req, res, { target: BACKEND_URL }); });
  10. * En restant pragmatique POST /messages { thread_id: 33, message:

    "Jamón" } { user_id: 1337 thread_id: 33, message: "Jamón" } → Agnostique de la session*
  11. Relations - Inclure { post: { message: "APIs, pffft.", created_at:

    "2015-03-18T19:15:09Z", user: { id: 1337 name: "Bilbo" } } }
  12. Relations - Référencer { post: { message: "APIs, pffft.", created_at:

    "2015-03-18T19:15:09Z", links: { user: "https://ton.app/api/users/1337" } } }
  13. Soyez smath def publish(post_id) post = Post.find(post_id) if post.published raise

    AlreadyPublishedError end post.publish render(post) end
  14. Soyez smath def publish(post_id) post = Post.find(post_id) if !post.published post.publish

    end render(post) end def publish(post_id) post = Post.find(post_id) if post.published raise AlreadyPublishedError end post.publish render(post) end
  15. API, recap ‣ Documentation ‣ Pragmatisme avant tout ‣ Une

    représentation par ressource ‣ URL flats ‣ Soyez smath