[Node.js] 컴퓨터 언어 활용 1주차 ~ 3주차

2022. 10. 11. 14:42대학교 수업내용(Node.js)/Node.js - 1

반복문


if (s != 'King') {
... console.log('참');
... console.log('거짓');
...
> for (a = 1; a <= 10; a++) {
... console.log(a);
... }
1
2
3
4
5
6
7
8
9
10
undefined

 

Atom 구문 패키지

var n = 3;
if (n == 3) {
  console.log("3입니다.");
}else {
  console.log("3이 아닙니다.");
}
for (var i = 1; i <= 7; i++) {
  console.log('i 값은 ${i}');
}

cmd 프롬프트 창 이동

visualStudio 설치(ver.)
VSCodeUserSetup-x64-1.64.2

C:\Users\yscs>cd C:\Users\yscs\Desktop\nodejs

C:\Users\yscs\Desktop\nodejs>node yesu.js
3입니다.
i 값은 ${1}
i 값은 ${2}
i 값은 ${3}
i 값은 ${4}
i 값은 ${5}
i 값은 ${6}
i 값은 ${7}

 

문자열 함수 ( cmd - node )

C:\Users\yscs\Desktop\nodejs>node
Welcome to Node.js v16.14.0.
Type ".help" for more information.

 

※ 문자열의 길이

 

> var s = 'hello world';
undefined
> console.log(s);
hello world
undefined
> s.length
11

 

※ 문자열의 함수 <split>

https://lktprogrammer.tistory.com/124

 

[JavaScript] 자바스크립트 - 문자열(String) 객체 정리 (속성 및 메소드)

안녕하세요. 이번 포스팅에서는 자바스크립트(JavaScript)에서 문자열 객체인 String 객체에 대해 정리해보겠습니다. 1. 문자열 객체 생성 및 초기화  var 참조변수 = new String(문자열 데이터) var 참조

lktprogrammer.tistory.com

쪼개는 함수 공백

 

예제1)
> s
'hello world'
> s.split(' ')
[ 'hello', 'world' ]

예제2)
> s.split('e')
[ 'h', 'llo world' ]

예제3)
> s.split('e')
[ 'h', 'llo world' ]
> s.split('w')
[ 'hello ', 'orld' ]
> s.split('l')
[ 'he', '', 'o wor', 'd' ]

예제4)
문자열 시작하는 함수(startsWith)
> s.startsWith('he')
true
> s.startsWith('wo')
false

예제5)
문자열 몇번째에 있는지 알수있는 함수(indexOf)
> s.indexOf('o')
4
> s
'hello world'

예제6)
문자열 위치 바꾸는 함수(replace, replaceAll)
> s.replace('o','x')
'hellx world'

> s.replaceAll('o','x')
'hellx wxrld'

<3주차>

<실습1>
google 웹 -> F12 개발자키 -> console
> var f = 3 == 3;
<- undefined
var g = 3 < 3;
<- undefined

var a = [1,2,3,4,5];
undefined
var b = ['hello','hi'];
undefined
var c = [1,2,'hello',4];
undefined

a[0]
1
a[2]
3
b[0]
'hello'
b[1]
'hi'
b[2]
undefined
c[0]
1

undefined -> 값이 없다 의미
a.length -> a 배열의 개수
a.indexOf(3)
< 2
indexOf와 lastIndexOf는 String에서 특정 문자열의 인덱스를 찾는데 사용하는 메소드입니다.

a.join()
< '1,2,3,4,5'

a.join("#")
'1#2#3#4#5'

var d = a.join();
< undefined
d
< '1,2,3,4,5'

d.indexOf("3")
< 4

d.startsWith("1")
< true
d.startsWith("2")
< false

var e = d.split(",");
< undefined
e
< (5) ['1', '2', '3', '4', '5']

d.replaceAll
< f

var a = [1,2,3];
undefined
var b = a;
undefined
a
< (3) [1, 2, 3]
b
< (3) [1, 2, 3]
a[0] = 7;
< 7
a
< (3) [7, 2, 3]

var a = 3;
< undefined
var b = a;
< undefined
a = 7;
< 7
b
< 3
a[0] = 7;
< 7
b
< 3
3 == "3"
< true

var a = [1,2,3];
< undefined
var b = [1,2,3];
< undefined
var c = a;
 < undefined
a === b
< false
a == b
< false
console.log(a == b, a===b);
false false
< undefined
console.log(a == c, a === c);
true true
< undefined

 

■스프레드 연산자(...) -> 복제역활

var a = [1,2,3];
< undefined
var b = [...a];
< undefined
var c = a;
< undefined

◆a,b,c 출력값 동일

a
(3) [1, 2, 3]
b
(3) [1, 2, 3]
c
(3) [1, 2, 3]

※splice 함수
객체에서 제공되는 함수인 splice를 이용하면 원하는 위치에 요소를 추가하거나 삭제할 수 있습니다.

 

◆javascript의 객체

var a = { };
< undefined
a.id = "hong";
< 'hong'
a
< {id: 'hong'}
a.name = "홍길동";
< '홍길동'
a.age = 20;
< 20
a
< {id: 'hong', name: '홍길동', age: 20}
var a= {id: 'hong', name: '홍길동', age: 20};
< undefined
var b = a;
< undefined
a.name = "홍길동";
< '홍길동'
b
< {id: 'hong', name: '홍길동', age: 20}

var a= {id: 'hong', name: '홍길동', age: 20};
< undefined
var b = {...a, name:'홍길동'};
< undefined
a.name = '이순신';
< '이순신'
a
< {id: 'hong', name: '이순신', age: 20}
b
< {id: 'hong', name: '홍길동', age: 20}

var a = ['hong', 'lee', 'sun' ];
< undefined
a
< (3) ['hong', 'lee', 'sun']
for (var i = 0; i < a.length; i++) {
    console.log(a[i]+'님');
}
VM3662:2 hong님
VM3662:2 lee님
VM3662:2 sun님
< undefined

function printName(name) {
    console.log(name + '님~~~');
}
< undefined
printName("하늘");
VM4167:2 하늘님~~~
< undefined

var newPrintName = (name) => {
    console.log(name + '님!!!!');
}
< undefined
newPrintName("바람");
VM4544:2 바람님!!!!
< undefined

var a = ["홍길동","이순신","세종대왕"];
< undefined

a.forEach(printName);
VM4167:2 홍길동님~~~
VM4167:2 이순신님~~~
VM4167:2 세종대왕님~~~
< undefined

a.forEach(newPrintName);
VM4544:2 홍길동님!!!!
VM4544:2 이순신님!!!!
VM4544:2 세종대왕님!!!!
< undefined

a.forEach((name) => { console.log(name+"님"); });
VM5003:1 홍길동님
VM5003:1 이순신님
VM5003:1 세종대왕님
< undefined

a.forEach((name,i) => {console.log(name+"님"+i); });
VM5203:1 홍길동님0
VM5203:1 이순신님1
VM5203:1 세종대왕님2
< undefined

var a = [1,2,3,4,5];
< undefined
var b = [];
< undefined
for (var i = 0; i < a.length; i++) {
    b.push(a[i] = 2);
}
< 5
b
< (5) [2, 2, 2, 2, 2]

var c = a.map
undefined
var ceo_list = [
    {name:"홍길동", age:30, ceo:true },
    {name:"이순신", age:23, ceo:true },
    {name:"이율곡", age:40, ceo:false }
    ];
< undefined
var name = ceo_list.map((item) => { return item.name });
< undefined
var age23 = ceo_list.filter((item) => { return item.age==23 });
< undefined
age23
< [{…}]
0: {name: '이순신', age: 23, ceo: true}
length: 1[[Prototype]]: Array(0)

<3주차>

p230 자바스크립트 - 객체의 반복
반복문 총정리
https://curryyou.tistory.com/202

 

[자바스크립트] 반복문 총정리: for in, for of, forEach 등

자바스크립트의 반복문을 정리해본다. # 자바스크립트 반복문 종류 1. for : 고전적인 for문 2. for in : 객체의 프로퍼티 키 열거 전용 3. for of : 이터러블 순회 전용 4. forEach(): 배열 순회 전용 메서드

curryyou.tistory.com

visiual studio에 바탕화면에 nodejs폴더 깔아놓은 것 -> 안에 파일(wow.js) 추가

구문1)
var members = ["sky","world","korea"];
for (var i = 0; i < members.length; i++) {
    console.log(members[i]);
}

->terminal창에 
C:\Users\yscs\Desktop\nodejs> node wow.js 입력
결과
sky
world
korea

구문2)
var members = ["sky","world","korea"];
for (var i = 0; i < members.length; i++) {
    console.log(members[i]);
}
members.forEach((val,index) => {  -->콜백함수(callback)
    console.log(val, index);
});

var rules = {
    'program' : 'Java' ,
    'web' : 'javascript' ,
    'mobile' : 'android' ,
    'os' : 'windows'
}

console.log(rules.program);
console.log(rules.web);
console.log(rules.mobile);
console.log(rules.os);

terminal 창으로 이동

더보기

C:\Users\yscs\Desktop\nodejs> node wow.js
결과)
sky
world
korea
sky 0
world 1
korea 2
Java
javascript
android
windows

구문3)
rules.mobile = 'ios'; 값을 바꿀 수 있다.

var members = ["sky","world","korea"];
for (var i = 0; i < members.length; i++) {
    console.log(members[i]);
}
members.forEach((val,index) => { 
    console.log(val, index);
});

var rules = {
    'program' : 'Java' ,
    'web' : 'javascript' ,
    'mobile' : 'android' ,
    'os' : 'windows'
}

rules.mobile = 'ios';

console.log(rules.program);
console.log(rules.web);
console.log(rules.mobile);
console.log(rules.os);

terminal 창

C:\Users\yscs\Desktop\nodejs> node wow.js
sky
world
korea
sky 0
world 1
korea 2
Java
javascript
ios
windows

구문4)
JSON 표현법
http://www.tcpschool.com/json/json_basic_structure

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

console.log(rules.program, rules['program']);
console.log(rules.web, rules['web']);
console.log(rules.mobile, rules['mobile']);
console.log(rules.os, rules['os']);

terminal 창

PS C:\Users\yscs\Desktop\nodejs> node wow.js
sky
world
korea
sky 0
world 1
korea 2
Java Java
javascript javascript
android android
windows windows

구문5)

var rules = {
    'price' : 10000 ,
    'flag' : true ,
    'program' : 'Java' ,
    'web' : 'javascript' ,
    'mobile' : 'android' ,
    'os' : 'windows'
}

문자열 뿐만 아니라 숫자값이나 블링값도 넣을 수 있다.

var members = ["sky","world","korea"];
for (var i = 0; i < members.length; i++) {
    console.log(members[i]);
}
members.forEach((val,index) => { 
    console.log(val, index);
});

var rules = {
    'price' : 10000 ,
    'flag' : true ,
    'program' : 'Java' ,
    'web' : 'javascript' ,
    'mobile' : 'android' ,
    'os' : 'windows'
}


console.log(rules.program, rules['program']);
console.log(rules.web, rules['web']);
console.log(rules.mobile, rules['mobile']);
console.log(rules.os, rules['os']);

for (var name in rules) {
    console.log(name, rules[name]);
}

terminal 창

PS C:\Users\yscs\Desktop\nodejs> node wow.js
sky
world
korea
sky 0
world 1
korea 2
Java Java
javascript javascript
android android
windows windows
price 10000
flag true
program Java
web javascript
mobile android
os windows

구문6)

var rules = {
    'obj' : { 'id':'korea', 'age':20},
    'arr' : [1, 'two', 3.0],
    'price' : 10000 ,
    'flag' : true ,
    'program' : 'Java' ,
    'web' : 'javascript' ,
    'mobile' : 'android' ,
    'os' : 'windows'
}

terminal창

PS C:\Users\yscs\Desktop\nodejs> node wow.js
sky
world
korea
sky 0
world 1
korea 2
Java Java
javascript javascript
android android
windows windows
obj { id: 'korea', age: 20 }
arr [ 1, 'two', 3 ]
price 10000
flag true
program Java
web javascript
mobile android
os windows

구문7)

var members = ["sky", {id:"world",pw:'123'}, "korea"];
for (var i = 0; i < members.length; i++) {
    console.log(members[i]);
}
members.forEach((val,index) => { 
    console.log(val, index);
});

var rules = {
    'obj' : { 'id':'korea', 'age':20},
    'arr' : [1, 'two', 3.0],
    'price' : 10000 ,
    'flag' : true ,
    'program' : 'Java' ,
    'web' : 'javascript' ,
    'mobile' : 'android' ,
    'os' : 'windows'
}


console.log(rules.program, rules['program']);
console.log(rules.web, rules['web']);
console.log(rules.mobile, rules['mobile']);
console.log(rules.os, rules['os']);

for (var name in rules) {
    console.log(name, rules[name]);
}

terminal 창

PS C:\Users\yscs\Desktop\nodejs> node wow.js
sky
{ id: 'world', pw: '123' }
korea
sky 0
{ id: 'world', pw: '123' } 1
korea 2
Java Java
javascript javascript
android android
windows windows
obj { id: 'korea', age: 20 }
arr [ 1, 'two', 3 ]
price 10000
flag true
program Java
web javascript
mobile android
os windows

구문8)

var members = ["sky", {id:"world",pw:'123'}, "korea"];
for (var i = 0; i < members.length; i++) {
    console.log(members[i]);
}
members.forEach((val,index) => { 
    console.log(val, index);
});

var rules = {
    'f' : () => { console.log('wow'); },
    'price' : 10000 ,
    'os' : 'windows'
}

for (var name in rules) {
    console.log(name, rules[name]);
}

rules.f();

terminal 창

PS C:\Users\yscs\Desktop\nodejs> node wow.js
sky
{ id: 'world', pw: '123' }
korea
sky 0
{ id: 'world', pw: '123' } 1
korea 2
f [Function: f]
price 10000
os windows
wow

구문9)

var rules = {
    'f1' : () => { console.log('wow'); },         ->값을 안받는 함수
    'f2' : (val) => { console.log('wow', val); },    -> 값을 전달받는 함수
    'price' : 10000 ,
    'os' : 'windows'
}

rules.f1();
rules.f2('korea');
const fs = require('fs');

console.log('sync begin');
var res = fs.readFileSync('data.txt', 'utf-8');		//파일 요청과 그 결과가 동시에 일어난다는 약속
console.log(res);
console.log('sync end');

console.log('ansync begin');
fs.readFile('data.txt', 'utf-8', (error, res) => {		//파일 요청과 결과가 동시에 일어나지 않을거라는 약속
    console.log(res);
});
console.log('ansync end');

★동기요청과 결과가 한자리에서 동시에 일어남
A노드와 B노드 사이의 작업 처리 단위를 동시에 맞추겠다.
★비동기: 요청한 그 자리에서 결과가 주어지지 않음
노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다.

 

terminal 창

PS C:\Users\yscs\Desktop\nodejs> node asynch.js
sync begin
hello world
wow korea
sync end
ansync begin
ansync end
hello world
wow korea

 

기존에 있는 data.txt 파일
data.txt hello world

data2.txt파일 추가
data2.txt yongin, seoul

 

구문3)

const fs = require('fs');

console.log('sync begin');
var res = fs.readFileSync('data.txt', 'utf-8');
console.log(res);
var res = fs.readFileSync('data2.txt', 'utf-8');
console.log(res);
console.log('sync end');

console.log('ansync begin');
fs.readFile('data.txt', 'utf-8', (error, res) => {
    console.log(res);
});
console.log('ansync begin');
fs.readFile('data2.txt', 'utf-8', (error, res) => {
    console.log(res);
});
console.log('ansync end');

terminal 창

PS C:\Users\yscs\Desktop\nodejs> node asynch.js
sync begin
data.txt hello world
data2.txt yongin, seoul
sync end
ansync begin
ansync begin
ansync end
data.txt hello world
data2.txt yongin, seoul

※골백지옥 함수

콜백 함수를 익명 함수로 전달하는 과정이 반복되어 코드의 들여쓰기 수준이 감당하기 힘들정도로 깊어지는 현상을 얘기합니다. 
주로 이벤트 처리나 서버 통신과 같은 비동기적인 작업을 수행하기 위해 이런 형태가 자주 등장하는데, 
가독성이 떨어지면서 코드를 수정하기 어렵습니다.

 

구문4)

const fs = require('fs');

console.log('sync begin');
var res = fs.readFileSync('data.txt', 'utf-8');
console.log(res);
var res = fs.readFileSync('data2.txt', 'utf-8');
console.log(res);
console.log('sync end');

console.log('ansync begin');
fs.readFile('data.txt', 'utf-8', (error, res) => {
    console.log(res);
    fs.readFile('data2.txt', 'utf-8', (error, res) => {
        console.log(res);
    });
});
console.log('ansync end');

terminal 창

PS C:\Users\yscs\Desktop\nodejs> node asynch.js
sync begin
data.txt hello world
data2.txt yongin, seoul
sync end
ansync begin
ansync end
data.txt hello world
data2.txt yongin, seoul
axio_test.js 파일 추가

const axio = require("axio");

axio.get("https://www.ysc.ac.kr", (res) => {
    console.log(res.data);
});

PS C:\Users\yscs\Desktop\nodejs> npm -g install mysql

※mysql 클라이언트 창

mysql> create database node js;
mysql> use nodejs
Database changed
mysql> create table member (
       -> userid varchar(16) primary key,
       -> userpw varchar(128) not null,
       -> name varchar(30)
       -> );

mysql> insert into member (userid,userpw,name) values ('sky', '1234', 'skysky');
mysql> select * from member;

mysql_test.js 파일 추가

const mysql = require("mysql");
const cfg = {
    host: 'localhost',
    port: 3306,
    user: 'root',
    password: '1234',
    database: 'nodejs'
};

var conn = mysql.createConnection(cfg);
conn.connect();

var sql = "select * from member";

conn.query(sql, (error, results, fields) => {
    if (error) { console.log(error); }
    console.log(results);
});
conn.end();

PS C:\Users\yscs\Desktop\nodejs> npm install mysql
PS C:\Users\yscs\Desktop\nodejs> node mysql_test.js
[ RowDataPacket { userid: 'sky, userpw: '1234', name: 'skysky' } ]

학교수업 기반으로 실습한 내용을 필기했습니다.

잘못된 내용 및 수정 가능한 내용이 있으시면 댓글에 적어주시기 바랍니다.