전체 글 149

Node.js - commonJS vs ES Modules

Node.js에서 사용할 수 있는 자바스크립트 모듈 시스템 방식으로는 commonJS와 ES Modules가 있다. commonJS란? // import const 모듈명 = require('모듈 경로'); // export module.exports = 모듈명; // 기본적으로 내보낼 하나의 모듈 지정 module.exports = { 모듈1, 모듈2, ... }; // 여러 모듈 한 번에 export module.exports.모듈명 = 모듈; // 특정 모듈 export commonJS는 EMCAScript에 자바스크립트 내장 모듈 표준이 존재하지 않았을 때부터 사용되던, Node.js에서 기본적으로 제공하는 모듈 시스템 방식이다. *.cjs 확장자를 사용하여 명시적으로 commonJS 모듈임을 나..

Backend/Node.js 2023.02.20

웹 접근성 - 모바일 링크(a) 요소 내 초점 분리 이슈 해결법

증상 Android/iOS 모바일 기기에서 TalkBack, VoiceOver 등의 스크린 리더를 사용하여 화면을 읽는 경우, 링크(a 태그) 요소 내에 위치한 모든 텍스트 요소에 초점이 잡히는 문제가 발생한다. G마켓의 스마일프레시 모바일 화면을 예시로 가져왔다. 스마일프레시의 아이템 카드는 a 태그로 감싸져 있으며, a 태그 내에 위치한 span, p 태그 내 텍스트 요소에도 초점이 옮겨가는 문제가 발생하고 있다. 1 45,820원 할인율 14% 할인 전 금액 53,900 원 22년산 이맛쌀 20kg 평점 4.8 후기 (5,306) 건 15% 쿠폰 카드 10% 실제로 초점이 잡혀야 할 링크 요소 외에도 불필요한 초점이 늘어나기 때문에 탐색에 대한 depth도 늘어나게 되므로 스크린 리더 사용자는 웹 ..

Svelte란? + 프로젝트 생성 및 코드 맛보기

이번에 토이 프로젝트를 시작하면서 예전부터 유튜브에서 관심있게 본 svelte를 공부하면서 사용해 보려고 한다. Svelte란? Svelte는 2016년도에 등장한 프론트엔드 기술 중 하나로, 프레임워크가 없는 프레임워크 혹은 컴파일러라고도 한다. 따로 프레임워크를 로딩하지 않고 빌드시 자바스크립트 코드로 컴파일링하므로 React와 Vue, Angular 등의 기존 프론트엔드 기술보다 빠른 웹 어플리케이션을 만들 수 있다. 이제 Svelte의 특징에 대해 알아보고, 기존 프레임워크들과 비교해서 어떤 점들이 좋은지에 대해 알아보자. Svelte의 특징 적은 코드로도 기능 작성 가능 Svelte는 동일한 코드를 작성하더라도 React, Vue에 비해 적은 양의 코드로도 작성이 가능하다. 간단하게 두 숫자를 ..

Frontend/Svelte 2022.11.21

Git - 커밋 메시지에 #이슈번호 추가

Github Repository에서 제공하는 기능 Github에 저장소(Repository)를 생성하면 다음과 같이 코드 형상관리 뿐만 아니라 이슈, PR(풀 리퀘스트), 프로젝트, 마일스톤, 위키 등의 관리가 가능하다. 각 메뉴는 다음과 같은 특징을 갖는다. Issues - 프로젝트 작업의 모든 활동을 아우르는 단위(기능 추가, 환경 설정, 리팩토링, 버그 수정 등) - 모든 작업을 이슈로 만들고, 등록한 이슈를 기반으로 프로젝트 관리 - 마일스톤 생성 및 관리 가능 PR(Pull Requests) - 작업 브랜치의 내용을 메인 브랜치에 병합하기 전에 다른 참여자들과 공유하고 리뷰를 요청할 수 있는 메뉴 - 코드 리뷰를 통한 수정 코드 추천, 강제 어프루브 제약 사항 추가 등 다양한 기능 제공 Proj..

기타/Git 2022.10.31

npm이란? & package.json의 dependencies vs devDependencies vs peerDependencies vs ...

npm(= Node Package Manager)은 Node.js의 기본 패키지 관리자로, 패키지를 설치하고 관리할 수 있는 여러 기능을 제공한다. npm은 package.json을 통해 프로젝트의 정보를 저장하고, 의존하는 패키지 버전 정보를 관리한다. package.json 파일을 열어 보면, 다음과 같이 라이브러리의 의존성 관리와 관련된 부분을 발견할 수 있다. { "dependencies": { "@charlietango/use-native-lazy-loading": "^1.9.0", "@repacks/next-pack": "^10.0.1", "@vercel/fetch": "^6.1.1", "abort-controller": "^3.0.0", "classnames": "^2.3.1", "clean..

기타/npm 2022.09.26

Typescript - 유틸리티 타입(Utility Type)

본격적인 업무에 들어가기 앞서, 타입스크립트에서 유용하게 사용할 수 있는 유틸리티 타입 종류에 대해 정리했다. 유틸리티 타입 종류는 아래 타입스크립트 공식 문서를 참고했다. Documentation - Utility Types Types which are globally included in TypeScript www.typescriptlang.org 일반 유틸리티 타입 Awaited Promise 형태의 T 타입을 전달받아, 해당 Promise가 반환하는 리턴값의 타입을 반환한다. async ~ await의 await 키워드와 유사한 기능을 담당한다. type A = Awaited; // type A = string type B = Awaited; // type B = number type C = Aw..

Language/Javascript 2022.09.25

[티스토리 블로그 테마] - 2. 티스토리 본문에 목차 추가

오늘은 티스토리 블로그 글 상세 페이지에 목차를 추가해보자. 기본 제공 티스토리 테마는 보다시피 본문 목차가 없다. 구글링을 해보니 jQuery의 toc 라이브러리로 간단하게 목차를 생성하는 방법도 있었지만, 직접 자바스크립트로 페이지를 파싱해서 만들어 보기로 했다. 목차 레이아웃 구성 코드를 작성하기에 앞서, 목차 컨텐츠 및 레이아웃을 구성해 보자. 목차는 본문시작 지점 가운데에 위치하며, 사용자가 스크롤을 내려서 목차가 보이지 않는 경우에는 사용자 화면의 오른쪽 영역에 미니 목차가 표출되도록 구현할 것이다. 모바일 기기로 접속한 사용자의 경우에는 목차를 표출할 충분한 공간이 없으므로, 목차 열고 닫기 버튼을 우측에 대신 표출하기로 했다. 또한 티스토리 에디터에서는 제목 1, 2, 3과 본문 1, 2,..

WSL - WSL 1에서 WSL 2로 변경(업그레이드)

이미 설치되어 있는 WSL 1 이미지의 버전을 WSL 2로 변경해 보자. WSL 버전 1과 2의 차이점은 이전에 작성한 글에 정리해 두었으니 참고하자! WSL - 1. Windows에서 Ubuntu 개발 환경 설정을 위한 WSL2 설치 및 VSCode 연동 Mac OS 사용자와 함께 개발 협업을 하다 보면 종종 아래에 보이는 것처럼 이상한 에러와 마주할 수 있다. 이런 에러가 발생하는 이유는 무엇일까? 정답은 Mac OS와 Windows의 개행 문자 방식이 다르기 guiyomi.tistory.com 필자는 새로운 노트북에 WSL을 설치하려다 설치 기본 버전을 2로 변경하는 것을 까먹고 우분투를 설치했더니 다음과 같이 WSL 1을 설치해 버렸다. 이미 개발 환경 설정을 다 해놓은 터라 재설치가 어려운 상황..

VSCode - Delete `CR` eslint(prettier/prettier) 에러 해결법

VSCode 내에서 eslint, prettier 설정을 하다 보면 다음과 같은 오류가 발생하곤 한다. 위 오류는 windows에서 발생하는 오류로, prettier의 기본 라인 개행 방식(lf)이 windows의 개행 방식(crlf)과 다르기 때문에 발생한다. 해결 방법은 eslint 설정에서 prettier의 개행 방식을 auto로 변경하면 된다. package.json에 eslintConfig가 위치한 경우 "eslintConfig": { ... "rules": { // eslintConfig - rules에 다음과 같이 추가 "prettier/prettier": [ "error", { "endOfLine": "auto" } ] } }, 별도의 .eslintrc 파일이 있는 경우 { ... "rul..

기타/VSCode 2022.08.23

SASS/SCSS - sass에서 제공하는 디렉티브(mixin, include, ...)

@mixin & @include 디렉티브를 사용한 스타일 재사용 mixin은 CSS 내에서 공통으로 사용되는 스타일을 재사용할 수 있는 기능이다. 함수처럼 중복되는 스타일을 분리하여 별도의 이름을 붙여 사용할 수 있고, 파라미터를 정의하여 값을 전달할 수도 있다. mixin은 SCSS 문법 기준으로 아래와 같이 정의한다. scss 문법 기준으로 작성했으나, 중괄호({})와 세미콜론(;)을 제외하면 sass 문법도 동일하게 사용이 가능하다. 파라미터 이름 앞에는 $ 기호를 붙여주고, 기본값을 지정하고자 하는 경우에는 $파라미터명: 값 형태로 작성하면 된다. @mixin 디렉티브를 이용하여 mixin을 정의하고, 정의한 mixin은 @include 디렉티브로 사용할 수 있다. // 기본 mixin 정의 @m..

Frontend/CSS 2022.08.23