Improve front-end training
This commit is contained in:
parent
601f88a4e7
commit
8a7f9a4375
@ -39,7 +39,9 @@
|
|||||||
- [Exports](#exports)
|
- [Exports](#exports)
|
||||||
- [Other features](#other-features)
|
- [Other features](#other-features)
|
||||||
- [Optional chaining](#optional-chaining)
|
- [Optional chaining](#optional-chaining)
|
||||||
|
- [Ternary operator](#ternary-operator)
|
||||||
- [Self assessment](#self-assessment)
|
- [Self assessment](#self-assessment)
|
||||||
|
- [References](#references)
|
||||||
|
|
||||||
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||||
|
|
||||||
@ -694,6 +696,15 @@ let nestedProp = obj.first && obj.first.second;
|
|||||||
let nestedProp = obj.first?.second;
|
let nestedProp = obj.first?.second;
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Ternary operator
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const a = 'a'
|
||||||
|
const r = a === 'a' ? 'isA' : 'isNotA'
|
||||||
|
|
||||||
|
console.assert(r === 'isA')
|
||||||
|
```
|
||||||
|
|
||||||
## Self assessment
|
## Self assessment
|
||||||
|
|
||||||
- How old is JavaScript?
|
- How old is JavaScript?
|
||||||
@ -707,6 +718,7 @@ let nestedProp = obj.first?.second;
|
|||||||
- `const a = [1]; const b = [1];`: what does `a == b` evaluates to?
|
- `const a = [1]; const b = [1];`: what does `a == b` evaluates to?
|
||||||
- How do you write arrow functions?
|
- How do you write arrow functions?
|
||||||
- `const {a} = {a: 1}`: what does `a` evaluate to?
|
- `const {a} = {a: 1}`: what does `a` evaluate to?
|
||||||
|
- How do you write the ternary operator?
|
||||||
|
|
||||||
Advanced:
|
Advanced:
|
||||||
|
|
||||||
@ -716,6 +728,13 @@ Advanced:
|
|||||||
// Write transform1 using a one-line arrow function with object structuring
|
// Write transform1 using a one-line arrow function with object structuring
|
||||||
console.assert(_.isEqual(transform1({name: "Foo"}), {FooA:1}))
|
console.assert(_.isEqual(transform1({name: "Foo"}), {FooA:1}))
|
||||||
console.assert(_.isEqual(transform1({name: "Bar"}), {Bar:1}))
|
console.assert(_.isEqual(transform1({name: "Bar"}), {Bar:1}))
|
||||||
|
```
|
||||||
|
|
||||||
|
The three things you need:
|
||||||
|
|
||||||
|
- Use `let` and `const`
|
||||||
|
- Object destructuring `const { a } = {a: 1}`
|
||||||
|
- Arrow functions `const noop = () => { }`
|
||||||
|
|
||||||
Other assessments:
|
Other assessments:
|
||||||
|
|
||||||
|
50
training/front-end/02-react.md
Normal file
50
training/front-end/02-react.md
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
||||||
|
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
||||||
|
## Table of Contents
|
||||||
|
|
||||||
|
- [An introduction to React](#an-introduction-to-react)
|
||||||
|
- [Before getting into React...](#before-getting-into-react)
|
||||||
|
- [Manipulating the DOM](#manipulating-the-dom)
|
||||||
|
- [The inspiration for React](#the-inspiration-for-react)
|
||||||
|
- [The shadow DOM](#the-shadow-dom)
|
||||||
|
- [Learning React](#learning-react)
|
||||||
|
- [Self-assessment](#self-assessment)
|
||||||
|
|
||||||
|
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||||
|
|
||||||
|
# An introduction to React
|
||||||
|
|
||||||
|
## Before getting into React...
|
||||||
|
|
||||||
|
### Manipulating the DOM
|
||||||
|
|
||||||
|
- https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents
|
||||||
|
- https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction
|
||||||
|
|
||||||
|
### The inspiration for React
|
||||||
|
|
||||||
|
### The shadow DOM
|
||||||
|
|
||||||
|
## Learning React
|
||||||
|
|
||||||
|
Follow the tutorial: https://reactjs.org/docs/hello-world.html
|
||||||
|
|
||||||
|
## Self-assessment
|
||||||
|
|
||||||
|
Basics:
|
||||||
|
|
||||||
|
- What is the difference between elements and components?
|
||||||
|
- What is JSX?
|
||||||
|
- Is it ok to modify props?
|
||||||
|
- How should you modify state?
|
||||||
|
- What does "the data flows down" mean?
|
||||||
|
- How do you pass arguments to event handlers?
|
||||||
|
- How do you put conditionals in JSX?
|
||||||
|
- How do you put inline if-else in JSX?
|
||||||
|
- How do you prevent a component from rendering?
|
||||||
|
- What is the `key` prop?
|
||||||
|
- What are controlled and uncontrolled components?
|
||||||
|
- What does it mean to "lift state up"?
|
||||||
|
- Should you use composition or inheritance with React?
|
||||||
|
|
||||||
|
Advanced:
|
@ -16,3 +16,5 @@
|
|||||||
### Reading and manipulating the DOM
|
### Reading and manipulating the DOM
|
||||||
|
|
||||||
### Events
|
### Events
|
||||||
|
|
||||||
|
https://dmitripavlutin.com/javascript-event-delegation/
|
@ -1,6 +1,5 @@
|
|||||||
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
||||||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
||||||
|
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
|
||||||
- [CSS & HTML: restart](#css--html-restart)
|
- [CSS & HTML: restart](#css--html-restart)
|
@ -1,24 +0,0 @@
|
|||||||
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
|
||||||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
|
||||||
## Table of Contents
|
|
||||||
|
|
||||||
- [An introduction to React](#an-introduction-to-react)
|
|
||||||
- [The inspiration for React](#the-inspiration-for-react)
|
|
||||||
- [The shadow DOM](#the-shadow-dom)
|
|
||||||
- [React components](#react-components)
|
|
||||||
- [An introduction to state management in React application](#an-introduction-to-state-management-in-react-application)
|
|
||||||
- [Testing React applications](#testing-react-applications)
|
|
||||||
|
|
||||||
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
|
||||||
|
|
||||||
# An introduction to React
|
|
||||||
|
|
||||||
## The inspiration for React
|
|
||||||
|
|
||||||
## The shadow DOM
|
|
||||||
|
|
||||||
## React components
|
|
||||||
|
|
||||||
## An introduction to state management in React application
|
|
||||||
|
|
||||||
## Testing React applications
|
|
@ -18,8 +18,10 @@
|
|||||||
|
|
||||||
## Security
|
## Security
|
||||||
|
|
||||||
|
- HTTPS
|
||||||
- CORS
|
- CORS
|
||||||
- XSS prevention
|
- XSS prevention
|
||||||
- CSP
|
- CSP
|
||||||
|
- OWASP
|
||||||
|
|
||||||
## Dependency management: npm or yarn
|
## Dependency management: npm or yarn
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
|
||||||
- [Introduction to front-end programming](#introduction-to-front-end-programming)
|
- [Introduction to front-end programming for back-end developers](#introduction-to-front-end-programming-for-back-end-developers)
|
||||||
- [Goal of this training](#goal-of-this-training)
|
- [Goal of this training](#goal-of-this-training)
|
||||||
- [Prerequisites](#prerequisites)
|
- [Prerequisites](#prerequisites)
|
||||||
- [To do before the course](#to-do-before-the-course)
|
- [To do before the course](#to-do-before-the-course)
|
||||||
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||||
|
|
||||||
# Introduction to front-end programming
|
# Introduction to front-end programming for back-end developers
|
||||||
|
|
||||||
## Goal of this training
|
## Goal of this training
|
||||||
|
|
||||||
@ -36,10 +36,12 @@ Read the [grab/front-end-guide](https://github.com/grab/front-end-guide) to get
|
|||||||
|
|
||||||
## Curriculum
|
## Curriculum
|
||||||
|
|
||||||
|
Instead of going deep in topics, we try to go as fast as possible to front-end programming (i.e. React with TypeScript), and then we go back to address those more specific topics.
|
||||||
|
|
||||||
1. The language: writing modern Javascript
|
1. The language: writing modern Javascript
|
||||||
2. The environment: the browser
|
2. React
|
||||||
3. TypeScript
|
3. TypeScript
|
||||||
4. React
|
4. The browser
|
||||||
5. CSS/HTML restart
|
5. CSS/HTML restart
|
||||||
6. Front-end development practices
|
6. Front-end development practices
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user