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 하기 | ||
채팅 서버에서 레디스를 사용하는 샘플 | 채팅 서버에서 레디스를 사용하는 샘플 | ||
+ | </ |