제대로 인지한 상태에서 배운것이 아니라

실전에서 시키는대로 하느라 잘 모르는거 같아서

 

다시 공부!!

 

git : 버전 관리 도구 = 코드관리

github : 코드 원격 저장소 웹호스팅 서비스

 

add : 스테이지에 파일 올리기 

push : 깃허브에 코드 올리기

merge : 코드 병합하기

branch : 기존 내용을 유지한 채, 새로운 내용을 추가하고 싶을 때 사용 - 병합시 충돌주의

master : 최종본

 

clon : 깃허브를 내컴에 복사해오는 것

 

코드 링크 주소 : github.cim/깃허브아이디/코드폴더이름.git

 

conflick 충돌

modified 수정

 

내가 사용해본 건 깃허브 데스크탑 

아래 링크는 데스크탑 방법

https://hj2-com.tistory.com/entry/%EA%B9%83%ED%97%88%EB%B8%8C-%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%83%91-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95-%EB%8B%A4%EC%9A%B4-%EB%B0%A9%EB%B2%95-vscode%EC%97%90%EC%84%9C-%EC%BD%94%EB%93%9C-%EC%93%B0%EA%B3%A0-%EC%97%85%EB%A1%9C%EB%93%9C-%ED%95%98%EA%B8%B0

 

깃허브 데스크탑 사용 방법, 다운 방법, vscode에서 코드 쓰고 업로드 하기

1.깃허브 데스크탑 다운로드 하기 https://desktop.github.com/ GitHub Desktop Simple collaboration from your desktop desktop.github.com 2. 다운로드 후 로그인하기 (깃허브 아이디) 3. 새 레지토리 만들기 >> + Create a new repo

hj2-com.tistory.com

 

소스트리가 브랜치 ui가 잘되어있어서 사용하는 곳이 많다고 하는데

나는 데스크탑이 더 익숙해서 아직은 데스탑 쓰는 중

 

크로스 브라우징은 동일성을 의미하지 않는다

 

 

 

흔히 크로스브라우징을 모든 브라우저에서 똑같이 보이게 하는 것 이라고 생각한다

 

 

크로스브라우징이란?

표준 웹기술을 사용하여 다른 기종 또는 다른 브라우저에 따라 달리 구현되는 부분을

공통요소를 사용하여 비슷하게 만들어주어

어느 한쪽에 최적화되어 치우치지 않도록 웹페이지를 제작하는 것을 뜻한다

 

 

모든 웹 브라우저 사용자가 같은 수준의 정보를 받아갈수 있는 것 !!

최대한의 호환성을 제공하는것 !!

 

 

참조

: 아래 글에서 정보를 많이 얻고 갑니다

https://mulder21c.github.io/2019/01/30/what-is-cross-browsing/

 

크로스 브라우징이란?

'크로스 브라우징' 이라는 용어가 나온지도 10년이 훌쩍 넘은 듯 하다. 그런데 10년이 넘도록 크로스 브라우징에 대한 이해는 여전히 잘못된 면모가 자꾸 보인다.

mulder21c.github.io

 


 

 

 

1.깃허브 데스크탑 다운로드 하기

 

https://desktop.github.com/

 

GitHub Desktop

Simple collaboration from your desktop

desktop.github.com

 

2. 다운로드 후 로그인하기 (깃허브 아이디)

 

 

3. 새 레지토리 만들기

>> + Create a new repository on your hard drive..  클릭!

 

4. 새 프로젝트 시작하기

프로젝트 명

프로젝트 설명

저장 위치 설정하기

 

create repository 클릭!

 

 

5. 저장위치에 파일 생성 확인!

 

이폴더 안에서 vscode로 작업 후 확인해보면 

연동이되어있어 코드가 그대로 나타남

 

 

 

6.깃허브 데스크탑에 올리기

summary 적고 커밋하기

 

커밋하지 않을 경우 현재의 코드는 보이나 이전 수정 내역이 보이지않음

<< 말그대로 아직 커밋을 안했기 때문에

 

 

7. Publish repository 클릭 후 정보 입력 확인하고 깃허브에 등록

(이때부터 깃허브 사이트에서 제작물 확인가능) 

 

8. 깃허브 데스크탑 history에서도  확인 가능 끝~~

 

 

코딩앙마님 기초강좌를 봤습니다

좋은 영상 감사합니다~!

 

기초강좌 1. 변수

1.변수는 숫자와 문자, $와 _만 사용 가능

2.첫글자에 숫자 불가

3.예약어 사용 불가

4.상수는 대문자로 알려주기

5. 변수명은 읽기,이해 쉽게 선언

 

✔️예약어란? 

ex) let, const 등등 이미 지정되어있는 언어

 


기초강좌 2. 자료형

` (백틱) : 문자내 변수를 표현 할때 사용

 

 

null :존재하지 않는값

undefined : 값이 할당되징 않았다는 것 의미

ex) 변수 선언 후 값이 없을때 = undefined 

 

✔️typeof 연산자

: 변수 타입을 문자로 반환하는 함수

ex) console.log(typeof, 3) 의 출력 결과 =  number 

 

Number :숫자

String : 문자

Boolean : true, false

Object :null , 배열

 

* null은 객체가 아니지만 자바스크립트에서 출력결과를 object로 하고있다

* Number ("문자") =  NaN = Not a Number = 값이 숫자가 아니라는 뜻

* Number 에서  true 는 1 / false 는 0 으로 표출된다


기초강좌 3. alert, prompt, confirm

 

✔️alert : 알려주는 역할

 

✔️prompt : 입력받는 역할 (입력칸에 디폴트값 넣기 가능 = 두개의 인수 받음)

ex) const name = prompt(" 예약일를 입력하세요 ", " 2023-04- ");

두번째 인수가 입력칸에 디폴트로 되어있음

 

✔️confirm : 확인받는 역할

 

 

✔️alert 과 confirm 차이점 

alert 은 확인만 있음

confirm 은 취소/확인  (취소 - false )

 


기초강좌 4. 형변환

✔️prompt : 문자형으로만 인식함

✔️Boolean : 불린형으로 변환

 0, '',null, undeifined, NaN :  false

나머지 : true

 

 

*주의사항

Number (null) 의 출력은 0

Number (undeifined) 의 출력은 NaN 

 

*따옴표의 차이

Boolean (0) 의 출력은  false

Boolean ('0') 의 출력은  true

 

*공백의 차이

Boolean ('') 의 출력은  false

Boolean (' ') 의 출력은  true 

 


기초강좌 5. 기본 연산자

A % B = 1 (나머지값)

 

* 곱셈

** 거듭제곱

 

A = A + B  →   A += B

A = A - B  →   A  -= B

 

 

✔️증가가연산자

++A

 

✔️감소연산자

--A


기초강좌 6. 비교 연산자

반환값은 불린형으로 반횐됨 (true / false)

 

✔️동등연산자: 값이 같다 ( == ) 

✔️일치연산자 : 값과 타입까지 같다 ( === ) 

 

값이 다르다( != )

값과 타입이 다르다( !== )

 

✔️조건문 

if문 else 


기초강좌 7. 논리 연산자

 

✔️|| (OR)

하나라도 참이면 참

모든 값이 거짓일때만 거짓 반환

 

✔️%% (AND)

모든값이 참일떄만 참 반환

하나라도 거짓이면 거짓

 

 

✔️! (NOT)

참과 거짓의 반대값을 반환

 

✔️OR (첫번째 참을 발견하는 즉시 평가 멈춤) ,  AND (첫번째 거짓을 발견하는 즉시 평가 멈춤)

>> 적은 확률의 평가순으로 나열한다면 성능최적화에 도움을 준다

 


기초강좌 8. 반복문

✔️for 문

for( let i =0; i < 10; i++;){

 반복할 코드

}

= for( let 초기값; 반복할조건; 코드실행 후 작업할 것;) 

 

 

✔️while

 

while(조건){

  //코드

}

 

✔️do ... while

 

do{

   //코드

}while(조건)

 

반복문을 빠져나오는 기능

break : 즉시 실행을 멈추고 빠져나옴

continue :실행을 멈추지만 반복문을 빠져나오진않음 (멈췄을때 출력을 건너뛰고 재실행)


기초강좌 9. switch 문

 

가상요소란 css를 통하여 가상의 element를 추가하는 코드다

 

작성된 html 코드의 앞과(before) 뒤에(after) 추가 할 수 있다

 

 

사용법

컨텐츠::after{

 content:"추가할 가상요소";

}

 

" content " 를 반드시 넣어준다 

텍스트를 넣지않을 경우 content:""; 이렇게 비워두어도 상관없다

 

 

예시 ) 

 

 

 

가상요소가 동작하지 않을 경우

크로스 브라우징에 의한 이슈일 가능성이 있다

 

이전에는 싱글 콜론이었으나

css3부터는 더블콜론을 허용하였다

 

IE7 - 싱글/더블 콜론 동작 X

IE8 - 싱글 콜론 O

그외 - 더블 콜론 O

 

 

 

 

 

CDN (Content Delivery Network)

 

코드로 파일을 다운받아 내코드에 적용시킬수 있는 것

 

 

CDN 링크를 제공하는 사이트들

 

https://cdnjs.com/

 

cdnjs - The #1 free and open source CDN built to make life easier for developers

Simple. Fast. Reliable. Content delivery at its finest. cdnjs is a free and open-source CDN service trusted by over 12.5% of all websites, serving over 200 billion requests each month, powered by Cloudflare. We make it faster and easier to load library fil

cdnjs.com

 

https://www.npmjs.com/

 

npm

Bring the best of open source to you, your team, and your company Relied upon by more than 17 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and safe. The free npm Registry has become the center of Java

www.npmjs.com

 

cdn사용법

 

1. 맘에드는 기능을 검색한다

 

2.기능의 링크를 script 코드링크에 넣는다

 

예 ) 타이핑 애니메이션 링크

     

 

3. 적용법을 따라 내 코드에 맞춰바꿔준다 

 
 
  var app = document.getElementById("topText");


      var typewriter = new Typewriter(app, {
        loop: true,
      });

      typewriter
        .typeString("냥냥이에게 말을 걸어보자! <br>")
        .pauseFor(1300)
        .deleteAll()
 
        .typeString("가이드 : '안녕', '냥냥펀치','냥냥펀치 취소', '불꺼줘', '불켜줘', '좋아하는 음식은?'")
        .pauseFor(1300)
        .deleteAll()
        .start();

 

 

4. 완성

  window.addEventListener('scroll', function(){
    console.log( window.scrollY )
  });

 

window.scrollY 사용하면 현재 페이지를 얼마나 위에서 부터 스크롤했는지 px 단위로 알려준다.

window.scrollX 는 마찬가지로 가로로 얼마나 스크롤했는지 알려준다. (가로 스크롤바가 있으면)

 

  window.scrollTo(0, 100)

window.scrollTo(x, y) 실행하면 강제로 스크롤바를 움직일 수 있다.
위 코드는 위에서부터 100px 위치로 스크롤해준다.

 

window.scrollBy(x, y) 실행하면 현재 위치에서부터 스크롤해준다.

 

 

제이쿼리

 $(window).on('scroll', function(){
    $(window).scrollTop();
  })

 

 

 

 

포폴에 넣은 코드

  // 맨 위로 가기 버튼
  const main_bg = document.querySelector('.main_bg')
  const up_btn = document.querySelector('.up_btn')

  up_btn.addEventListener('click', () => {
    main_bg.scrollIntoView({ behavior: 'smooth' , block: 'nearest' })
  });

behavior 애니메이션 설정

( auto, smooth )

 

block 스크롤 세로방향의 정렬 위치

( start, center, end, nearest )

 

inline 스크롤 가로방향의 정렬 위치

( start, center, end, nearest )

포트폴리오를 만들면서 내가 만든 작업물들에 대해

카테고리대로 볼 수 있는 기능을 넣기로 했다.

 

html

     
      <div class="work_categories">
        <button class="category_btn selected" data-filter="*">
          All
        </button>
        <button class="category_btn" data-filter="frontend">
          Frontend
        </button>
        <button class="category_btn" data-filter="design">
          Design
        </button>
      </div>

      <ul class="work_projects">
        <li class="project" data-type="frontend">
         
        </li>
       
        <li class="project" data-type="frontend">
         
        </li>
             
        <li  class="project" data-type="frontend">
            
        </li>
               
        <li href="" class="project" data-type="design">
            <img src="" alt="projects">
        </li>
      </ul>

버튼에 data-filter  값을 넣어 준다.

아래 리스트에 필터에 맞는  data-type 항목을 넣어줘서 일치하는 것끼리 노출되게 해준다

 

css

<style>
     
.project {
 
}


.project.invisible {
  display: none;
}
</style>

project 클래스 = 리스트 요소 ( li ) 에 invisible 클래스 생성해주기

 

js

 <script>
                const categoryBtn = document.querySelector(".work_categories");
                //카테고리 컨테이너를 가져옴
 
                const projects = document.querySelectorAll(".project");
                //work 리스트 전체를 가져옴

                categoryBtn.addEventListener("click", (e) => {
                const filter = e.target.dataset.filter;
                //console.log(filter);
                //e.target값 확인
               
                if (filter == null) {
                    return;
                }
               
                projects.forEach((project) => {
                    // for문과 같은 의미, 배열을 불러와서 정렬
                    if (filter === "*" || filter === project.dataset.type) {
                        project.classList.remove("invisible");
                    } else {
                        project.classList.add("invisible");
                    }
                })
            });
        </script>

 

 

결과 

버튼을 눌렀을때 맞는 데이터값의 결과만 노출된다

 

 

 

포폴에 넣을땐 카테고리 변경에 따라 버튼 색상을 변화시켜주는 코드를 추가 하였다

 

// work 카테고리 필터링
const categoryBtn = document.querySelector(".work_categories"); //카테고리 컨테이너 가져옴

const projects = document.querySelectorAll(".project"); ///work 리스트 전체 가져옴

const projectContainer = document.querySelector('.work_projects');

categoryBtn.addEventListener("click", (e) => {
const filter = e.target.dataset.filter || e.target.parentNode.dataset.filter;
console.log(filter);


if (filter == null) {
    return;
}

// work 카테고리 버튼 색상 변경
const active = document.querySelector('.category_btn.selected');
active.classList.remove('selected');

const target = e.target.nodeName === 'BUTTON' ? e.target :  e.target.parentNode;
target.classList.add('selected');

projectContainer.classList.add('anim-out');
  setTimeout(() => {
    projects.forEach((projcet) => {
 
      if(filter === "*" || filter === projcet.dataset.type) {
        projcet.classList.remove('invisible');
      } else {
        projcet.classList.add('invisible');
      }
    })
    projectContainer.classList.remove('anim-out');
  }, 300);
});

코드메이트에서 자바스크립트 편을 따라가다가

인턴 생활을 시작하면서

퇴근 후에는 거의 기절하거나 낮동안의 부족한 부분들을 메꾸느라 까맣게 잊고있던 코드메이트..!

 

회사 생활에 이젠 익숙해졌는데 갑작스러운 계약 종료..!

 

그렇게 블로그를 다시 들어와보니 마침 스크립트 공부도 부족하겠다~ 시간도 있겠다~

다시 이어해보기로 했다

 

취준 화이팅..!

공부 화이팅

 

 

JSON =  JavaScript Object Notation

 

 

HTML

<div>
  <input id="search_input" type="text">
  <button onclick="inputValue()">검색</button>
  <div class="search_result_box">
      <p class="search_result_text"></p>
  </div>
</div>

 

JS

const 과일리스트 = [
  { 사과: [
      { name: "사과",
        place: "2000원",
        color: "빨간색", },
    ],  },

  { 바나나: [
      { name: "바나나",
        place: "2000원",
        color: "노란색", },
    ], },

  {  복숭아: [
      { name: "복숭아",
        place: "1000원",
        color: "핑크색", },
    ], },

  {  딸기: [
      { name: "딸기",
        place: "12000원",
        color: "노란색",  },
    ],  },
];
 
function inputValue(){

  const inputValue = document.querySelector('#search_input').value; //input 데이터 가져오기
  const p = document.querySelector('.search_result_text'); //데이터가 들어갈 변수

  //input 데이터와 배열 데이터 비교
  switch(inputValue){
    case "사과" :  

      //JSON.stringify() 객체 값을 출력하고 싶을 때 >> 객체를 JSON 문자열로 변환 해주는 함수
      //Object.keys() = 객체의 속성들을 뽑아서 배열로 반환하는 메서드
      //[Object.keys(과일리스트)[i]]= i번째 과일의 속성값
      p.innerHTML = JSON.stringify(과일리스트[Object.keys(과일리스트)[0]]);
      break;
      case "바나나" :
      p.innerHTML = JSON.stringify(과일리스트[Object.keys(과일리스트)[1]]);
      break;
      case "복숭아" :
      p.innerHTML = JSON.stringify(과일리스트[Object.keys(과일리스트)[2]]);
      break;
      case "딸기" :
      p.innerHTML = JSON.stringify(과일리스트[Object.keys(과일리스트)[3]]);
      break;
      default :
      alert ("판매하지 않는 과일입니다.")
    }
  };

 
 

 

 

결과물

 

+ Recent posts