2023. 12. 28. 21:28ㆍ공부/내배캠 TIL
목차
금일 미니 프로젝트가 마무리됨에 따라, 개인 공부를 시작했습니다.
Node.js (opentutorials.org)
그리고, sparta...1. 학습 내용
1. VSCode를 사용하여 Node.js 사용해보기node.js를 다운로드 받고, cmd에서 node -v를 입력해서 node.js 설치를 확인한다.
1. 새 폴더를 만들고 해당 폴더를 vscode를 사용해 엽니다.
2. js파일을 만들고, console.log('Hello World');를 입력 후 저장합니다.
3. 터미널을 열고, node <파일명.js> 를 입력한 후 출력을 확인합니다.4. main.js( Node.js - 웹서버 만들기 - Node.js (opentutorials.org) )를 실행하면 localhost:3000으로 페이지에 접근이 가능해진다.
만약, main.js를 종료하면 더이상 접근이 불가능해진다. -> js파일이 서버로서 작동하고 있다는 것을 알 수 있다.
2. JavaScript - 기초문법
[1. JavaScript - JS의 특징]
1. JS의 역사
2008년 V8엔진 출시(super fast, 컴파일러와 메모리 관리 시스템) =>
js를 웹에서 끌어내서 따로 써볼까? (2009년 Node.js 등장)
-- 하나의 언어로 Front, End, DB(MongoDB) = FullStack
-- 이후 프론트엔드 프레임워크(React, Vue등)의 대중화, SPA(Single Page Application) 개발의 활성화
-- 현재 : JS는 프론트 엔드와 백 엔드 개발 분야에서 널리 사용되고 있으며, Node.JS를 이용한 서버 개발도 발히 이루어지고 있다.
2. JS 언어의 특징
[객체 지향 프로그래밍 지원]
(객체지향 : 데이터와 함수를 객체라는 그룹으로 묶어 처리 / 절차지향 : 순서대로 실행되는 일련의 과정으로 프로그래밍)
객체를 생성하고 관리하는 데에 강점. 복잡한 기능 구현 가능.
중괄호({})를 통해 객체 생성, 속성을 쉼표(,)로 구분.
속성은 이름과 값을 지니닌다.
이름은 문자열로, 값은 여러 데이터 타입으로.
객체 내부의 함수는 메소드라 부르며 속성의 값으로 메소드를 추가할 수 있음.
객체를 만들어 필요한 속성과 메소드를 추가하여 사용.
[동적 타이핑]
변수 선언시 타입을 지정하지 않음. 이는 런타임 시점에 변수에 할당되는 값에 따라 데이터 타입이 자동으로 결정된다는 뜻. (변수가 불러와 졌을때 타입이 결정된다.)
(런타임 시점 : 프로그램이 실행되는 동안의 시점. = 코드가 실행되는 동안에 발생하는 시점 / 컴파일 시점)
[함수형 프로그래밍 지원]
자바 스크립트는 함수를 사용해서 프로그래밍할 수 있다!
함수를 일급 객체로 취급하고, 고차 함수를 지원한다.
이는 코드의 재사용성과 가독성이 높아진다는 뜻.
(일급 객체 : 함수를 일반 값과 마찬가지로 취급할 수 있다.)
(고차 함수 : 함수를 인자로 받거나, 함수를 변수로 받는 함수. )
[비동기 처리]
처리가 병렬로 이루어진다. -> 속도가 빠른 이유
[클라이언트 측 및 서버 측 모두 지원]
Node.js를 사용한 서버 구축 가능.
풀스택 개발에 자바스크립트를 활용할 수 있다![2. JavaScript - 기본 문법]
(1) 변수 와 상수
변수 -
모든 프로그래밍 언어는 값을 메모리에 저장하고, 저장된 값을 읽어 재사용 하기 위해 변수를 이용.
변수의 주요 5개념 -
이름(고유명), 값(저장된 값), 할당(저장), 선언(사용하기 위한 행위), 참조(할당된 값을 read)
변수 선언 키워드 -
var, let, const + <변수명>
var : 옛날 방식, 여러 번 선언해도 오류가 발생하지 않는다. 가장 마지막에 선언한 값으로 선언됨.
let : 변수 선언(선언 이후 변경 가능). 같은 이름이 변수 두 번 선언시 오류 발생.
const : 상수 선언(선언 이후 변경 불가능). 같은 이름이 변수 두 번 선언시 오류 발생.
선언되지 않은 변수 사용시, 참조 에러 발생.대입 연산자 : = 좌측에 대입 할 변수명, 우측에 대입 할 값을 작성
(2) 데이터 타입
[1] 데이터 타입
1. 숫자(Number)a. 정수형 숫자(integer)
let num1 = 10; console.log(num1); // 10 console.log(typeof num1); // "number"
b. 실수형 숫자(Float)
let num2 = 3.14; console.log(num2); // 3.14 console.log(typeof num2); // "number"
c. 지수형 숫자(Exponential)
let num3 = 2.5e5; // 2.5 x 10^5 console.log(num3); // 250000 console.log(typeof num3); // "number"
d. NaN(Not a Number) : 수학적으로 정의되지 않는 계산 수행시, 숫자가 아닌 값을 숫자로 변환시 발생.
let num4 = "Hello" / 2; console.log(num4); // NaN console.log(typeof num4); // "number"
e,d. Infinity
let num5 = 1 / 0; console.log(num5); // Infinity console.log(typeof num5); // "number" let num6 = -1 / 0; console.log(num6); // -Infinity console.log(typeof num6); // "number"
2. 문자열(String)
문자의 나열. 작은 따옴표('), 큰 따옴표(")로 감싸서 표현
let name = 'Alice'; let message = "Hello, world!";
3. 불리언(Boolean)
참(true)와 거짓(false)let bool1 = true; console.log(bool1); // true console.log(typeof bool1); // "boolean" let bool2 = false; console.log(bool2); // false console.log(typeof bool2); // "boolean"
조건문과 논리 연산자와 함께 사용되는 경우가 많음.
4. undefined
값이 할당되지 않은 변수를 의미.let a; console.log(a); // undefined
5. null
값이 존재하지 않음을 의미 != undefinedlet a = null;
6. 객체(Object)
attribute와 method를 가지는 컨테이너. 중괄호({})를 사용하여 생성.let person = {name:'Alice',age:20} person.name // 'Alice' person.age // 20
-> 파이썬의 딕셔너리 자료형? 으로 이해. 그런데 이제, 값으로 함수를 받을 수 있는...
7. 배열(Array)
여러 데이터를 순서대로 저장하는 데이터 타입. 대괄호([])를 사용하여 배열을 생성.let numbers = [1, 2, 3, 4, 5]; let fruits = ['apple', 'banana', 'orange'];
-> 파이썬의 리스트 자료형? 또는 numpy array? 으로 이해.
2. 내용 정리
[1. JS의 특징]
JS는 프론트엔드/백엔드 모두에서 널리 사용되고 있는 언어이다. -> 배울 필요가 있다.
JS는 객체 지향, 동적 타이핑, 함수형 프로그래밍, 비동기 처리, 클라이언트 서버 지원을 특징으로 한다.
-> 파이썬이랑 거의 유사한데? / 웹개발을 파이썬으로 못하는건 아니지만, JS가 더 쉽고 빠르다. 마찬가지로 JS로 인공지능 개발을 못하는건 아니지만, 파이썬이 더 잘한다.(Pytorch는 신이고 무적이다)
[2. 기본 문법]
(1) 변수와 상수
let 변수선언, const 상수선언
(2) 자료형
1. 숫자형
- 정수형(Integer), 실수형(Float), 지수형(Exponential), NaN, Infinity(+), Infinity(-)
- (python의 int, float과 함수로 표현되는 값들...)
2. 문자열 (== python str)
3. 불리언 (Boolean, python과 동일)
4. undefined
5. null
6. 객체(Object) - 객체 리터럴, 생성자 함수, 프로토타입, class로 생성 / python에선 class로 생성
- 일단 예제에선 파이썬의 딕셔너리와 같은 형태를 가지지만, 이런저런 부분이 다르다. 따옴표 생략이라던가...
7. 배열(Array) - 파이썬에서 배열은 numpy로 지원하는 n*n형태의 배열을 말한다. 바닐라 파이썬의 리스트와 비슷한 느낌으로 쓰는건가?3. 예제
동적 타이핑 예시let myVariable = "Hello, world!"; // 변수 선언 및 문자열 데이터 타입으로 할당 console.log(typeof myVariable); // "string" 출력 myVariable = 123; // 숫자 데이터 타입으로 할당 console.log(typeof myVariable); // "number" 출력 myVariable = true; // 불리언 데이터 타입으로 할당 console.log(typeof myVariable); // "boolean" 출력
고차함수 예시function operate(func, a, b) { return func(a, b); } function add(a, b) { return a + b; } function multiply(a, b) { return a * b; } console.log(operate(add, 2, 3)); // 5 console.log(operate(multiply, 2, 3)); //
변수 선언 예시// var로 변수 선언 var myVar = "Hello World"; console.log(myVar); // "Hello World" // let으로 변수 선언 let myLet = "Hello World"; console.log(myLet); // "Hello World" // const로 상수 선언 const myConst = "Hello World"; console.log(myConst); // "Hello World"
2. 문자열// 길이(length) 확인 let str = "Hello, world!"; console.log(str.length); // 13 // 결합(concaternation) let str1 = "Hello, "; let str2 = "world!"; let result = str1.concat(str2); console.log(result); // "Hello, world!" // 자르기(substr, slice) let str = "Hello, world!"; console.log(str.substr(7, 5)); // "world" console.log(str.slice(7, 12)); // "world" // 검색(search) let str = "Hello, world!"; console.log(str.search("world")); // 7 // 대체(replace) let str = "Hello, world!"; let result = str.replace("world", "JavaScript"); console.log(result); // "Hello, JavaScript!" // 분할(split) let str = "apple, banana, kiwi"; let result = str.split(","); console.log(result); // ["apple", " banana", " kiwi"]
3. 불리언
// 조건문과 논리 연산자에서의 불리언 연산자 사용 예시 let a = 1; let b = 2; if (a==b){ console.log("same"); } else { console.log("diffrent"); } console.log(a**b); // false
4. 생각 정리
이전에 파이썬을 학습했던 경험이 학습 초반에는 도움이 되고 있는듯 합니다.
그러나 차이점도 꽤 큰편이라, 앞으로도 둘을 비교하며 공부하는 방식으로 계속할 듯 합니다.
'공부 > 내배캠 TIL' 카테고리의 다른 글
[Node.js_4기] Today_I_Learn : JavaScript학습 (24/01/01) (0) | 2024.01.01 |
---|---|
[Node.js_4기] Today_I_Learn : javascript 학습 (23/12/29) (0) | 2023.12.29 |
[Node.js_4기] Today_I_Learn : Project_4 (23/12/27) (1) | 2023.12.27 |
[Node.js_4기] Today_I_Learn : Project_3 (23/12/26) (0) | 2023.12.26 |
[Node.js_4기] Today_I_Learn : Project_2 (23/12/22) (2) | 2023.12.22 |