Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| public:computer:node.js [2022/09/16 16:03] – alex | public:computer:node.js [2023/01/03 09:54] (current) – alex | ||
|---|---|---|---|
| Line 4: | Line 4: | ||
| ==== 특징 ==== | ==== 특징 ==== | ||
| - | * 비동기 입출력 방식 | + | * 비동기 입출력 방식 |
| - | * 이벤트 기반 입출력 방식 | + | * 이벤트 기반 입출력 방식 |
| + | * Single Thread | ||
| * 모듈 | * 모듈 | ||
| ==== 개발도구 ==== | ==== 개발도구 ==== | ||
| * 편집기 VSCode | * 편집기 VSCode | ||
| + | * Extentions | ||
| + | * ES6 Code Snippets | ||
| + | * ESLint | ||
| + | * Prettier - Code formatter | ||
| + | * Live Server | ||
| * 크롬 브라우저 | * 크롬 브라우저 | ||
| * 노드 | * 노드 | ||
| ==== Install ==== | ==== Install ==== | ||
| + | |||
| + | === Install Node.js on MacOS === | ||
| brew 설치 <cli> | brew 설치 <cli> | ||
| $ / | $ / | ||
| Line 23: | Line 31: | ||
| - | Vue CLI 설치 <cli prompt="$ " comment=" | + | === Install Node.js on Ubuntu === |
| - | $ npm install | + | * Install Node.js on Ubuntu <sxh bash> |
| - | or | + | # to install |
| - | $ yarn global add @vue/cli | + | $ sudo apt install -y curl |
| - | $ vue --version | + | # install node.js using apt package manager |
| - | $ npm list -g --depth=0 | + | $ sudo apt update & sudo apt upgrade |
| - | </ | + | $ sudo apt install nodejs |
| + | $ nodejs | ||
| + | $ sudo apt install | ||
| + | $ npm -v | ||
| - | Vue CLI 삭제 <cli prompt=" | + | # using PPA |
| - | $ npm uninstall | + | $ curl -sL https:// |
| - | </cli> | + | $ sudo bash nodesource_setup.sh |
| + | $ sudo apt-get install nodejs | ||
| + | $ sudo apt-get install build-essential | ||
| + | </sxh> | ||
| - | vue 프로젝트 생성 | + | * nvm <sxh bash> |
| - | $ vue create | + | $ curl -o- https:// |
| + | $ source ~/.bashrc | ||
| + | $ nvm list-remote | ||
| + | $ nvm install < | ||
| + | $ nvm list | ||
| + | $ nvm use < | ||
| + | </ | ||
| + | * npm update <sxh bash> | ||
| + | $ npm install -g npm@latest | ||
| + | $ npm -v | ||
| + | </sxh> | ||
| - | $ cd < | + | === Install Vue.js === |
| - | $ npm run serve | + | {{page>public: |
| - | </cli> | + | |
| - | vuetify 패키지 추가 <cli> | ||
| - | $ vue add vuetify | ||
| - | </ | ||
| - | vue-router 설치 <cli> | ||
| - | $ vue add router | ||
| - | </ | ||
| - | |||
| - | vuex 설치 <cli> | ||
| - | $ vue add vuex | ||
| - | </ | ||
| - | |||
| - | axios 설치 <cli> | ||
| - | $ vue add axios | ||
| - | </ | ||
| + | ==== Modules ==== | ||
| * https/http2 모듈 | * https/http2 모듈 | ||
| Line 88: | Line 98: | ||
| - 타입스크립트 모듈 설치 | - 타입스크립트 모듈 설치 | ||
| - tsconfig.json 생성 | - tsconfig.json 생성 | ||
| - | - | + | - 타입 추가 (npm i @types/ |
| + | - ts-node 설치 (npm i -g ts-node) | ||
| + | |||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | |||
| Line 108: | Line 125: | ||
| + | ==== JavaScript Basics ==== | ||
| + | * 변수 선언 | ||
| + | * var | ||
| + | * let | ||
| + | * const | ||
| + | * Arrow Function | ||
| + | * Array | ||
| + | * sort() | ||
| + | * filter() | ||
| + | * map() | ||
| + | * reduce() | ||
| + | * Template Literals; back tick '' | ||
| + | * Spread Operator; 배열에서 iteration 형태의 데이터 요소를 하나하나로 모두 분해해서 사용 | ||
| + | * Object Destructuring; | ||
| + | * Array Destructuring; | ||
| + | * Default Function Parameter; same as c++, define default value in argument | ||
| + | * Rest Parameter; ...args | ||
| + | * Promise; 비동기 처리에 사용 new Promise((resolve, | ||
| + | * Async/ | ||
| + | * Regular Expression | ||
| + | * exec() | ||
| + | * test() | ||
| + | * match() | ||
| + | * search() | ||
| + | * replace() | ||
| + | * split() | ||
| + | |||
| + | |||
| + | ==== Start ==== | ||
| + | <cli> | ||
| + | $ node < | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Node.js 내장 모듈과 객체 ==== | ||
| + | * Console | ||
| + | * console.log(내용, | ||
| + | * console.error(...) | ||
| + | * console.table(테이블형 데이터) | ||
| + | * console.time(레이블) / console.timeEnd(레이블) | ||
| + | * console.dir(오브젝트, | ||
| + | * Timers | ||
| + | * setTimeout(콜백함수, | ||
| + | * setInterval(콜백함수, | ||
| + | * setImmediate(콜백함수) | ||
| + | * Process | ||
| + | * listeners | ||
| + | * beforeExit | ||
| + | * exit | ||
| + | * disconnect | ||
| + | * message | ||
| + | * process.env | ||
| + | * process.nextTick | ||
| + | * process.exit() | ||
| + | * OS | ||
| + | * Path | ||
| + | * path.basename(path[, | ||
| + | * path.delimiter | ||
| + | * path.dirname(path) | ||
| + | * path.extname(path) | ||
| + | * path.format(pathOjbject) | ||
| + | * path.isAbsolute(path) | ||
| + | * path.join([...paths]) | ||
| + | * path.parse(path) | ||
| + | * path.sep | ||
| + | * URL; | ||
| + | * WHATWG API | ||
| + | * url.parse() | ||
| + | * Crypto | ||
| + | * File system | ||
| + | * fs.readFile(path, | ||
| + | * fs.readFileSync(path, | ||
| + | * fs.writeFile(path, | ||
| + | * writeFileSync(path, | ||
| + | * fs.watchFile(filename[, | ||
| + | |||
| + | |||
| + | ==== json-server ==== | ||
| + | <cli> | ||
| + | $ npm install -g json-server | ||
| + | </ | ||
| + | |||
| + | <cli> | ||
| + | $ json-server --watch < | ||
| + | </ | ||
| + | |||
| + | ==== express ==== | ||
| + | <cli> | ||
| + | $ npm install express | ||
| + | </ | ||
| + | |||
| + | * middlewares | ||
| + | * body-parser | ||
| + | * compression | ||
| + | * connect-rid | ||
| + | * cookie-parser | ||
| + | * cors | ||
| + | * csurf | ||
| + | * errorhandler | ||
| + | * method-override | ||
| + | * morgan | ||
| + | * multer | ||
| + | * response-time | ||
| + | * serve-favicon | ||
| + | * serve-index | ||
| + | * serve-static | ||
| + | * express-session | ||
| + | * connect-timeout | ||
| + | * vhost | ||
| + | |||
| + | |||
| + | ==== Useful ==== | ||
| + | * winston | ||
| + | * nodemailer | ||
| + | * node-cron | ||
| + | * xlsx | ||
| + | * xlsx-js-style | ||
| + | * ics | ||
| + | * socket.io | ||
| + | * axios | ||
| + | * cheerio | ||
| + | * forever | ||
| + | * pm2 | ||
| + | |||
| + | ===== References ===== | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | <button type=" | ||
| + | < | ||
| ==== 01 | 노드에 대해 알아보고 개발 도구 설치하기 ==== | ==== 01 | 노드에 대해 알아보고 개발 도구 설치하기 ==== | ||
| 노드란 무엇일까? | 노드란 무엇일까? | ||
| Line 414: | Line 561: | ||
| 레디스로 subscribe, publish 하기 | 레디스로 subscribe, publish 하기 | ||
| 채팅 서버에서 레디스를 사용하는 샘플 | 채팅 서버에서 레디스를 사용하는 샘플 | ||
| + | </ | ||