전체 글73 원시 타입(Primitive type)과 참조 타입(Reference Type) Javascript의 변수 타입 자바스크립트의 변수 타입에는 크게 '원시 타입'과 '참조 타입'으로 나뉜다. 원시타입의 변수들은 데이터 복사가 일어날 때 메모리 공간을 새로 확보하여 독립적인 값을 저장하며, 참조타입은 메모리에 직접 접근이 아닌 메모리의 위치(주소)에 대한 간접적인 참조를 통해 메모리에 접근한다는 특징이 있다. 원시 타입 원시타입에는 아래와 같은 변수들이 있다. 숫자(Number) 문자열(String) 불리언(Boolean) null undefiend 심볼(Symbol) : ES6에서 추가된 원시타입으로, 유일하고 변경 불가능한 값을 생성하는 데 사용된다. 원수 타입은 변수에 직접 값을 저장한다. 즉, 변수에 원시 값을 할당하면 해당 변수에는 실제 값이 저장되며, 변수 간에 값 복사가 이.. 2023. 8. 2. 상태관리도구 Redux Toolkit 리덕스툴킷(Redux Toolkit) 리덕스툴킷은 리덕스 사용 시에 아래와 같이 우려되는 것들을 해결하기 위해 만들어졌다. "저장소를 설정하는 것이 너무 복잡하다" "쓸만하게 되려면 너무 많은 패키지들을 더 설치해야 한다" "보일러플레이트 코드를 너무 많이 필요로 한다" 리덕스를 만든 Dan Abramov는 모든 리덕스 앱에 리덕스 툴킷을 사용하기를 강력히 권장하고 있다. 리덕스툴킷은 무슨 장점을 가지고 있기에 이렇게 강력추천 하는 걸까? 리덕스툴킷의 장점 초기 설정이 매우 간편하다. 더 이상 다양한 패키지들을 설치하지 않아도 된다. 기존에는 반복되는 코드가 많아 코드가 복잡해지고 실수를 많이 유발했지만, 이런 부분들이 많이 개선되었다. 리듀서, 액션타입, 액션 생성함수, 초기상태를 하나의 함수로 편하게.. 2023. 8. 1. 단반향 바인딩과 양방향 바인딩 데이터 바인딩(Data Binding)이란? 화면상에 보이는 데이터(View)와 브라우저 메모리에 있는 데이터(Model)를 묶어서(Binding) 서로 간의 데이터를 동기화하는 것을 의미한다. 예를 들어 HTML에서 서버 혹은 스크립트상에서 받아온 데이터를 화면상에 그려주었을 때, 해당 값이 변경될 경우 다시 HTML상에 데이터를 변경된 값에 따라서 맞추어 주는 동작을 데이터 바인딩이라고 한다. 단반향 바인딩 장점 데이터 변화에 따른 성능 저하 없이 DOM 객체 갱신이 가능하다. 데이터 흐름이 단방향(부모 -> 하위 컴포넌트)이라, 코드를 이해하기 쉽고 데이터 추적과 디버깅이 쉽다. 단점 변화를 감지하고 화면을 업데이트하는 코드를 매번 작성해야 한다. 대표적인 프레임워크 리액트 단방향 데이터 바인딩은 .. 2023. 7. 29. 4주간의 메인프로젝트 후기 프로젝트 마지막 날 모든 걸 포기하고 탈주해 버린 팀장 때문이 아니라.... 여러모로 스스로에게 아쉬운 게 많은 메인프로젝트였다. 1. 메인프로젝트에 대한 욕심을 많이 내지 못한 것. - 사실 메인프로젝트 시작 전에는 해보고 싶었던 게 많았다. Motion Graphics나 UI Animation 등을 통해 세련된 UI를 만들어보고 싶었고, 유저들을 위한 게시판이나 채팅기능도 만들어보고 싶었다. 하지만, 우리 팀은 팀장의 아이디어에 이끌려서 모였던 팀이었기에 회의 시에 팀장의 의견을 많이 따를 수밖에 없었다. 팀장은 보수적인 사람이었고, 새로운 것들에 도전하기보다는 기본에 충실해서 애초에 기획했던 기본 기능들을 모두 구현하는 것에 목표를 두었다. 팀원들의 속마음은 잘 모르겠지만, 다들 팀장의 의견에 동의.. 2023. 7. 27. 로그인/회원가입 페이지 + 모달컴포넌트 2일만에 완성!! 프로젝트 마지막 날 탈주해버린 팀장의 이야기... https://hustle-ing.tistory.com/81 메인프로젝트 마지막 날. 팀장의 탈주. 사실 어제(월요일)가 메인프로젝트의 마지막 날이었다. 어제 23시 59분까지 메인프로젝트를 완료하고 과제를 제출하여야 했다. 과제제출에는 배포링크, 기술발표영상, 서비스매뉴얼 등이 포함된 hustle-ing.tistory.com 탈주해버린 팀장이 맡았던 부분들을 내가 대신 할 수 밖에 없는 상황이었다. 어제는 밤을 새서 로그인페이지를 완성했고, 오늘 밤을 새서 겨우겨우 회원가입 페이지와 모달컴포넌트를 완성시킬 수 있었다. 프리프로젝트 때도 로그인/회원가입 페이지를 담당했었는데, 그 때는 일주일 넘게 걸렸던게.... 상황이 급박하다보니 2일만에 되긴 됐다... 2023. 7. 26. 메인프로젝트 마지막 날. 팀장의 탈주. 사실 어제(월요일)가 메인프로젝트의 마지막 날이었다. 어제 23시 59분까지 메인프로젝트를 완료하고 과제를 제출하여야 했다. 과제제출에는 배포링크, 기술발표영상, 서비스매뉴얼 등이 포함된다. 당장 오늘부터는 우리의 결과물을 공개하고, 부트캠프 동기들의 피드백을 받는 시간이다. 하지만..... 결과부터 말하자면, 로그인 & 회원가입을 맡았던 팀장이 해준다 해준다 말만 해놓고 결국 잠수를 타버렸다. 못하겠으면 차라리 미리 말이라도 해주지..... 한 달 동안의 노력이 물거품 되기 일보직전이다. 회원가입을 해야 로그인을 할 테고, 로그인을 해야 로그인 상태에 따라 헤더가 바뀌고 마이페이지로 들어가고 할 수 있을 테니 말이다. 사실 금요일부터 걱정이 되긴했다. 금요일에 로그인 & 회원가입 페이지를 완료해 줄 거.. 2023. 7. 25. 구조 분해 할당(Destructuring assignment) 팀원 중 한명이 버튼컴포넌트를 담당하였는데, 여러가지 상황에서 쓰이는 공통컴포넌트다 보니 매개변수가 엄청나게 많아 지는 상황이 발생하였다. 멘토님께서 구조 분해 할당을 공부해서 적용해보라는 조언을 해주셔서 자세히 알아보았다. const SelectedButton = ({ clicked, checked, id, ...props }) => { 모든 상황에서 꼭 들어가는 매개변수만 적어주고(clicked, checkd, id) 나머지 기타 상황에서 필요한 매개변수는 ' . . . props'로 대체해 준 코드이다. 구조 분해 할당 객체와 배열은 자바스크립트에서 가장 많이 쓰이는 자료 구조이다. 키를 가진 데이터 여러 개를 하나의 엔티티에 저장할 땐 객체를, 컬렉션에 데이터를 순서대로 저장할 땐 배열을 사용한.. 2023. 7. 23. position: absolute의 사용법 postion: absolute를 사용하면 그 요소를 다른 요소들에 영향받지 않고 원하는 자리에 고정시킬 수 있다. 부모요소 없이 사용하게 되면 뷰포인트 전체에서 자리를 잡게 된다. 부모요소에 postion: relative를 써서 postion: absolute를 사용하는 요소를 묶어주면(가둬주면) 부모요소 안에서만 위치하게 된다. 요약 : absolute를 사용하려면 부모요소에 postion:relative를 써서 absolute를 가둬주는 것이 대부분의 상황에서 좋다. 2023. 7. 21. overflow, text-overflow, white-space 텍스트가 길어질 경우 뒷부분을 '...' 으로 남기는 방법을 기억해두면 좋을 것 같다. ... overfolw: hidden; // 내용이 Container(Wrapper)를 넘어갈 경우 숨김 text-overflow: ellipsis; // 넘어간 텍스트를 '...'으로 표시 white-spce: nowrap; // 텍스트가 길어져도 한 줄에 나타나도록 설정 ... 2023. 7. 18. 어떤 이미지 포맷을 써야할까? PNG vs SVG 이번 메인프로젝트에서 메인페이지, 헤더, 푸터 등등 UI 구성을 위해 이미지를 써야 하는 상황이 많았다. 팀장님의 추천대로 PNG로 이미지를 다운받아서 사용하고 있었는데, 멘토님께서는 SVG을 사용하는 것을 추천하셨다. 사실, 메인프로젝트 전 프리프로젝트에서는 모든 이미지를 SVG로 써 왔었고 장점 또한 대충은 알고 있었다. 이번 기회를 통해 웹개발에서 많이 쓰이는 PNG와 SVG을 조금 더 자세히 알아보고 장단점을 제대로 알아보고 넘어가고자 한다. (+JPG) 1. JPG : 개발에 관심이 없던 '일반인' 시절 가장 많이 사용하였던 이미지 포맷이다. 언제부터인지, 왜 그랬는지는 모르겠지만, 항상 JPG로 저장하고 사용하였었다. 사진과 같은 다양하게 연결되는 톤을 가진 이미지에 적합하다. 사이즈를 줄이기.. 2023. 7. 17. async와 await 자바스크립트는 싱글 스레드 프로그래밍 언어이기 때문에 비동기 처리가 기본이다. 비동기 처리는 그 결과가 언제 반환될 지 명확하게 알 수 없기 때문에 동기식으로 처리하려면 동기적인 기법들을 사용하여야한다. 대표적인 동기식 처리방식 중에는 callback, promise 등이 있다. async와 await는 promise를 사용한 코드보다 훨씬 직관적이기 때문에, promise를 대신하여 사용한다. async와 await 사용법 사용법은 간단하다. function 앞에 async를 붙여주고, promise 객체 앞에 await를 붙여주면 된다. async function getApple() { await delay(); return "apple"; } async의 예외처리 방법 promise 객체를 사용하.. 2023. 7. 16. HTML/CSS 네이밍 시에 Wrapper와 Container 차이 메인프로젝트를 진행하면서 팀원들의 코드를 리뷰하다보니, 나 포함 모든 팀원들이 container와 wrapper를 사용함에 있어서 큰 규칙없이 혼용해서 사용하고 있다는걸 문득 깨닫게 되었다. 대충 맞게 쓰고는 있지만, 명확한 기준은 없이 쓰는 느낌이 강했다. 정확한 사용법을 알고 싶어서 찾아보니 스택오버플로우에 토론 게시글이 있었다. https://stackoverflow.com/questions/4059163/css-language-speak-container-vs-wrapper CSS Language Speak: Container vs Wrapper? What's the difference between container and wrapper? And what is meant by each? stac.. 2023. 7. 13. 이전 1 2 3 4 ··· 7 다음