node

    tRPC란? tRPC 간단 소개

    타입스크립트로 FE 개발을 해봤다면, 모두 한 번쯤은 경험해본 일이 있을 것이다. 바로 서버와 API 통신을 하면서, Response로 받아온 데이터의 타입 처리를 위해 type을 일일히 작성하는 일이다. 당연하다면 당연한 일이지만, API에 변경점이 있을 때 마다 매번 타입을 다시 작성해야 하고 API 호출에 대한 코드 역시 개발자가 직접 관리해야하는 부분이었다. tRPC는 이를 좀 더 효율적으로 개선하여 개발자에게 도움을 주는 라이브러리이다. 👍 tRPC는 Typed Remote Procedure Call의 줄임말이다. 공식 문서에서 소개하는 API 호출 코드를 확인하면 다음과 같다. 다음은 우리가 기존에 사용하던 코드 // 기존 코드 const res = await fetch('/api/users/..

    Node Static Server 띄우는 방법들

    정직인 서버를 띄우는 방법들에 대해서 알아보았다. SPA를 빌드 후 배포한다거나, 단순히 이미지나 html로 이루어진 웹페이지를 배포한다거나 할 때 복잡한 서버의 필요 없이 정적 서버를 띄워 웹 사이트에 접근하게 만들 수 있다. 이에 대한 여러가지 방법들에 대해서 알아보고, 기록하였다. serve, http-server와 같은 라이브러리 사용하기 CRA로 생성한 리액트 웹 어플리케이션의 빌드 명령어를 사용하면, 터미널에 친절하게 serve를 사용하여 정적 서버를 띄우는 방법을 알려준다. npm install -g serve serve -s build 위의 명령어로 serve를 설치하고, build 폴더 내부의 빌드된 리액트 어플리케이션을 정적 서버에 띄워준다. 이와 유사하게 http-server 라이브러..

    import와 require의 차이

    ⚽️ import (정적 로딩) import 구문은 ES6(ECMAScript 2015)부터 도입된 정적인 모듈 로딩 구문이다. import 구문은 모듈을 정적으로 로딩하며, 코드가 실행되기 전에 모듈 로딩이 이루어진다. 따라서 import 구문은 항상 모듈 로딩을 가장 위로 올려서 먼저 실행되고, 모듈 로딩은 브라우저 환경에서는 비동기적으로 이루어진다. import는 필요한 부분만 가져올 수 있기 때문에 성능 최적화에 있어서 require보다 뛰어나다. (트리 쉐이킹) // 정적 로딩 (ES6) import { add } from './math'; 🏐 require (동적 로딩) require 구문은 Node.js에서 사용되는 CommonJS 모듈 시스템의 모듈 로딩 구문이다. require 구문은 동..

    nvm 대신 asdf 사용하기

    nvm은 역시나 가장 많이 사용되는 node version manager이다. 다만, 각 프로젝트마다 다른 node version을 사용하고 있을 때, 프로젝트 디렉토리에서 일일히 매번 nvm use 사용버전을 입력해주어야 한다. 물론, cmd 설정을 건드려 .nvmrc의 버전을 자동으로 읽어오게 하는 방법도 있지만, 공식적으로 nvm에서 지원하는 기능은 아니기에 설정이 번거롭다. https://stackoverflow.com/questions/23556330/run-nvm-use-automatically-every-time-theres-a-nvmrc-file-on-the-directory run `nvm use` automatically every time there's a .nvmrc file on ..

    SemVer에 대해서 알아보기

    버전을 표기하는 방법으로 npm에서 사용되는 것이 SamVer이다. SemVer(Semantic Versioning)는 소프트웨어 버전을 의미적으로 명확하게 표현하기 위한 버전 관리 체계이다. SemVer는 주 버전(Major), 부 버전(Minor), 패치 버전(Patch)으로 구성되며, 이러한 버전 구성 요소들을 조합하여 소프트웨어의 변경 사항과 호환성을 나타낸다. 1.2.3 (major: 1 minor: 2 patch: 3) ❄️ 주 버전(Major)은 대규모 변화나 호환되지 않는 변경 사항이 있을 때 증가한다. 이는 기존 버전과의 하위 호환성을 깨뜨릴 수 있는 주요한 업데이트를 의미한다. ☁️ 부 버전(Minor)은 기능적인 추가 또는 변경이 있을 때 증가한다. 이러한 변경 사항은 하위 호환성..

    express의 template engine 사용하기 (ejs)

    스프링에서 많이 사용되는 JSP, Mustache, Thymeleaf와 같은 템플릿 엔진이 express에도 있을 것이라 생각하였다. 그러던 중 강의에서 pug(구 jade)라는 템플릿 엔진을 알게 되었다. 그런데, pug는 마지막 커밋이 꽤나 오래전(약 2년전)이었고 좀 더 많이 사용되는 템플릿 엔진을 찾아보았다. handlebars나 nunjucks과 같은 템플릿 엔진도 찾을 수 있었지만, 가장 많이 사용되는 ejs를 간단하게 사용해보고 설정과 사용법을 남기도록 하였다. // ./index.js const express = require("express"); const app = express(); // ejs 설정 app.set("view engine", "ejs"); // ejs를 사용한다. ap..

    typeORM 사용하기

    typeORM을 사용하면, node.js 환경에서 복잡한 쿼리문을 SQL이 아니라 타입스크립트 문법으로 작성할 수 있다. 사실, Sequelize를 사용해본 경험이 있는데 다소 구성이 복잡하였고, 무엇보다도 타입스크립트로의 전환이 쉽지 않았다. 때문에 좀 더 타입스크립트에서 사용하기에 좋고 더 간단한 ORM이 무엇일까 고민하였고 typeORM을 사용하게 되었다. 필요한 라이브러리 설치 & 설정 npm i typeorm reflect-metadata @types/node 타입스크립트 설치하기 npm i -D typescript ts-node 그리고 사용할 데이터베이스에 맞게 db 드라이버를 설치한다. (여기서는 mysql) npm i mysql or npm i mysql2 설치한 reflect-metada..

    Node.js에서 ORM 사용하기 (sequelize 기본 설정 하기)

    ORM, Object-Relational Mapping 은 model을 기술하는 도구이다. ORM을 통하여 SQL query문을 직접 작성하지 않고, 프로그래밍 언어를 통해서 Model에 접근할 수 있다. 이렇게, 프로그래밍 언어의 관점에서 Model에 접근할 수 있는 까닭은, ORM이 대신 프로그래밍 언어를 SQL query문으로 변환해주기 때문이다. 🏁 데이터베이스와 프로그래밍 언어 사이의 개념의 간극을 좁힌다. ORM은 entity나 record를 객체나 클래스를 다루듯이 접근할 수 있게 한다. 🍙 ORM을 통해서 객체에서의 각 속성은 데이터베이스에서 필드를 의미하게 된다. 각 언어마다 사용할 수 있는 ORM API가 있다. 자바에서는 JDBC(Java Database Connectivity) 자바..