3 λΆ„ μ†Œμš”

πŸ“š Node.js


Node.js λž€

  • Node.jsλŠ” Chrome V8 JavaScript μ—”μ§„μœΌλ‘œ λΉŒλ“œ 된 JavaScript λŸ°νƒ€μž„μ΄λ‹€.
  • 즉, Nodeλ₯Ό 톡해 λ‹€μ–‘ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•  수 있으며, μ„œλ²„λ₯Ό μ‹€ν–‰ν•˜λŠ”λ° κ°€μž₯ 많이 μ‚¬μš©λœλ‹€.
    • Node.jsλŠ” JavaScriptλ₯Ό μ„œλ²„μ—μ„œλ„ μ‚¬μš©ν•  수 μžˆλ„λ‘ λ§Œλ“  ν”„λ‘œκ·Έλž¨μ΄λ‹€.
    • Node.jsλŠ” V8μ΄λΌλŠ” JavaScript 엔진 μœ„μ—μ„œ λ™μž‘ν•˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ λŸ°νƒ€μž„ ( ν™˜κ²½ ) 이닀.
    • Node.jsλŠ” μ„œλ²„μ‚¬μ΄νŠΈ 슀크립트 μ–Έμ–΄κ°€ μ•„λ‹ˆλ‹€. ν”„λ‘œκ·Έλž¨ ( ν™˜κ²½ ) 이닀.
    • Node.jsλŠ” μ›Ήμ„œλ²„μ™€ 같이 ν™•μž₯μ„± μžˆλŠ” λ„€νŠΈμ›Œν¬ ν”„λ‘œκ·Έλž¨μ„ μ œμž‘ν•˜κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ‘Œλ‹€.
  • Node.jsλŠ” ν™•μž₯성이 μžˆλŠ” λ„€νŠΈμ›Œν¬ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ— μ‚¬μš©λ˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ ν”Œλž«νΌμ΄λ‹€. 특히 μ„œλ²„μ‚¬μ΄νŠΈμ—μ„œ 많이 μ‚¬μš©λœλ‹€.
  • λ‚΄μž₯ HTTP μ„œλ²„ 라이브러리λ₯Ό ν¬ν•¨ν•˜κ³  μžˆμ–΄ μ›Ή μ„œλ²„μ—μ„œ μ•„νŒŒμΉ˜ λ“±μ˜ 별도 μ†Œν”„νŠΈμ›¨μ–΄ 없이 λ™μž‘ν•˜λŠ” 것이 κ°€λŠ₯ ν•˜λ‹€.
  • Node.jsλ₯Ό μ΄μš©ν•˜μ—¬ μ›Ή λΈŒλΌμš°μ €μ™€ λ¬΄κ΄€ν•œ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€ 수 μžˆλ‹€.
  • μ€‘μš”ν•œ 것은 Node.jsλ₯Ό μ΄μš©ν•΄μ„œ μ„œλ²„ λ₯Ό λ§Œλ“€ 수 μžˆλ‹€λŠ” 것이닀.
  • ν•œ 가지 μ–Έμ–΄λ‘œ 전체 μ›Ή νŽ˜μ΄μ§€λ₯Ό λ§Œλ“€ 수 있게 된 것이닀.

Node.js μž₯점

  • λ©€ν‹° μŠ€λ ˆλ“œ 방식에 λΉ„ν•΄ 적은 컴퓨터 μžμ›μ„ μ‚¬μš©
  • I/O μž‘μ—…μ΄ λ§Žμ€ μ„œλ²„λ‘œ 적합
  • μ›Ή μ„œλ²„κ°€ λ‚΄μž₯λ˜μ–΄ μžˆμ–΄ λ³„λ„μ˜ μ›Ή μ„œλ²„λ₯Ό μ„€μΉ˜ν•  ν•„μš”κ°€ μ—†λ‹€.
  • JavaScriptλ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— JSON ν˜•μ‹κ³Ό μ‰½κ²Œ ν˜Έν™˜λœλ‹€.

JavaScript λŸ°νƒ€μž„ μ΄λž€

Node.js μ„€μΉ˜ κ³Όμ •

  • Node.js μ„€μΉ˜ν•˜κΈ°
    • node.js μ—μ„œ LTS 버젼 λ‹€μš΄λ‘œλ“œ
    • cmd μ—μ„œ β€˜node -v’ λ₯Ό 톡해 버젼 확인
  • npm package ( Node.js κΈ°λ³Έ νŒ¨ν‚€μ§€ κ΄€λ¦¬μž ) 생성
    • npm은 μŠ€ν”„λ§μ˜ maven 같은 것과 λΉ„μŠ·ν•˜λ‹€.
    • μ €μž₯ν•  폴더 cmd μ°½μ—μ„œ npm init 을 톡해 νŒ¨ν‚€μ§€ 생성 ( package.json 이 생성됨 )
    • npm 곡식 ν™ˆνŽ˜μ΄μ§€ μ—μ„œ ν•„μš”ν•œ λͺ¨λ“ˆ μ„€μΉ˜
    • package.json μ—΄κ³  μƒˆ 터미널 μ—΄μ–΄μ„œ npm i prompt-sync μ„€μΉ˜ ( git bash μ‚¬μš© μΆ”μ²œ )
  • js 파일 λ§Œλ“€κ³  node js-fileName.js 으둜 μ‹€ν–‰

πŸ“š Vue/Cil Project

@vue/cli μ΄λž€

  • CLI = Command Line Interface
  • Vue.js κ°œλ°œμ„ μœ„ν•œ μ‹œμŠ€ν…œμœΌλ‘œ Vue.jsμ—μ„œ κ³΅μ‹μœΌλ‘œ μ œκ³΅ν•˜λŠ” CLI ( ꢌμž₯ )
  • 개발의 νŽΈλ¦¬μ„±μ„ μœ„ν•΄ ν•„μˆ˜μ²˜λŸΌ μ‚¬μš©
  • Vue ν”„λ‘œμ νŠΈλ₯Ό λΉ λ₯΄κ²Œ ꡬ성할 수 μžˆλŠ” μŠ€μΊν΄λ”© ( μ μ ˆν•œ 인지적 도움을 제곡 ) 을 제곡
  • Vue와 κ΄€λ ¨λœ μ˜€ν”ˆ μ†ŒμŠ€λ“€μ˜ λŒ€λΆ€λΆ„μ΄ CLIλ₯Ό 톡해 ꡬ성이 κ°€λŠ₯ν•˜λ„λ‘ κ΅¬ν˜„λ˜μ–΄ μžˆλ‹€.

Vue/Cli ν”„λ‘œμ νŠΈ μ—λŸ¬ 점검 & μ„€μ •

  • Vue λŠ” μ»΄ν¬λ„ŒνŠΈ 이름에 ν•©μ„±μ–΄λ₯Ό ν•„μˆ˜μ μœΌλ‘œ μ‚¬μš©ν•΄μ•Όν•œλ‹€.
    • .vue filename이 HomeView μ΄λŸ°μ‹
  • Vue λŠ” end line CRLFλ₯Ό μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€ -> LF 으둜 μˆ˜μ • ( μœˆλ„μš° )
  • esline(prettier) error
    • package.json -> eslineConfig -> rule 에 μΆ”κ°€
    • λ˜λŠ” eslintrc.js 에 prettier rule μΆ”κ°€
    • "prettier/prettier": ["error", {"endOfLine": "auto"}]
  • vue λŠ” tab space size 2만 지원
    • vscode -> β€œctrl” + β€œ,” -> prettier Tab Width : 2
  • 기타 μ„€μ •
    • vscode -> β€œctrl” + β€œ,” -> prettier Print Width : 80
  • prettier μ„€μ • μ™„λ£Œ ν›„ μ—λŸ¬κ°€ λ‚˜λŠ” νŒŒμΌμ— κ°€μ„œ prettier둜 auto formatting ν•΄μ£ΌκΈ°
    • 파일 ν™”λ©΄ 우클릭 -> λ¬Έμ„œμ„œμ‹ν”„λ‘œκ·Έλž¨

Vue/Cli μ‹€μŠ΅ & μ„€μ •

  • Vue Cli λ‹€μš΄
    • npm install -g @vue/cli μ„€μΉ˜
  • Vue/Cli ν”„λ‘œμ νŠΈ 생성
    • vue create<project-name>
    • 생성 쀑 쀑지 : ctrl+c
    • μ„œλ²„ μ‹€ν–‰ : npm run serve
    • λΈŒλΌμš°μ € : localhost:8080
      1. manualy 선택
      2. bable, vuex, router, linter 선택
      3. vue 2.x 버젼 선택
      4. λΌμš°ν„° λͺ¨λ“œ κΈ°λ³Έ history μ‚¬μš©
      5. eslint + prettier μ‚¬μš©
      6. lint on save yes
      7. in package.json
  • npm λͺ¨λ“ˆ μ„€μΉ˜ ( ν™ˆνŽ˜μ΄μ§€κ°€μ„œ 검색 )
    • axios
    • moment ( λ‚ μ§œ ν¬λ§·νŒ… ν•΄μ£ΌλŠ” 도ꡬ )
  • rule 에 μΆ”κ°€
  • .vue νŒŒμΌμ— ctrl + spacebar -> κΈ°λ³Έ 양식 적용
  • img λŠ” assets 폴더에
  • App.vue 에 HeaderNav μ—°κ²°
  • κΈ°μ‘΄ js 파일 template λŠ” .vue 파일 template둜
  • routes -> router/index.js
  • router에 μ—°κ²°λ˜λŠ” 것은 views 폴더에 ( ν™”λ©΄ ꡬ성 )
  • ν•˜μœ„ μ»΄ν¬λ„ŒνŠΈ 듀은 components 폴더에 ( ν™”λ©΄ μ•ˆμ—μ„œ λ°”λ€ŒλŠ” 것듀 )
  • style 에 scoped μ„€μ •ν•΄μ„œ κ·Έ νŒŒμΌμ—μ„œλ§Œ μ‚¬μš© ( μ„€μ • μ•ˆν•˜λ©΄ μ „μ—­μœΌλ‘œ 쓰일 수 μžˆλ‹€ )
  • μ „μ²΄μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” style은 App.vue에 μ €μž₯ν•˜λ©΄ νŽΈν•˜λ‹€.
  • src/api에 폴더 생성
    • http.js νŒŒμΌν•˜λ©΄ 생성 ( axios )
    • λ‚˜μ€‘μ— axios μ‚¬μš©μ‹œ import ! import http from "@/api/http"
    • rest μ‚¬μš©μ‹œ 맀번 url 을 μˆ˜μ •ν•΄μ•Όν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ„ 쀄일 수 μžˆλ‹€.
// http.js

import axios from "axios";

// axios λ§Œλ“€κΈ°
export default axios.create({
  // URL
  baseURL: "http://localhost:9999/vue",
  // λ‹΄μ•„μ„œ λ³΄λ‚΄λŠ” 것
  headers: {
    "Content-Type": "application/json",
  },
});

πŸ“š SFC ( Single File Component )

SFC - template

  • <template>
  • κΈ°λ³Έμ–Έμ–΄ : HTML
  • 각 *.vue νŒŒμΌμ€ ν•œλ²ˆμ— μ΅œλŒ€ ν•˜λ‚˜μ˜ <template> 블둝을 포함할 수 μžˆλ‹€. ( ν•œκ°œμ˜ root element )
  • λ‚΄μš©μ€ λ¬Έμžμ—΄λ‘œ μΆ”μΆœλ˜μ–΄ 컴파일 된 Vue Component의 template μ˜΅μ…˜μœΌλ‘œ μ‚¬μš©

SFC - script

  • <script>
  • κΈ°λ³Έμ–Έμ–΄ : JS
  • 각 *.vue νŒŒμΌμ€ ν•œλ²ˆμ— μ΅œλŒ€ ν•˜λ‚˜μ˜ <script> 블둝을 포함할 수 μžˆλ‹€.
  • ES2015(ES6)을 μ§€μ›ν•˜μ—¬ import 와 export μ‚¬μš© κ°€λŠ₯

SFC - template

  • <style>
  • κΈ°λ³Έμ–Έμ–΄ : CSS
  • 각 *.vue νŒŒμΌμ€ μ—¬λŸ¬ 개의 <style> νƒœκ·Έλ₯Ό 지원
  • scoped 속성을 μ΄μš©ν•˜μ—¬ ν˜„μž¬ μ»΄ν¬λ„ŒνŠΈμ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯ν•œ cssλ₯Ό 지정 κ°€λŠ₯





πŸ‘ μ°Έμ‘°
https://hanamon.kr/nodejs-%EA%B0%9C%EB%85%90-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/