Node

· NODE.JS
프로젝트 진행 중에 String does not match the pattern of "^(?:@[a-z0-9-*~][a-z0-9-*._~]*/)?[a-z0-9-~][a-z0-9-._~]*$". 오류를 마주했다. 프로젝트 이름에 대문자가 포함되어 생긴 오류였다. name을 작성할 때 대문자 그리고 띄어쓰기는 허용되지 않는다고 한다. 소문자로 작성하고 하이픈(-) 또는 언더바(_)는 포함될 수 있다고 한다. (맨 앞 제외) package.json이란? 프로젝트가 의존하는 패키지 리스트 프로젝트의 버전을 명시 다른 환경에서도 빌드를 가능하게 해 다른 개발자들이 쉽게 사용할 수 있게 한다. 프로젝트의 의존성 관리를 위한 명세표 정도로 생각하면 될 것 같다. package.json name 규칙 점이나 밑줄로 ..
· NODE.JS
blocking, non-blocking in node.js blocking은 Node.js 프로세서에서 추가 Javascript 실행이 Javascript가 아닌 작업(파일 불러오기 등)이 완료될 때까지 기다려야하는 경우이다. 이는 Blocking 작업이 발생하는 동안 이벤트 루프가 JavaScript를 계속 실행할 수 없기 때문에 발생한다. Blocking Function JSON.stringfy 함수와 window.alert는 Blocking함수이다. 해당 작업을 마쳐야 다음 작업을 수행할 수 있다. Node.js에 있는 Blocking 메서드 const fs = require('fs'); const data = fs.readFileSync('file.md'); // blocks here until..
· NODE.JS
Node.js가 작업을 처리하는 방법 런타임 환경에서 1+1 같은 자바스크립트로 처리할 수 있는 작업은 V8 엔진을 통해서 하게 된다. 하지만 파일을 읽거나 데이터베이스 접근 등과 같은 작업은 V8으로 할 수 없다. 이런 부분은 비동기 이벤트 처리 라이브러리인 libuv를 통해 작업한다. 즉, V8이 코드를 해석하고 Node.js APIs들 중 하나의 함수를 호출하고 Node.js 바인딩을 통해서 libuv에 의해서 원하는 작업을 처리한다. node.js 오픈소스를 보면 lib은 node api의 javascript 부분(console, http, os, path, process) src는 node binding의 c++부분 이렇게 자바스크립트 코드로부터 c++ 그리고 libuv까지 연결이 된다. lib..
· NODE.JS
Node.js 크롬 v8 자바스크립트 엔진에 비동기 이벤트 처리 라이브러리인 libuv를 결합한 자바스크립트 런타임이다. 이 런타임 환경을 통해 javascript를 브라우저 밖에서 실행할 수 있다. Node.js는 프로그래밍 언어도 프레임워크도 아닌 자바스크립트 런타임이다. javascript를 실행하려면 브라우저에서 실행할 수있다. 브라우저가 없다면 javascript를 실행할 수 없다. runtime이란 런타임이란 프로그래밍 언어가 구동되는 환경을 말한다. Node.js나 크롬등의 여러 브라우저들에서 자바스크립트가 구동되기에 Node.js나 브라우저들도 자바스크립트 런타임이다. javascript 엔진 javascript를 실행하는 소프트웨어 구성요소이다. 최초의 javascript 엔진은 단순한 ..
· NODE.JS
리액트 프로젝트를 만들 때 npx create-react-app [프로젝트이름] 을 한 번쯤은 써봤을 것이다. 이때 npx가 정확히 무엇인지 모르고 사용했는데, 이번 기회에 자세히 알아보고자 한다. npm이란? npm은 node package manager의 줄임말으로 알려져 있으며, node.js의 패키지를 관리할 수 있는 도구이다. 보통 node.js를 설치할 때 함께 설치되며 npm install ~~을 통해 패키지를 다운로드할 수 있다. 다운로드 된 파일들은 package.json 파일에 종속성이 기록되며, package-lock.json 파일에는 package.json 파일이 수정되거나 업데이트 될 때의 의존성 정보를 모두 가지고 있다. npx는? npx는 npm과 다른 관리 모듈이 아니다. n..