arrow-left

All pages
gitbookPowered by GitBook
1 of 5

Loading...

Loading...

Loading...

Loading...

Loading...

spikes

hashtag
ES Modules

How can we modularise our client-side JavaScript?

hashtag
Questions to consider

  • What are the different ways we can import/export code? What does "dynamic import" do?

  • Why might using hundreds of small modules in the browser cause performance problems?

hashtag
Useful resources

hashtag
Browser rendering

What is the "critical rendering path" in browsers?

hashtag
Questions to consider

  • How does the browser render an HTML page containing links to CSS and JavaScript files?

  • What does "render blocking" mean?

  • What do the async and defer keywords do?

hashtag
Useful resources

hashtag
Browser caching

How can we avoid unnecessary network requests?

hashtag
Questions to consider

  • What is HTTP caching?

  • How can our server tell browsers to cache our responses?

hashtag
Useful resources

hashtag
Image performance

How we can efficiently serve image assets?

hashtag
Questions to consider

  • How can we optimise image file size?

  • How can we render different images at different viewport sizes?

hashtag
Useful resources

Modules | JavaScript for impatient programmersarrow-up-right
ES modules: A cartoon deep-divearrow-up-right
Understanding the Critical Rendering Patharrow-up-right
Efficiently load JavaScript with defer and asyncarrow-up-right
HTTP Caching | Web Fundamentalsarrow-up-right
The HTTP cache: your first line of defensearrow-up-right
Image Optimization | Web Fundamentalsarrow-up-right
Responsive Images: If you’re just changing resolutions, use srcsetarrow-up-right
Native lazy-loading for the webarrow-up-right

app

schedule

hashtag
Day 1

Time
Activity
Learning outcomes

09:45

Check-in

hashtag
Day 2

Time
Activity
Learning outcomes

hashtag
Day 3

Time
Activity
Learning outcomes

hashtag
Day 4

Time
Activity

hashtag
Day 5

Time
Activity

project

Your project this week is to build a frontend for one of the APIs from REST API week. It should be a single-page app rendered with client-side JavaScript.

If your team don't have a finished API, or don't want to use it, you can use the Dogs APIarrow-up-right from the workshops. The readme contains documentation of all the endpoints.

hashtag
User stories

hashtag
Core

  • As a user, I want to: see all the resources

  • As a user, I want to: sign up for an account

  • As a user, I want to: log in to my account

hashtag
Stretch

  • As a user, I want to: update my own resources

  • As a user, I want to: delete my own resources

Since this project is open-ended you'll need to write your own more specific user stories once you know what you want to build.

hashtag
Acceptance Criteria

hashtag
Stretch criteria

As a user, I want to: add my own resources

Form for adding new resources (only for logged in users)
  • localStorage, token auth

    13:00

    Lunch

    14:00

    Student project session

    14:30

    live regions, status updates

    16:00

    Tech for Better

    17:00

    Speaker

    17:45

    Check out

    Role circles

    13:00

    Lunch

    16:30

    17:00

    Tech for Better

    17:45

    Check out

    Presentation prep

    13:00

    Lunch

    14:00

    Presentations

    15:15

    Cohort SGC

    16:00

    Team SGC

    16:45

    Update user manuals

    17:00

    Speaker

    17:45

    Check out

    10:00

    Intro presentationarrow-up-right

    10:30

    Intro to ES Modulesarrow-up-right

    Native JS modules

    11:00

    Client-side renderingarrow-up-right

    innerHTML, Template element

    13:00

    Lunch

    14:00

    Component architecturearrow-up-right

    Components, Stateful rendering

    16:00

    Projectarrow-up-right and spikesarrow-up-right intro

    16:15

    Technical spikesarrow-up-right

    17:15

    Spike presentation prep

    17:45

    Checkout

    09:45

    Check-in

    10:00

    Spike presentation prep

    10:10

    Spike presentations

    09:45

    Check-in

    10:00

    Pseudo-elements challengearrow-up-right

    CSS pseudo-elements

    11:00

    Project

    09:45

    Check-in

    10:00

    Project

    13:00

    Lunch

    14:00

    Project

    17:45

    Check out

    09:45

    Check-in

    10:00

    Team code review

    10:45

    Expert Feedback - Live code review

    11:15

    Respond to issues

    12:00

    Role circles

    11:00

    12:45

    12:15

    Token authenticationarrow-up-right
    Accessible status messagesarrow-up-right
    Employment: Portfolio sitearrow-up-right

    learning-outcomes

    hashtag
    Single-page app

    hashtag
    Client rendering

    hashtag
    Error handling

    hashtag
    Design (UI/UX)

    hashtag
    Testing

    Handle errors that occur in async code