Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Arseniia: Separation of concerns: 3 Weeks #167

Open
22 tasks done
ArseniiaDamaksina opened this issue Aug 1, 2023 · 1 comment
Open
22 tasks done

Arseniia: Separation of concerns: 3 Weeks #167

ArseniiaDamaksina opened this issue Aug 1, 2023 · 1 comment
Assignees
Labels
check-in You can use the check-in template to track your module learning objectives, your weekly progress checked-1 After review, we add the checked label checked-2 checked-3 individual week-3

Comments

@ArseniiaDamaksina
Copy link
Contributor

ArseniiaDamaksina commented Aug 1, 2023

my fork of module repository
todo list
todo list preview

Learning Objectives

Priorities: 🥚, 🐣, 🐥, 🐔 (click to learn more)

There is a lot to learn in this repository. If you can't master all the material
at once, that's expected! Anything you don't master now will always be waiting
for you to review when you need it. These 4 emoji's will help you prioritize
your study time and to measure your progress:

  • 🥚: Understanding this material is required, it covers the base skills you'll
    need to move on. You do not need to finish all of them but should feel
    comfortable that you could with enough time.
  • 🐣: You have started all of these exercises and feel you could complete them
    all if you just had more time. It may not be easy for you but with effort you
    can make it through.
  • 🐥: You have studied the examples and started some exercises if you had time.
    You should have a big-picture understanding of these concepts/skills, but may
    not be confident completing the exercises.
  • 🐔: These concepts or skills are not necessary but are related to this module.
    If you are finished with 🥚, 🐣 and 🐥 you can use the 🐔 exercises to push
    yourself without getting distracted from the module's main objectives.

  • 🥚 event-driven programming: identify the concept in a JS program via listeners & handlers
  • [ ]🥚 entry points: describe what an entry point is, there are 2 kinds in the programs for this module - initialization & interaction. identify them in a program
  • 🥚 function roles: describe what function roles are and why they're important. they can identify a function's role given checklists for each role covered in this module:
    • listeners: functions that attach event listeners to the DOM
    • 🥚 handlers: entry point for user interactions
    • 🥚 utils (utilities): pure functions to help do things with data
    • 🐣 components: render data into DOM elements to display for the user
    • 🐥 custom events: create custom events events in your components, passing useful data between components and handlers
  • 🥚 DOM access: You read and write values from the DOM in an event handler
  • 🥚 es5 vs. es6: You can demonstrate the change in developer-experience pre and post es6 by stepping through in the debugger and explaining differences in scoping (global vs. script, block vs. local, modules) between two programs with identical user experience but different implementations.
  • 🥚 Scope Hierarchy: You is comfortable navigating different scopes in the browser's debugger to understand an existing application (script, module, closure, local, block)
  • 🥚 Code Splitting: You can use ES Modules to split your code into multiple files & folders according to function role, data, listeners and initialization. They can use generated dependency diagrams and documentation to understand and navigate this folder structure.
  • 🥚 Dependency Graphs: You can use a project's dependency graph to understand how it is organized and to navigate the source code.
  • 🥚 Development Strategies: You can write development strategies that have all of the program's state defined at the beginning, and separate each user story into interface and interaction tasks.
  • 🐣 Naming Functions: You can come up with clear and helpful names for the functions in your program. A good function name will take into account the function's role and the program's domain, like in the /naming-variables exercises from Debugging.
  • 🐣 DOM manipulation: You can manipulate the DOM when implementing level-appropriate user interactions
  • 🐣 Isolating Components: You can use a test.html file to render your components with different inputs
  • 🐣 Forms: You can do basic handling of form data via event.target.form
  • 🐣 Handling events: You can use the event argument to process user interactions, including bubbled events using event.target
  • 🐣 Passing Component Unit Tests: You can write vanilla DOM component functions to pass provided unit tests
  • 🐣 refactoring: refactor a single-script tutorial-style web page into multiple files using imports and exports
  • 🐥 reverse-engineering: You can incrementally reverse-engineer a level-appropriate user interaction following these steps:
    • init
    • Listeners
    • Handlers
    • (possibly): Utils, Components, Custom Events
  • 🐔 From Spec: given user stories, You can develop a site from scratch using a template repository.
  • 🐔 Writing Component Unit Tests: You can write unit tests to validate your component functions using BDD syntax

Week 1

I Need Help With:

Nothing for now

What went well?

Understanding of DOM, how to manipulate with DOM elements

What went less well?

Need more practice

Lessons Learned

Now I understand how to make the web page "alive" and more interactive

Sunday Prep Work

I watched some videos on Youtube about DOM

Week 2

I Need Help With:

Nothing for now

What went well?

I understood well the project with movie cards and how events work in JS

What went less well?

Event bubbling is a bit complicated

Lessons Learned

Events are very important and they have their own "rules"

Sunday Prep Work

I watched some videos on Youtube about events, handlers and listeners

Week 3

I Need Help With:

Nothing for now

What went well?

I finished the todo list project, wrote unit test for it.

What went less well?

I suffered a lot with dates in Javascript

Lessons Learned

I practiced array methods, objects, fundamentals of separation of concern

Sunday Prep Work

I watched some videos on Youtube about events, handlers and listeners

@ArseniiaDamaksina ArseniiaDamaksina added week-1 check-in You can use the check-in template to track your module learning objectives, your weekly progress individual labels Aug 1, 2023
@ArseniiaDamaksina ArseniiaDamaksina self-assigned this Aug 1, 2023
@sammou00
Copy link
Contributor

sammou00 commented Aug 4, 2023

@ArseniiaDamaksina could you check the items you understand in the learning objectives?

@sammou00 sammou00 added the checked-1 After review, we add the checked label label Aug 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
check-in You can use the check-in template to track your module learning objectives, your weekly progress checked-1 After review, we add the checked label checked-2 checked-3 individual week-3
Projects
None yet
Development

No branches or pull requests

2 participants