'전체 글'에 해당되는 글 84건

  1. 2020.02.13 #5 React Component Lifecycle
  2. 2020.02.12 #4 Component 반복
  3. 2020.02.12 #3 React Event Handling
  4. 2020.02.12 #2 React Component
  5. 2020.02.12 #1 basic react
  6. 2020.02.12 #0 React intro
  7. 2020.02.04 #4 Responsive Web
  8. 2020.02.04 #3 Basic Javascript
  9. 2020.02.04 #2 CSS3
2020. 2. 13. 16:57

 

React Component Lifecycle

 

리액트 컴포넌트 라이프사이클

 

  • 컴포넌트의 수명은 페이지에 렌더링되기 전인 준비과정에서 페이지에서 사라질때 까지를 의미
  • 라이프 사이클은 크게 3가지 카테고리로 나뉨
    1. 마운트 : DOM이 생성되고 웹 브라우저상에 나타나는것
    2. 업데이트 : 리렌더링
    3. 언마운트 : 컴포넌트를 DOM에서 제거하는 것
  • 라이프사이클의 특정 시기에 특정 작업을 처리하기 위해 "라이프사이클메서드" 사용
  • 라이프사이클 메서드는 클래스형 컴포넌트에서만 사용 가능

 

마운트

마운트할 때 호출하는 메서드

  • 마운트 : DOM이 생성되고 웹 브라우저상에 나타나는 것
  • 호출 메서드
    1. constructor( ) : 컴포넌트를 새로 만들 때마다 호출되는 클래스 생성자 메서드
    2. getDerivedStateFromProps( ) : props에 있는 값을 state에 넣을 때 사용하는 메서드
    3. render( ) : 준비한 UI를 렌더링하는 메서드
    4. componentDidMount( ) : 컴포넌트가 웹 브라우저상에 나타난 후 호출하는 메서드

 

업데이트

업데이트할 때 호출하는 메서드

  • 업데이트가 일어나는 4가지 경우
    1. props가 바뀔 때
    2. state가 바뀔 때
    3. 부모 컴포넌트가 리렌더링 될 때
    4. this.forceUpdate로 강제로 렌더링을 트리거할 때
  • 호출 메서드
    1. getDerivedStateFromProps( ) : props 변화에 따라 state 값에 변화를 주고 싶을 때 사용
    2. shouldComponentUpdate( ) : 컴포넌트가 리렌더링을 해야 할지 말아야 할지 결정하는 메서드
      • true 반환 : 리렌더링
      • false반환 : 리렌더링 중단
    3. render( ) : 컴포넌트 리렌더링
    4. getSnapshotBeforeUpdate( ) : 컴포넌트 변화를 DOM에 반영하기 바로 직전에 호출하는 메서드
    5. componentDidUpdate( ) : 업데이트 작업 종료 후 호출하는 메서드

 

언마운트

언마운트할 때 호출하는 메서드

  • 컴포넌트를 DOM에서 제거하는 것
  • 호출메서드
    • componentWillUnmount( ) : 언마운트 직전에 호출하는 메서드

 

컴포넌트 렌더링 도중 에러 잡아내기

class ErrorBoundary extends React.Component {
  constructor(props) {
    super(props);
    this.state = { hasError: false };
  }

  componentDidCatch(error, info) {
    // Display fallback UI
    this.setState({ hasError: true });
    // You can also log the error to an error reporting service
    logErrorToMyService(error, info);
  }

  render() {
    if (this.state.hasError) {
      // You can render any custom fallback UI
      return <h1>Something went wrong.</h1>;
    }
    return this.props.children;
  }
}
  • componentDidCatch( )
    • 렌더링 도중 에러가 발생했을 때 어플리케이션이 먹통이 되지 않고 오류 UI를 보여줄 수 있게 한다
    • 에러 발생시에 state를 변경하고 render에서 해당 처리를 구현하면 된다.
    • 주의할점은 자식 컴포넌트에서 발생하는 에러만 잡아낼 수 있고, 자신의 에러는 잡아낼수 없다.

'Javascript > React' 카테고리의 다른 글

#7 Component Styling  (0) 2020.02.17
#6 React Hooks  (0) 2020.02.14
#4 Component 반복  (0) 2020.02.12
#3 React Event Handling  (0) 2020.02.12
#2 React Component  (0) 2020.02.12
Posted by yongminLEE
2020. 2. 12. 17:13

자바스크립트 map ( ) 함수

  • 리액트 프로젝트에서 반복적인 컴포넌트를 렌더링할 때 "map 함수"를 사용
  • map( ) 함수는 파라미터로 전달된 함수를 사용해서 배열 내 각 요소를 원하는 규칙에 따라 변환한 후 그 결과로 새로운 배열 생성
  • 문법 : array.map( callback( currentValue, index, array), [thisArg] )
    • callback 함수 : 새로운 배열의 요소를 생성하는 함수 
      • currentValue : 현재 처리하고 있는 요소
      • index : 현재 처리하고 있는 요소의 index 값
      • array : 현재 처리하고 있는 원본 배열
    • thisArg (선택항목) : callback 함수 내부에서 사용할 this 레퍼런스
  • key : 컴포넌트 배열을 렌더링했을 때 어떤 원소에 변동이 있었는지 알아내기 위해 사용
    • key 값 설정시 map 함수의 인자로 전달되는 함수 내부에서 컴포넌트 props를 설정하듯이 설정
    • key값은 유일해야 함

 

동적 배열 렌더링 - 초기 상태 설정

import React, { useState } from 'react';

const DynamicArray = () => {
  const [names, setNames] = useState([
    { id: 1, text: 'kim' },
    { id: 2, text: 'lee' },
    { id: 3, text: 'park' }
  ]);
//   const [inputText, setInputText] = useState('');
//   const [nextId, setNextId] = useState(4);

  const nameList = names.map(name => <li key={name.id}>{name.text}</li>);

  return (
    <>
      <ul>{nameList}</ul>
    </>
  );
};

export default DynamicArray;

 

동적 배열 렌더링 - 데이터 추가 기능 : 배열의 concat 메소드 활용

- concat 은 두 개의 문자열을 하나의 문자열로 만들어주는 역활을 하는 함수이며,

   입력값을 문자열 대신 배열을 사용하면 두 개의 배열을 하나의 배열로 만들어주는 역활도 하는 함

import React, { useState } from 'react';

const DynamicArray = () => {
  const [names, setNames] = useState([
    { id: 1, text: 'kim' },
    { id: 2, text: 'lee' },
    { id: 3, text: 'park' }
  ]);
  const [inputText, setInputText] = useState('default text');
  const [nextId, setNextId] = useState(4);

  const handleChange = e => {
    setInputText(e.target.value);
  };

  const handleClick = () => {
    const nextNames = names.concat({
      id: nextId,
      text: inputText
    });
    setNames(nextNames);
    setNextId(nextId + 1);
    setInputText('');
  };

  const nameList = names.map(name => <li key={name.id}>{name.text}</li>);

  return (
    <>
      <input value={inputText} onChange={handleChange}></input>
      <button onClick={handleClick}>add</button>
      <ul>{nameList}</ul>
    </>
  );
};

export default DynamicArray;

 

동적 배열 렌더링 - 데이터 삭제 기능 : 배열의 filter 메소드 활용

- filter 함수 : 지정된 조건에 맞는 요소들로 이루어진 새로운 배열 반환하는 함수

import React, { useState } from 'react';

const DynamicArray = () => {
  const [names, setNames] = useState([
    { id: 1, text: 'kim' },
    { id: 2, text: 'lee' },
    { id: 3, text: 'park' }
  ]);
  const [inputText, setInputText] = useState('default text');
  const [nextId, setNextId] = useState(4);

  const handleChange = e => {
    setInputText(e.target.value);
  };

  const handleClick = () => {
    const nextNames = names.concat({
      id: nextId,
      text: inputText
    });
    setNames(nextNames);
    setNextId(nextId + 1);
    setInputText('');
  };

  const handleRemove = id => {
    const filteredNames = names.filter(name => name.id != id);
    setNames(filteredNames);
  };

  const nameList = names.map(name => (
    <li key={name.id} onDoubleClick={() => handleRemove(name.id)}>
      {name.text}
    </li>
  ));

  return (
    <>
      <input value={inputText} onChange={handleChange}></input>
      <button onClick={handleClick}>add</button>
      <ul>{nameList}</ul>
    </>
  );
};

export default DynamicArray;

 

 

'Javascript > React' 카테고리의 다른 글

#6 React Hooks  (0) 2020.02.14
#5 React Component Lifecycle  (0) 2020.02.13
#3 React Event Handling  (0) 2020.02.12
#2 React Component  (0) 2020.02.12
#1 basic react  (0) 2020.02.12
Posted by yongminLEE
2020. 2. 12. 14:39

Event

웹 브라우저에서 DOM 요소와 상호작용하는 것을 이벤트라고 합니다.

예를들어 DOM 요소를 클릭하면 onClick 이벤트를 정의해 상호작용을 하게 됩니다.

 

리액트 이벤트 시스템 주의사항

  1. 이벤트 이름은 카멜 표기법으로 작성
  2. 이벤트에 실행할 자바스크립트 코드를 전달하는 것이 아니라, 함수 형태의 값을 전달
  3. DOM 요소에만 이벤트 설정할 수 있다
    • 직접 만든 컴포넌트에는 이벤트를 자체적으로 설정할 수 없다. 단지 props를 전달해 줄 뿐.

 

클래스 컴포넌트의 이벤트 핸들링

- state와 메서드 활용

 

1. 이벤트 발생시 생성되는 e객체를 이용한 이벤트 핸들링

import React, { Component } from 'react';

class EventPractice extends Component {
  state = {
    message: ' '
  };

  render() {
    return (
      <div>
        <input
          type="text"
          name="message"
          placeholde="input"
          value={this.state.message}
          onChange={e => {
            this.setState({ message: e.target.value });
          }}
        ></input>
        <br />
        <button
          onClick={() => {
            alert(this.state.message);
            this.setState({ message: ' ' });
          }}
        >
          reset
        </button>
      </div>
    );
  }
}

export default EventPractice;

 

 

2. 이벤트에 실행할 자바스크립트 코드 대신 함수 형태의 값 전달

=> 클래스에 메서드를 만들어 이벤트 리스너에 바인딩

import React, { Component } from 'react';

class EventPractice extends Component {
  state = {
    message: ' '
  };

  handleChange = e => {
    this.setState({ message: e.target.value });
  };

  handleClick = () => {
    alert(this.state.message);
    this.setState({ message: ' ' });
  };

  render() {
    return (
      <div>
        <input
          type="text"
          name="message"
          placeholde="input"
          value={this.state.message}
          onChange={this.handleChange}
        ></input>
        <br />
        <button onClick={this.handleClick}>reset</button>
      </div>
    );
  }
}

export default EventPractice;

 

3. input 여러개 다루기 

=> e.target.name의 "값"을 키로 가지는 객체를 생성

=> ref = 'key' ;  { [ref] : 'value' } ref의 값을 key로 하는 객체 생성  { 'key' : 'value' }

=> 하나의 이벤트 핸들링 메서드로 여러 키값을 가지는 객체 생성가능

import React, { Component } from 'react';

class EventPractice extends Component {
  state = {
    message: ' ',
    username: ' '
  };

  // ref = 'key' ;  { [ref] : 'value' } ref의 값을 key로 하는 객체 생성  { 'key' : 'value' }
  handleChange = e => {
    this.setState({ [e.target.name]: e.target.value });
  };

  handleClick = e => {
    alert(this.state.username + ' : ' + this.state.message);
    this.setState({ message: ' ' });
    this.setState({ username: ' ' });
  };

  render() {
    return (
      <div>
        <input
          type="text"
          name="username"
          placeholder="username"
          value={this.state.username}
          onChange={this.handleChange}
        ></input>
        <br />
        <input
          type="text"
          name="message"
          placeholde="message"
          value={this.state.message}
          onChange={this.handleChange}
        ></input>
        <br />
        <button onClick={this.handleClick}>reset</button>
        <hr />
      </div>
    );
  }
}

export default EventPractice;

 

함수형 컴포넌트의 이벤트 핸들링

- useState 활용

import React, { useState } from 'react';

const EventPractice = () => {
  const [form, setForm] = useState({
    username: ' ',
    message: ' '
  });

  const { username, message } = form;

  const handleChange = e => {
    const nextForm = {
      ...form,
      [e.target.name]: e.target.value
    };
    setForm(nextForm);
  };

  const handleClick = e => {
    alert(username + ' : ' + message);
    setForm({
      username: ' ',
      message: ' '
    });
  };

  return (
    <div>
      <input
        type="text"
        name="username"
        value={username}
        onChange={handleChange}
      ></input>
      <br />
      <input
        type="text"
        name="message"
        value={message}
        onChange={handleChange}
      ></input>
      <br />
      <button onClick={handleClick}>reset</button>
    </div>
  );
};

export default EventPractice;

 

 

 

 

'Javascript > React' 카테고리의 다른 글

#5 React Component Lifecycle  (0) 2020.02.13
#4 Component 반복  (0) 2020.02.12
#2 React Component  (0) 2020.02.12
#1 basic react  (0) 2020.02.12
#0 React intro  (0) 2020.02.12
Posted by yongminLEE
2020. 2. 12. 14:38

 

컴포넌트 종류

  1. 클래스형 컴포넌트
    • state 기능 사용가능
    • 라이프사이클 기능 사용가능
    • 임의의 메서드 정의 가능
    • constructor 작성시 반드시 super(props); 메서드를 호출하여 리액트의 Component 클래스가 지닌 생성자를 호출
    • render 함수가 반드시 있어야 하고, 그 안에서 보여 주어야 할 JSX를 반환해야 한다
  2. 함수형 컴포넌트
    • 클래스형 컴포넌트 보다 메모리 소모가 적음
    • state, 라이프사이클 대신 hooks 사용

 

Props

  • properties의 줄인 표현으로 컴포넌트 속성을 읽을 때 사용하는 요소
  • 해당 컴포넌트의 부모 컴포넌트에서 설정하며 컴포넌트 자신은 해당 props를 "읽기전용"으로 사용
  • defaultProps : 부모컴포넌트에서 따로 props 값을 설정하지 않을 때 보여지는 기본값
  • props.children : 태그 사이의 내용
  • propTypes : 컴포넌트의 props의 타입값 지정. 지정한 타입과 일치하지 않으면 콘솔창에 에러 출력
  • isRequired : 필수 props 지정
  • 클래스형 컴포넌트에서 props 사용 : render함수에서 this.props로 조회

 

State

  • 컴포넌트 내부에서 바뀔 수 있는 값
  • 클래스형 컴포넌트의 state
    1. state는 객체형식
    2. state 초기화
      1. 클래스의 constructor에서 초기화
      2. 클래스 내부에서 바로 초기화 state = { ... } 
    3. render 함수에서 state를 조회할때는 this.state
    4. this.setState 메서드로 state값 변경 : setState의 인자로 전달해준 객체/함수로 state값 변경 
  • 함수형 컴포넌트의 useState( )
    1. useState 함수 호출시 인자로 상태의 초깃값을 전달, 이때 반드시 객체형식이 아니어도 숫자, 문자열, 배열 모두 가능
    2. useState( ) 호출시 배열 반환
      1. 첫번째 원소 : 현재상태
      2. 두번째 원소 : 상태를 바꿔주는 함수
    3. 배열 비구조화 할당 (array destructuring assignment)을 통해 useState( ) 가 반환하는 배열의 원소들을 쉽게 바인딩 가능
  • 클래스형 컴포넌트와 함수형 컴포넌트 모두 state 값을 변경할때는 setter를 이용

 

 

 

'Javascript > React' 카테고리의 다른 글

#4 Component 반복  (0) 2020.02.12
#3 React Event Handling  (0) 2020.02.12
#1 basic react  (0) 2020.02.12
#0 React intro  (0) 2020.02.12
webpack - resolve  (0) 2019.09.03
Posted by yongminLEE
2020. 2. 12. 14:38

React란?

  • 어플리케이션 구조 중에서 View만을 담당하는 라이브러리
  • React is a JavaScript library for building user interfaces
  • 어떤 데이터가 변할 때마다 어떤 변화를 줄지 고민하지 않고 그냥 기존 뷰를 날려 버리고 처음부터 새로운 데이터를 가지고 render함수를 호출하여 새로 렌더링 함으로써 어플리케이션의 구조를 간단화
    -> render 함수가 반환하는 결과를 곧바로 DOM에 반영하지 않고 이전에 render 함수가 만들었던 컴포넌트 정보와 현재 render 함수가 만든 컴포넌트 정보를 비교
    -> 둘의 차이를 알아내 최소한의 연산으로 DOM 트리 업데이트

 

React 특징

  1. VirtualDOM을 사용한 화면 조작
    • 데이터를 업데이트하면 전체 UI를 Virtual DOM에 리렌더링
    • 이전 Virtual DOM에 있던 내용과 현재 내용을 ‘diffing’ 알고리즘을 사용하여 변화를 확인
    • 바뀐 부분만 실제 DOM에 적용
    • 리액트와 virtual dom이 제공하는 것은 "업데이트 처리의 간결성"
      => 지속적으로 데이터가 변화하는 대규모 어플리케이션에 사용하는것이 적절
  2. 컴포넌트(Components)와 단방향 데이트 흐름(Unidirectional data flow)
    • React는 Component로 구성, 개발 할 때 컴포넌트 단위로 고려하는 것이 좋음
    • React에선 데이터가 단방향으로 전송 ->  데이터 추적 및 디버깅이 상대적으로 쉬움. 이러한 특징을 살려서 Flux 패턴을 사용한 Redux라이브러리를 많이 활용함

 

Module Bundler

  • 각각의 모듈들에 대해 의존성 관계를 파악한 후 모듈들을 하나의 파일로 그룹핑하는 소프트웨어
  • 브라우저에는 모듈을 불러오는 기능이 없으므로 브라우저에 실행 가능한 자바스크립트 파일을 만들기 위해 번들러를 사용
  • 대표적인 번들러 : webpack, parcel, ...
  • 웹팩 로더 : svg, css 파일들을 불러오는 웹팩의 기능
    • ex) css-loader : css파일을 불러옴
    • babel-loader : 자바스크립트 파일들을 불러오면서 최신 자바스크립트 문법을 구버전 웹 브라우저에서도 실행 가능하도록 ES5 문법으로 변환

 

JSX

  • JSX it is a syntax extension to JavaScript
  • JSX 문법
    1. 감싸인 요소 : 컴포넌트에 여러 요소가 있다면 반드시 부모요소 하나로 감싸야 한다 => <div></div> or <></>
    2. 자바스크립트 표현식 : JSX 내부에서 JS 코드를 { } 로 감싼다.
    3. 조건부연산자 : JSX 내부 자바스크립트 표현식에 if문을 사용할 수 없으므로 조건부연산자(삼항연산자)를 사용
    4. clssName : class 속성 대신 className 속성 설정
    5. 주석 : JSX 내부에서는 {/* 주석을 이렇게 작성 해야한다 */}

 

Components

  • Conceptually, components are like JavaScript functions. They accept arbitrary inputs (called “props”) and return React elements describing what should appear on the screen.
  • Components let you split the UI into independent, reusable pieces, and think about each piece in isolation. 

 

Props

  • React passes JSX attributes to a user-defined component as a single object. 
    We call this object "props".
  • 컴포넌트 속성 설정및 부모 컴포넌트의 데이터를 자식에게 전달할 때 사용
  • props값은 해당 부모 컴포넌트에서만 설정 가능


 State

  • State는 컴포넌트 내부에서 읽기(read)와 변경(update) 가능한 데이터
  • this.setState() 메서드를 사용하여 State값을 update
  • State값을 변경해서 화면(view)이 변경되면 render()가 자동으로 재실행

 

Life Cycle (React v16.3 이후)

  • Mounting
     : constructor  ->  getDerivedStateFromProps  ->  render  ->  componentDidMount
  • Updating - New props
     : getDerivedStateFromProps   -> shouldComponentUpdate -> render  -> getSnapshotBeforeUpdate -> componentDidUpdate
  • UPdating - setState()
    : shouldComponentUpdate -> render  -> getSnapshotBeforeUpdate -> componentDidUpdate
  • Unmounting
    : componentWillUnmount

 

FLUX 패턴/아키텍처

  • Action –> Dispatcher –> Store –> View 구조를 통해 데이터를 전달, 업데이트 하는 패턴
  • View에서 Dispatcher로 Action을 보낼 수 있으며, Dispatcher는 작업이 중첩되지 않도록 Action을 스케쥴링 (사실상 대기)
  • FLUX 패턴/아키텍처를 좀 더 유연하게 사용할 수 있도록 ‘Redux’라는 라이브러리를 많이 사용

'Javascript > React' 카테고리의 다른 글

#3 React Event Handling  (0) 2020.02.12
#2 React Component  (0) 2020.02.12
#0 React intro  (0) 2020.02.12
webpack - resolve  (0) 2019.09.03
react-router  (0) 2019.09.03
Posted by yongminLEE
2020. 2. 12. 14:38

 

  1. basic react
  2. react component
  3. event handling
  4. component 반복
  5. lifecycle
  6. hooks
  7. component styling
  8. todo project
  9. immer
  10. react-router, SPA
  11. Asynchrony
  12. redux
  13. todo project + redux
  14. middleware
  15. backend : express + mongodb
  16. MEMOAPP project : https://velopert.com/tag/reactcodelab

참고

- 리액트를 다루는 기술

- 인프런 : https://www.inflearn.com/course/react-%EA%B0%95%EC%A2%8C-velopert#description 

 

'Javascript > React' 카테고리의 다른 글

#3 React Event Handling  (0) 2020.02.12
#2 React Component  (0) 2020.02.12
#1 basic react  (0) 2020.02.12
webpack - resolve  (0) 2019.09.03
react-router  (0) 2019.09.03
Posted by yongminLEE
2020. 2. 4. 12:01

반응형 웹

: 다양한 크기의 기기에 대응하여 웹사이트의 구조가 최적환된 구조로 변경하는 웹

 

뷰포트

  • 정의 : 기기에서 실제 콘텐츠가 표시되는 부분
  • <meta name="viewport" content="width=device-width, initial-scale=1. user-scalable=no">

 

미디어 쿼리

  • 정의 : 화면해상도, 기기방향 등의 조건으로 html에 적용하는 css 스타일을 전환할 수 있는 css 속성
  • 기본문법 : @media [only | not ] [미디어유형] [and | , ] (조건문) (실행문)
  • @media all and (min-width:320px) { ... }
    @media all and (min-width:768px) { ... }
    @media all and (min-width:1024px) { ... }

 

그리드 레이아웃

  • 정의 : 2차원 격자무늬의 레이아웃. 화면에 정보를 구성할 때 논리적으로 일관성 있게 표현하기 위한 구조
  • 화면 너비를 특정 값으로 고정해 놓고 그 안에 표시할 요소의 너빗값을 지정

 

반응형 웹 구현 기법

  1. 가변 그리드 레이아웃
    • 레이아웃을 고정 값이 아닌 백분율로 지정함으로써 화면의 너비가 바뀔 때마다 웹 요소의 너빗값도 함께 바뀜
  2. 플렉스 박스 레이아웃
    • 뷰포트나 요소의 크기가 불명확하거나 동적으로 변할 때에도 효율적으로 요소를 배치, 정렬, 분산할 수 있는 레이아웃

 

플렉스 박스

  • flexbox 구성
    1. flex container : flexbox가 놓여있는 영역. display : flex 속성이 적용 된 요소는 flex container가 된다
    2. flex item : flex container의 자식 요소
  • flexbox의 두개의 축
    1. main axis : 주축. flex-direction에 의해 정의되며 주축을 따라 플렉스 아이템이 배치됨.
    2. cross axis : 교차축
  • 시작선과 끝선
    1. 시작선: 처음 배치되는 위치, flex-direction이 row이면 주축의 시작선은 왼쪽 끝
    2. 끝선 : 마지막에 배치될 위치, flex-direction이 row이면 주축의 끝선은 오른쪽 끝
  • 주요 속성
    1. display : flex | inline-flex 
      • flexbox로 작동시키기위한 기본 설정
      • flex : 박스를 블록수준의 flexbox로 작동하게 함
      • inline-flex : 인라인 수준의 flexbox로 작동하게 함
    2. flex-direction : row | row-reverse | column | column-reverse
      •  flexitem의 배치 방향을 설정
      • row : 박스를 왼쪽에서 오른쪽으로 배치
      • column : 박스를 위에서 아래로 배치
    3. flex-wrap : nowrap | wrap | wrap-reverse
      • 자식박스를 한줄안에 여러개를 배치하기 위한 부모속성
      • nowrap : 박스를 한 줄로 배치 (기본값)
      • wrap : 박스룰 여러 줄로 배치
    4. flex-flow : [flex-direction] [flex-wrap]
      • flex-direction과 flex-wrap의 축약 속성
    5. justify-content : flex-start | flex-end | center | space-between | space-around
      • 주축방향에서 플렉스아이템 배치 방법 설정
      • flex-start : 자식박스를 부모박스 주축의 시작점에 붙도록 배치 (기본값)
      • flex-end : 자식박스를 부모박스 주축의 끝점에 붙도록 배칙
      • center : 자식박스를 부모박스의 중앙에 배치, 양끝에 빈 공간 생길 수 있음
      • space-between : 자식박스가 시작점과 끝점에 붙도록 배치하고 자식박스들을 동일한 간격으로 정렬
      • space-around : 자식박스가 시작점과 끝점에 붙지 않도록 자식박스들을 동일한 간격으로 정렬
    6. align-items : stretch | flex-start | flex-end | center | baseline
      • 교차축방향으로 한줄의 플렉스아이템 배치 방법 설정
      • stretch : 자식박스를 확장해서 배치 (기본값)
      • flex-start : 자식박스를 시작점에 붙도록 배치
      • flex-end : 자식박스를 끝점에 붙도록 배치
      • center : 자식박스를 교차축 중앙에 배치
      • baseline : 자식박스의 문자열 baseline에 맞춰 자식박스들을 배치
    7. align-content : stretch | flex-start | flex-end | center | space-between | space-around
      • 교차축방향으로 여러줄의 플렉스아이템 배치 방법 설정
      • stretch : 자식박스를 확장해서 배치 (기본값)
      • flex-start : 자식박스가 시작점에 붙도록 배치
      • flex-end : 자식박스가 끝점에 붙도록 배치
      • center : 자식박스를 부모박스의 중앙에 배치
      • space-between : 자식박스가 시작점과 끝점에 붙도록 배치하고 자식박스들을 동일한 간격으로 정렬
      • space-around : 자식박스가 시작점과 끝점에 붙지 않도록 배치하고 자식박스들을 동일한 간격으로 정렬
    8. order : 정수값
      • 플렉스아이템의 배치 순서 바꾸기, 입력된 양수값값에 따라 배치
      • 0 : 기본값
    9. flex-grow : 양의 정수
      • 부모박스에 여백이 있을때 자식박스의 크기를 늘일 수 있는 속성, 자식박스간의 flex-grow 값 비율대로 남은 공간을 등분하여 확장
      • 0 : 기본값
    10. flex-shrink : 양의 정수
      • 부모박스 안의 자식박스의 크기가 넘치는 경우 크기를 줄이는 속성, 자식박스간의 flex-shrink 값 비율대로 크기 줄어듬
      • 1 : 기본값
    11. flex-basis : auto | width 속성값
      • 플렉스아이템의 기본 크기를 설정
      • auto : 플렉스아이템이 기본적으로 가지고 있는 크기를 기준으로 flex-grow, flex-shrink 속성값 적용 (기본값)
    12. flex : [flex-grow] [flex-shrink] [ flex-basis] | auto | initial | none
      • flex-grow, flex-shrink, flex-basis 축약속성
      • auto : 1 1 auto
      • initial : 0 1 auto
      • none :  0 0 auto
  • 플렉스 박스 레이아웃 : https://d2.naver.com/helloworld/8540176

    

 

 

 

'CS > Web Programming' 카테고리의 다른 글

#3 Basic Javascript  (0) 2020.02.04
#2 CSS3  (0) 2020.02.04
#1 HTML5  (0) 2020.02.03
#0 Web introduction  (0) 2020.02.03
Posted by yongminLEE
2020. 2. 4. 11:59

 

자바스크립트 역활

  • 사용자 입력, 계산
  • 웹페이지 내용, 모양의 동적제어
  • 브라우저 제어
  • 웹 서버와 통신
  • 웹 애플리케이션 작성

 

자바스크립트 객체

  • 자바스크립트는 객체(object) 기반의 스크립트 언어이며 자바스크립트를 이루고 있는 거의 “모든 것”이 객체. 원시 타입(Primitives)을 제외한 나머지 값들(함수, 배열, 정규표현식 등)은 모두 객체
  • 자바스크립트의 객체는 키(key)과 값(value)으로 구성된 프로퍼티(Property)들의 집합
  • 자바스크립트의 함수는 일급 객체이므로 값으로 취급할 수 있다. 따라서 프로퍼티 값으로 함수를 사용할 수도 있으며 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메소드라 부른다
  • 자바스크립트의 객체는 객체지향의 상속을 구현하기 위해 “프로토타입(prototype)”이라고 불리는 객체의 프로퍼티와 메소드를 상속받을 수 있다. 이 프로토타입은 타 언어와 구별되는 중요한 개념이다.

 

자바스크립트 객체 종류

  • built-in object : array, string, date, math
  • user-defined object
  • DOM
  • Document Object
  • BOM

 

Built-In Object

  1. Array 객체
    • 자바스크립트에서 배열은 [ ] 로 생성하든 new Array()로 생성하든 모두 Array 객체로 다룬다
    • 배열에는 여러 타입의 데이터가 섞여 저장 
    • Array 객체 메소드
      • Array.concat(arr) : 현재 배열에 배열 arr 원소들을 덧붙여 만든 새 배열 리턴
      • Array.join( [ separator ] ) : 배열의 모든 원소들 사이에 separator를 삽입하여 하나의 문자열을 만들어 리턴
      • Array.reverse( ) : 원소를 역순으로 재배열한 새로운 배열 리턴
      • Array.slice( idxA [ , idxB] ) : idxA부터 idxB 까지를 잘라내어 만든 새로운 배열 리턴, idxB 생략시 맨 마지막 원소까지 포함
      • Array.sort( ) : 배열의 원소들을 정렬
      • Array.toString( ) : 원소들을 사이에 , 을 삽입하고 모두 연결하여 하나의 문자열로 리턴
  2. String 객체
    • 문자열 객체는 new String( ) 또는 문자열리터럴로 생성
    • 문자열 길이 정보는 length 프로퍼티에 자동 저장
    • [ ] 로 문자 접근, 자바스크립트에는 문자 타입이 없으므로 길이가 1인 문자열 반환
    • String 메소드
      • String.concat(str1, str2, ...) : 현재 문자열 뒤에 str1, str2, ... 를 붙여 새로운 문자열 리턴
      • String.indexOf(str1 [, idx ] ) : idx부터 첫번째 str1이 나타나는 인덱스 리턴, idx 생략시 처음부터 검색
      • String.replace(str1, str2) : str1을 찾아서 str2로 수정한 새로운 문자열 리턴
      • String.slice(idxA [, idxB ] ) : idxA에서 idxB 이전의 문자열을 복사하여 리턴, idxB 생략시 문자열 끝까지 복사하여 리턴
      • String.substr(idxA [, len] ) : idxA에서 len개의 문자열을 복사하여 리턴, len 생략시 문자열 끝까지 복사하여 리턴
      • String.substring(idxA, idxB) : idxA에서 idxB 이전의 문자열을 복사하여 리턴
      • String.split( [separator] ) : separator을 구분자로 문자열을 분리하여 문자열 배열을 생성하여 리턴
      • String.trim( ) : 문자열을 앞뒤 공백을 제거한 새로운 문자열 리턴
  3. Date 객체
    • new Date( ) 로 새로운 Date 객체 생성시 현재시간 정보로 초기화된 객체 생성
  4. Math 객체

 

User-Defined Object

  • 프로토타입 : 개발자가 선언하는 새로운 객체 타입
  • 사용자 정의 객체 생성 방법
    1. 자바스크립트의 내장객체 중 Object 타입을 이용하여 생성
    2. 프토로타입객체를 위한 생성자함수 정의하고 new 연산자로 객체 생성
      • 프로토타입은 객체를 생성하기 위해서는 먼저 "생성자함수"를 정의
    3. ES6의 클래스 문법
      • es6 부터 class 키워드를 이용한 class 정의 가능

        class Dog {
          constructor(name) {
            this.name = name;
          }
          say() { console.log(this.name + ' : 멍멍'); }
        }

        const myDog = new Dog('흰둥이');
        myDog.say( ); //  흰둥이 : 멍멍

 

DOM, Document Object Model

  • 정의 : 브라우저가 각 html 태그들을 객체화해서 만든 객체, html 태그 하나당 한개의 DOM 객체 생성
  • DOM 트리 : DOM 객체들의 계층관계, DOM트리의 루트노드인 document 객체는 DOM객체가 아니다.
  • DOM 객체의 구성요소
    • 프로퍼티 : html 태그의 속성. ex) innerHTML : html 태그에 들어있는 html 콘텐츠
    • 메소드 : html 태그 제어
    • 컬렉션 : 정보를 집합적으로 표현하는 일종의 배열
    • 이벤트 리스너 : html 태그에 작성된 이벤트 리스너를 그대로 가지고 있다
    • style 프로퍼티 : html 태그에 적용된 css 스타일시트에 접근
  • this : 객체 자신을 가리키는 자바스크립 키워드로서, DOM 객체에서 객체 자신으 가리키는 용도로 사용됨

 

Document Object

  • 정의 : html 문서 전체를 나타내는 객체로 DOM 트리의 최상위 객체
  • 모든 DOM 객체를 접근하는 경로의 시작점
  • document 객체의 프로퍼티들을 통해 html 문서 전반적인 속성을 나타냄
    • location 프로퍼티 : 현재문서의 url 정보를 가진 location 객체의 레퍼런스
    • head 프로퍼티 : head 객체에 대한 레퍼런스
    • body 프로퍼티 : body 객체에 대한 레퍼런스
  • document 객체의 메소드들을 통해 DOM 객체 검색, 생성등 html 문서 제어 지원
    • getElementById( ) : 주어진 id 속성 값을 가진 첫 번째 DOM 객체 리턴
    • getElementsByClassName( ) : 주어진 class 속성 값을 가진 모든 태그의 컬렉션 리턴
    • write( ) : document 객체에 html 콘텐츠 삽입
  • document 객체에는 동일한 이름의 html 태그들을 배열처럼 접근할 수 있는 컬렉션 존재
    • images : 문서내의 모든 <img> 객체들의 컬렉션
    • links : 문서내의 모든 href 속성을 가진 모든 링크객체들의 컬렉션

 

BOM, Browser Object Model

  • 정의 : 윈도우, 윈도우에 로드된 문서의 url, 브라우저출력 스크린, 브라우저와 브라우저가 실행되고 있는 환경 등을 자바스크립트 코드로 접근, 제어할 수 있도록 설계된 객체 그룹
  • BOM 종류
    • window 객체 : 열려있는 브라우저 윈도우나 탭 윈도우를 나타내는 객체
    • navigator 객체 : 현재 작동중인 브라우저에 대한 정보를 담고있는 객체
    • history 객체 : 사용자가 방문한 웹 페이지의 히스토리 정보를 담고있는 객체
    • location 객체 : 윈도우에 로드된 웹 페이지의 url 정보를 담고있는 객체
    • screen 객체 : 브라우저가 실행되는 스크린 장치에 대한 정보를 담고 있는 객체

'CS > Web Programming' 카테고리의 다른 글

#4 Responsive Web  (0) 2020.02.04
#2 CSS3  (0) 2020.02.04
#1 HTML5  (0) 2020.02.03
#0 Web introduction  (0) 2020.02.03
Posted by yongminLEE
2020. 2. 4. 09:35

1. CSS3

  • Cascading Style Sheet, css로 작성된 코드를 style sheet이라고 한다
  • 적용방법 : <link href="url" type="text/css" rel="stylesheet">
  • 규칙 
    1. 자식태그는 부모태그의 스타일을 상속
    2. cascading : 여러 스타일이 합쳐서 적용된다
    3. overriding : 여러 스타일이 합쳐서 적용되어 충돌이 발생되는 경우 우선 순위가 높은 스타일을 적용
      ①html 태그의 style 속성  ② <style> 태그  ③스타일시트  ④브라우저디폴트스타일
  • selector
    1. 태그이름 셀렉터 : h1 { color : red; }
    2. class 셀렉터 : .class1 { color : red; }
    3. id 셀렉터 : #id1 { color : red; }
    4. 자식 셀렉터 : div > h1 { color : red; }
    5. 자손 셀렉터 : div h1 { color : red; }
    6. 전체 셀렉터 : * { color : red; }
    7. 슈도 클래스 셀렉터 : h1:hover { color : red; }

pseudo class selector

 

 

2. 폰트 프로퍼티

- 폰트 단위

  • html 요소 크기의 기본값은 웹브라우저에서 설정한 글자크기, 디폴트 16px
  • em : 상위 요소 크기의 몇 배인지로 폰트 크기를 정함
  • rem : html 요소 (문서의 최상위 요소) 크기의 몇 배인지로 폰트 크기를 정함

 

- 웹 폰트

  • <style> </style> 태그 내에서 @font-face 규칙을 설정
    1. font-family : 사용할 웹 폰트의 이름 지정, 폰트 파일의 이름과 일치할 필요는 없지만 비슷하게 설정하여 유지보수 용이성 확보
    2. src : url( )에 폰트 파일의 경로를 설정하고 format( )에 폰트 파일의 형식을 설정
  • @font-face 규칙을 설정한 다음 웹 폰트가 필요한 선택자의 font-family 속성에서 사용할 웹 폰트의 이름을 호출하여 사용. 웹 폰트 로딩 실패시 fallback폰트가 렌더링

 

font-family

  • 글꼴 지정
  • font-family : 글꼴1, 글꼴2  // 글꼴1 없는 경우 글꼴2(fallback 폰트) 적용

 

font-size

  • 글자크기 지정
  • font size : small | mediann | large | 3rem | 1.2em | 10px ...

 

font-weight

  • 글자 굵기 지정
  • font-weight : bold | bolder | lighter | normal | 100~900수치

 

font-style 

  • 글자스타일
  • font-style : italic | oblique

 

font 

  • 단축 프로퍼티
  • font : style weight size family

 

3. 텍스트 프로퍼티

text-decoration

  • 밑줄
  • text-decoration : none | underline | overline | line-through

 

text-transform

  • 대,소문자 전환
  • text-transform : none | capitalize | uppercase | lowercase

 

text-align

  • 문단 정렬
  • text-align : start (시작위치 맞춤) | end (끝위치 맞춤) | left (왼쪽정렬) | right | center | justify (양쪽정렬)

 

text-justify

  • 문단 정렬시 공백 조절
  • text-justify : auto | none

 

text-indent

  • 들여쓰기
  • text-indent : 10px | 10% (부모요소기준으로 10% 들여쓰기)

 

line-height

  • 줄 높이
  • line-height : noraml | 2.0 (2배) | 200% | 20px

 

4. 박스모델

- 개념

  • html 태그 요소를 하나의 박스로 보고 박스의 크기, 배경, 색 여백 등을 다루는 시스템
  • box는 margin, border, padding, content로 구성

 

box-sizing

  • 박스의 크기의 기준을 설정
  • box-sizing : content-box | border-box | initail (기본값으로 설정 : content-box) | inherit

 

- 박스 제어 프로퍼티

 

 

overflow

  • html 콘텐츠가 width와 height 의 크기를 넘어가는 경우 콘텐츠를 자를 것인지 말 것인지 지정
  • 블록태그에만 적용
  • overflow : visible (잘리지 않고 태그 영역을 넘어서 출력, 디폴트) | hidden (넘어가는 것은 보이지 않음, 스크롤바 없음) | scroll | auto  

 

5. 포지셔닝

- 개념

  • html 태그가 출력되는 위치를 지정하는 것

 

display 프로퍼티

  • 디폴트 박스 유형을 무시하고 html 박스 유형을 지정한다
  • display : block | inline | inline-block
  • css3 박스유형

  • 박스 유형 비교

 

 

position 프로퍼티

  • 단일 박스 모델의 배치방법
  • position : static (기본위치에 배치)
  • positiion : relative (기본위치에서 left, top, bottom, right 프로퍼티 값 만큼 이동한 상대위치)
  • position : absolute (부모요소를 기준으로 left, top, bottom, right 프로퍼티 값 만큼 이동한 절대위치)
  • position : fixed (스크롤하거나 브라우저 크기 변경과 상관없이 left, top, bottom, right 값으로 뷰포트의 특정위치에 고정)

 

float 프로퍼티

  • html 요소를 문서에 떠있게끔 배치
  • position 이 absolute이나 fixed로 지정되어 있으면 해당 요소는 완전히 독립적인 위치를 갖으므로 float 속성은 none으로 지정된다.
  • float : left (요소 자신을 포함하고 있는 컨테이너의 왼쪽으로 띄움)
  • float : right (요소 자신을 포함하고 있는 컨테이너의 오른쪽으로 띄움)
  • float : none (요소를 띄우지 않음, 디폴트)

 

clear 프로퍼티

  • clear된 요소의 좌우에 float된 요소를 허용하지 않도록 함
  • clear : none (요소들이 양쪽으로 float 할 수 있음, 디폴트)
  • clear : left (왼쪽으로 float 할 수 없게 함)
  • clear : right (오른쪽으로 float 할 수 없게 함)
  • clear : both (양쪽으로 다 float 할 수 없게 함)

 

z-index 프로퍼티

  • html 태그들을 z축을 따라 수직으로 쌓는 순서를 지정
  • 값이 클 수록 위에 쌓인다
  • position이 relative나 absolute인 경우에만 작동
  • z-index : 3

 

 visibility 프로퍼티

  • html 태그를 출력할 것인지 숨길 것인지 지정
  • visibility : visible(출력) | hidden(공간은 차지하지만 태그는 보이지 않음)
  • display : none (공간도 차지않고 태그도 출려되지 않음)

 

 

'CS > Web Programming' 카테고리의 다른 글

#4 Responsive Web  (0) 2020.02.04
#3 Basic Javascript  (0) 2020.02.04
#1 HTML5  (0) 2020.02.03
#0 Web introduction  (0) 2020.02.03
Posted by yongminLEE