λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ’» DEV/Javascript & NodeJS20

[NodeJS] NodeJS λŠ” Single Thread 일까? Multi Thread 일까? ✨ 고민이 μ‹œμž‘λœ 계기 JS 기초λ₯Ό ν•™μŠ΅ν•˜λ˜ λ‹Ήμ‹œμ—λŠ” μŠ€λ ˆλ“œμ™€ ν”„λ‘œμ„ΈμŠ€μ˜ κΈ°λ³Έ κ°œλ…μ„ ν•™μŠ΅ν•΄λ‘κΈ°λ§Œ ν•˜κ³ , ꡬ체적으둜 μ‚΄νŽ΄λ³΄μ§€ λͺ»ν–ˆμ—ˆλ‹€. μ›Ήκ°œλ°œ κ΅μœ‘κ³Όμ •μ΄ λλ‚˜κ°ˆ 무렡, μ‹€μ‹œκ°„ 쀌 κ°•μ˜μ—μ„œ ν¬λ£¨λΆ„κ»˜ "JS λŠ” μ‹±κΈ€ μŠ€λ ˆλ“œμΌκΉŒμš”?" λΌλŠ” μ§ˆλ¬Έμ„ λ“€μ—ˆκ³ , λ‚΄ λŒ€λ‹΅μ€ λ‹Ήμ—°νžˆ "yes" μ˜€λŠ”λ°, μ˜μ™Έλ‘œ "No" λΌλŠ” λ°˜μ‘λ„ λ§Žμ•˜λ‹€. λ‹€λ“€ μ‘°κΈˆμ”© λ‹€λ₯΄κ²Œ μ•Œκ³  μžˆλŠ” μ΄μœ κ°€ κΆκΈˆν•΄μ„œ ꡬ글링을 ν•΄ λ³΄λ‹ˆ, ν—·κ°ˆλ¦΄λ§Œν•œ μ΄μœ κ°€ μžˆλ‹€λŠ” 생각이 λ“€μ—ˆλ‹€. 이번 κΈ€μ—μ„œλŠ” JS, 그리고 NodeJS κ°€ κ³Όμ—° Single Threaded 인지 Multi Threaded 인지 훝어보도둝 ν•˜κ² λ‹€. ✨ ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œ (Process & Thread) ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œλŠ” 이전 κΈ€μ—μ„œ 이미 ν•œ 번 닀룬 적이 μžˆμœΌλ‹ˆ, κ°„λ‹¨νžˆλ§Œ 짚고 λ„˜μ–΄κ°€κ² λ‹€.. 2021. 9. 6.
[Javascript] ꡬ쑰뢄해 ν• λ‹Ή ✨ ꡬ쑰뢄해 ν• λ‹Ή(Destructuring)μ΄λž€? λ°°μ—΄μ΄λ‚˜ 객체의 속성을 ν•΄μ²΄ν•˜μ—¬ 값을 κ°œλ³„ λ³€μˆ˜μ— 담을 수 있게 ν•΄μ£ΌλŠ” ν‘œν˜„μ‹μ΄λ‹€. Python λ“±μ˜ 언어에도 λ™μΌν•œ κΈ°λŠ₯이 μ‘΄μž¬ν•œλ‹€. // ꡬ쑰뢄해 ν• λ‹Ή : λ°°μ—΄ let [a, b] = [1, 2] console.log(a) // 1 console.log(b) // 2 let x = [1, 2, 3, 4, 5]; let [y, z] = x; console.log(y); // 1 console.log(z); // 2 // ꡬ쑰뢄해 ν• λ‹Ή : 객체 let {a, b} = {a: 4, b: 10} console.log(a) // 4 console.log(b) // 10 let {x} = {x: 10} let {y} = {y: 20} let z = {x, y} .. 2021. 6. 5.
[Javascript] JSON ✨ JSON μ΄λž€? Javascript Object Notation 의 μ•½μžλ‘œ, XML (Extensible Markup Language) μ΄λ‚˜ YAML κ³Ό 같은 데이터 ν˜•μ‹ (객체) 쀑 ν•˜λ‚˜μ΄λ‹€. μš©λŸ‰μ΄ μž‘κ³  μ§κ΄€μ μœΌλ‘œ 읽고 μ“Έ 수 μžˆλ‹€λŠ” μž₯점 덕뢄에 λŒ€λΆ€λΆ„μ˜ μ›Ή API λ‚˜ Configuration νŒŒμΌμ— ν™œμš©λœλ‹€. Javascript μ™€μ˜ ν˜Έν™˜μ„±λ„ λ†’μœΌλ©°, λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž˜λ° 언어에 JSON 데이터λ₯Ό νŒŒμ‹±ν•  수 μžˆλŠ” λ‚΄μ™Έμž₯ λͺ¨λ“ˆμ΄ μ‘΄μž¬ν•œλ‹€. (ex: python 의 json λͺ¨λ“ˆ) XML vs JSON // xml Tove Jani Reminder Don't forget me this weekend! // JSON { "squadName": "Super hero squad", "homeTown": ".. 2021. 6. 5.
[Javascript] ExpressJS (Intro) ✨ Expressλž€? Nodejs λ₯Ό μœ„ν•œ μ›Ή μ„œλ²„ ν”„λ ˆμž„μ›Œν¬μ΄λ‹€. ✨ κΈ°λ³Έ μ‚¬μš© μ•ˆλ‚΄ μ„€μΉ˜: npm install express μ„œλ²„ μ—°κ²°: const express = require('express') const app = express() const port = 3000 app.get('/', (req, res) => { res.send('Hello World!') }) // '/' 둜 λΌμš°νŒ… λ˜μ§€ μ•ŠλŠ” url 에 λŒ€ν•œ get μš”μ²­μ— λŒ€ν•΄μ„œλŠ” μ „λΆ€ 404 μ—λŸ¬κ°€ λ°˜ν™˜λœλ‹€ app.listen(port, () => { console.log(Example app listening at http://localhost:${port}) }) μ›Ή μ•± λΌˆλŒ€ ꡬ성 : npx express-generator ✨ 라우.. 2021. 6. 5.
[Javascript] Fetch API ✨ Fetch API λž€? 원격 APIλ₯Ό ν˜ΈμΆœν•  수 μžˆλ„λ‘ ν•˜λŠ” ν•¨μˆ˜μ΄λ©°, μ „λ‹¬μΈμžλ‘œ url κ³Ό options λ₯Ό λ°›λŠ”λ‹€. url μ—λŠ” API μ£Όμ†Œλ₯Ό μž…λ ₯ν•˜κ³ , options μ—λŠ” request λ‚΄μš©μ„ μ„ΈλΆ€μ μœΌλ‘œ μΆ”κ°€ν•œλ‹€. let url = 'http://something.com' let options = { method: 'POST', body: JSON.stringify({ username:"μ•„μ΄μŠ€", text:"아메리카노" }), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } } fetch(url, options) .then((response) => console.log("response:", respons.. 2021. 5. 27.
[Javascript] Async ν•¨μˆ˜μ™€ Await ✨ Async ν•¨μˆ˜λž€? Promise λ₯Ό 쑰금 더 νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” ν•¨μˆ˜μ΄λ‹€. ν•¨μˆ˜ μ„ μ–Έ μ•žμ— async ν‚€μ›Œλ“œλ₯Ό λΆ™μ—¬μ„œ μ‚¬μš©ν•  수 있으며, ν•΄λ‹Ή ν•¨μˆ˜λŠ” 항상 Promise λ₯Ό λ°˜ν™˜ν•œλ‹€. λ˜ν•œ, return 값이 Promise κ°€ μ•„λ‹ˆλ”λΌλ„ Resolved Promise 둜 ν•΄λ‹Ή 값을 κ°μ‹Έμ„œ λ°˜ν™˜ν•œλ‹€. async function Callback(){ // some code here } ✨ Await μ΄λž€? Async ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œλ§Œ 호좜 κ°€λŠ₯ν•œ ν‚€μ›Œλ“œμ΄λ‹€. Promise κ°€ 처리될 λ•ŒκΉŒμ§€ ν•¨μˆ˜ 싀행을 κΈ°λ‹€λ¦° 후에 κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜λ„λ‘ ν•œλ‹€. ν”„λΌλ―ΈμŠ€κ°€ 처리되길 κΈ°λ‹€λ¦¬λŠ” λ™μ•ˆμ— 엔진이 λ‹€λ₯Έ 일을 ν•  수 μžˆλ„λ‘ ν•œλ‹€. async function f() { let promise = new Promise((.. 2021. 5. 27.
[Javascript] Promise (ν”„λ‘œλ―ΈμŠ€) ✨ Promise λž€? ν–₯ν›„ μ‚¬μš©ν•˜κ²Œ 될 비동기 μ—°μ‚°μ˜ 결과값을 μ²˜λ¦¬ν•˜λ„λ‘ λ„μ™€μ£ΌλŠ” JS 객체이닀. 비동기 λ©”μ„œλ“œμ—μ„œ 동기 λ©”μ„œλ“œμ²˜λŸΌ 값을 λ°˜ν™˜ν•  수 μžˆλ‹€. 예제) const testing = new Promise((resolve, reject) => { if (something) resolve(something) else reject(error message) }) testing .then(() => return something2) .catch(() => return error) .finally(() => return final) ✨ Promise 의 3가지 μƒνƒœ: Fulfilled: 연산이 μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλœ μƒνƒœμ΄λ‹€. Rejected: 연산이 μ‹€νŒ¨ν•œ μƒνƒœμ΄λ‹€. Pending: Resolve λ‚˜ Re.. 2021. 5. 27.
[Javascript] 비동기, 동기 ν•¨μˆ˜ (Asynchronous, Synchronous) λž€? ✨ Synchronous vs Asynchronous 동기식: μ½”λ“œμ˜ execution 이 μš”μ²­κ³Ό λ™μ‹œμ— μΌμ–΄λ‚˜λ©°, 순차적으둜 μ‹€ν–‰λœλ‹€. 비동기식: μ½”λ“œμ˜ execution 이 μš”μ²­κ³Ό λ™μ‹œμ— μΌμ–΄λ‚˜μ§€ μ•ŠμœΌλ©°, λ³‘λ ¬μ μœΌλ‘œ μ‹€ν–‰λœλ‹€. μ˜ˆμ‹œ) μž‘μ—… λͺ©λ‘: 1. 화면에 μ˜μƒ λͺ©λ‘μ„ λ„μ›ŒλΌ 2. 첫 번째 μ˜μƒμ„ 틀어라 3. ν•˜λ‹¨μ— μΆ”μ²œ μ˜μƒ λͺ©λ‘μ„ λ„μ›ŒλΌ 동기식: 1 μ‹€ν–‰ -> 2 μ‹€ν–‰ -> μ˜μƒ 정보 μš”μ²­ -> μ˜μƒ 정보 μˆ˜μ‹  -> μ˜μƒ 좜λ ₯ -> 3 μ‹€ν–‰ 비동기식: 1 μ‹€ν–‰ -> 2 μ‹€ν–‰ -> 3 μ‹€ν–‰ |_ μ˜μƒ 정보 μš”μ²­ -> μ˜μƒ 정보 μˆ˜μ‹  -> μ˜μƒ 좜λ ₯ 동기식 방법을 λ”°λ₯΄λ©΄ 첫 번째 μ˜μƒμ˜ 데이터가 λͺ¨λ‘ λ“€μ–΄μ˜€κ³ , λκΉŒμ§€ μž¬μƒλ˜κΈ° μ „κΉŒμ§€λŠ” 3을 μ‹€ν–‰ν•  수 μ—†λ‹€. 비동기식 방법을 λ”°λ₯Ό 경우, 2κ°€ μ‹€ν–‰λ˜.. 2021. 5. 27.
[Javascript] Class ✨ Class λž€? 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ ν…œν”Œλ¦Ώμ΄λ‹€. ES6λΆ€ν„°λŠ” class ν‚€μ›Œλ“œλ‘œ 생성할 수 μžˆλ‹€. class Student{ constructor(name, age, major){ // constructor(μƒμ„±μž) ν•¨μˆ˜, 그리고 instance 의 properties(attributes) //instance 속성 μ •μ˜ this.name = name; this.age = age; this.major = major; // this = μƒμ„±λ˜λŠ” μΈμŠ€ν„΄μŠ€ } } Class 의 νŠΉμ§•: - ν•¨μˆ˜ν˜• Class λŠ” ν˜Έμ΄μŠ€νŒ…μ΄ μΌμ–΄λ‚˜μ§€λ§Œ, μ„ μ–Έν˜• Class λŠ” ν˜Έμ΄μŠ€νŒ…μ΄ μΌμ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€. - 클래슀 μ•ˆμ—λŠ” ν•˜λ‚˜μ˜ constructor λ©”μ„œλ“œλ§Œ μ‘΄μž¬ν•  수 있으며, μ—¬λŸ¬ 개의 constructor λ©”μ„œλ“œκ°€ μžˆμ„ 경우.. 2021. 5. 13.