Completed Day2, learned about React, JSX, VDOM, babel, completed exercises and code for the index.html and index.jsx files, will start on day 3 next

pull/260/head
Jaspreet 3 years ago
parent a782f1efba
commit a78a29f3f5

@ -0,0 +1,41 @@
// Exercises: What is React?
// 1. What is React?
// React a popular JavaScript library used for building resuable user interfaces
// 2. What is a library?
// collection of prewritten code that users can use to optimize a task
// 3. What is a single page application?
// is an application that has only 1 index.html file
// 4. What is a component ?
// conceptually they are like JS functions
// 5. What is the latest version of React?
// latest version is 18.2.0
// 6. What is DOM?
// DOM is Document Object Model for HTML
// 7. What is React Virtual DOM?
// React Virtual DOM makes changes and updates to only elements that need changing
// 8. What does a web application or a website(composed of) have?
// Composes of buttons, links, forms, headers, footers, sections, articles, text, images, audios, videos, and boxes of different shapes.
// Exercises: Why React?
// 1. Why did you chose to use react?
// I chose to use it because I've only partially learned it and need more training with it.
// 2. What measures do you use to know popularity ?
// statistics, social media, personal research
// 3. What is more popular, React or Vue ?
// Probably React, since I see more job postings requiring knowledge of it
// Exercises: JSX
// 1. What is an HTML element?
// an element that has an opening tag and closing tag, content, and attributes
// 2. How to write a self closing HTML element?
// <img/> is an example
// 3. What is an HTML attribute? Write some of them?
// <img src = ""> , or <input value = "">
// 4. What is JSX?
// JavaScript XML,allows for writting HTML elements with JS code.
// 5. What is babel?
// a transpiler used in part with react
// 6. What is a transpiler?
// it transpiles JSX in to pure JS

@ -0,0 +1,112 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- add react and react-dom CDN -->
<script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
<link
href="https://fonts.googleapis.com/css?family=Montserrat:300,400,500|Roboto:300,400,500&display=swap"
rel="stylesheet"
/>
<title>30 Days Of React Challenge</title>
<!-- Creating internal styling instead of object styling in the index.jsx file -->
<style>
/* == General style === */
* {
box-sizing: border-box;
padding: 0;
margin: 0;
}
html,
body {
height: 100%;
line-height: 1.5;
font-family: 'Montserrat';
font-weight: 300;
color: black;
}
.root {
min-height: 100%;
position: relative;
}
.header-wrapper,
.main-wrapper,
.footer-wrapper {
width: 85%;
margin: auto;
}
.header-wrapper,
.main-wrapper {
padding: 10px;
margin: 2px auto;
}
h1 {
font-size: 70px;
font-weight: 300;
}
h2,
h3 {
font-weight: 300;
}
header {
background-color: #61dbfb;
padding: 10px;
}
main {
padding: 10px;
padding-bottom: 60px;
/* Height of the footer */
}
ul {
margin-left: 15px;
}
ul li {
list-style: none;
}
footer {
position: absolute;
bottom: 0;
left: 7.5%; /*added myself to offset footer to the right to match the header*/
width: 100%;
height: 60px;
/* Height of the footer */
background: #6cf;
}
.footer-wrapper {
font-weight: 400;
text-align: center;
line-height: 60px;
}
.app{
background-color: grey;
}
</style>
</head>
<body>
<div class="root"></div>
<!-- add babel CDN -->
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<!-- give script type of babel for transpiling react JSX to pure JS in browser -->
<script type="text/babel" src="index.jsx"></script>
<!-- <script type="text/babel" src="exercise.jsx"></script> -->
</body>
</html>

@ -0,0 +1,151 @@
//testing if CDN are working correctly
console.log(React); // print React object to console
// get root element from index.html
const rootElement = document.querySelector('.root');
// Create JSX element for the browser
// const jsxElement = <h1>I am a JSX element</h1>
// ALL STYLING BELOW NOT USED ANYMORE
// Add styling for the header JSX element
// const headerStyles = {
// backgroundColor: '#61DBFB',
// fontFamily: 'Helvetica Neue',
// padding: 25,
// lineHeight: 1.5,
// }
// Add styling for the main JSX element
// const mainStyles = {
// backgroundColor: '#F3F0F5',
// }
// Add styling for the footer JSX element
// const footerStyles = {
// backgroundColor: '#61DBFB',
// }
// Instead of using static data we can use dynamic data and inject it into JSX elements;
const welcome = 'Welcome to 30 Days Of React';
const title = 'Getting Started React';
const subtitle = 'JavaScript Library';
const author = {
firstName: 'Adam',
lastName: 'West'
}
const date = 'Jan 8, 2023';
// Create a header JSX element that contains title, subtitles, author or date
const header = (
<header className="header-wrapper">
<h1>{welcome}</h1>
<h2>{title}</h2>
<h3>{subtitle}</h3>
<p>Student: {author.firstName} {author.lastName} </p>
<small>Date: {date}</small>
</header>
)
// Inject array into main
const techs = ['HTML','CSS','JavaScript'];
// tech not displayed correctly, need to fix that how?
// need to also give each list item a unique key identifier
const techsFormatted = techs.map(element =>{return <li key={element}>{element}</li>});
// Create a main JSX element that contains a title and ul tag with list items
const main = (
<main className="main-wrapper">
<p>Prerequisite to get started with{' '}
<strong>
<em>react.js:</em>
</strong>
</p>
<ul>{techsFormatted}</ul>
</main>
)
// Create a footer that contains a p tag
const footer = (
<footer className="footer-wrapper">
<p>Copyright 2023</p>
</footer>
)
//EXERCISE CODE.........................................
// Create a style object for the main JSX
const myStyles = {
backgroundColor: 'lightcoral',
fontWeight: 'bold'
}
const footerStyles ={
backgroundColor: 'lightgrey',
fontSize: '20px'
}
// Write your name in a JSX element and store it in a name variable
const myName = {
firstName:'Tom',
lastName: 'Hanks'
}
const exercise = (
<h1>Name: {myName.firstName} {myName.lastName}</h1>
)
// Write a JSX element which displays your full name, country, title, gender,
// email, phone number. Use h1 for the name and p for the rest of the information and store it in a user variable
const person = {
fName: 'Jason',
lName: 'Gideon',
country: 'U.S.A',
title: 'Doctor',
gender: 'Male',
email: '123@cola.com',
number: '123-456-7890'
}
const personInfo = (
<div style={myStyles}>
<h1>Name: {person.fName} {person.lName}</h1>
<p>Country of origin: {person.country}</p>
<p>Profession: {person.title}</p>
<p>Gender: {person.gender}</p>
<p>Email: {person.email}</p>
<p>Phone Number: {person.number}</p>
</div>
)
// Write a footer JSX element
const myFooter = (
<div style={footerStyles}>
<p>This is the exercise footer</p>
</div>
)
// Create parent JSX element to house all other elements
const app = (
// use className instead of class with React
<div className="app">
{header}
{main}
{exercise}
{personInfo}
{myFooter}
{footer}
</div>
)
// Render JSX element using ReactDOM package
// ReactDOM render method takes 2 args
// - React element
// - Root element from HTML
ReactDOM.render(app, rootElement);

@ -0,0 +1,23 @@
React is a JavaScript library for building a reusable user interface(UI).
React is used to build single page applications - An application which has only one HTML page.
1. Why React?
- One of the most popular JavaScript libraries
- It has the following:
- Fast
- modular
- scalable
- flexible
- big community/popular
- open source
- high job opportunity
2. JSX
- Stand for JavaScriptXML
- Allows for writing HTML elements with JS code
- JSX is converted to JS on browser using babel.js
- Babel is a library which transpiles JSX to pure JS,
- and latest JS to older JS
- when using multiple HTML inside of a JSX element you need to wrap them in an outer HTML element
- meaning a div, or header or etc.
Loading…
Cancel
Save