Node.js를 테스트 자료는 조코딩 영상을 참조하였습니다.
node express(framework)
- 웹 프레임워크(request <-> response)를 만들고 사용하는 것
( 단 node 자체 내장함스로도 서버 설정이 가능합니다.)
express module
1. npm 'express'검색
2. (설치)cmd에서 'npm i express'
3. (실행) cmd에서 'node index.js' => 자기서버 'localhost:3000'
port: 한 서버에 여러개의 포트 가능
FTP : 20,21(TCP)
SSH : 22(TCP)
텔넷 : 23(TCP)
SMTP : 25(TCP)
DNS : 53(TCP/UDP)
DHCP :67(TCP)
HTTP : 80(TCP)
HTTPS : 443(TCP)
app.get('/', () =>{ })
get === http메소드 : 요청 목적, 종류를 알리는 수단
get : 주소창
post : 주소창 ㄴㄴ
'/' === 라우팅 : 서브 폴더(서브 디렉토리)로 연결해주는 역할
- MainUrl/about
- MainUrl/play
- MainUrl/aboard/write
*router
1) (우편물 따위를 행선지에 따라) 분류하다
2) [해양] (배의) 항로를 선정하다
( )=> { } === 콜백 함수 : 앞에 code가 끝나고 실행될 함수
app.get('/', () =>{ })
=> '/'에 들어가서 '() => { }' 함수를 실행해라
get으로 정보 받기(params, query) 출력해보기
<1> get : params,
(1) 사전 준비
(2) app.get("/user/:id', (req, res) =>{
const q = req.params
console.log(q.id)
res.json({'id' : q.id})
}
순서
a) 사전준비
b) broswer https://www.youtube.com/user/jocoding
c) app.get ("/user/:id', (req, res) ==> :id 자리에 사용자가 broswer에 입력합 값 출력
<2>get :query
a) 사전 준비
b) app.get("/user/:id', (req, res) =>{
const p = req.params;
console.log(p)
const q = req.query;
console.log(q)
res.send({'message' : q.id})
}
4. 받은 정보값에 따라 json으로 반환하기
사전 준비
app.get("/sound/:name', (req, res) =>{
const { name(변수처리, 받은 정보값) } = req.params;
if (name =="dog"){
res.json({'name' : '멍멍'});
else if (name == "cat"){
res.json({"name" : "야옹"})
}
5. CORS 모듈(보안)
1. npm community 에서 'cors'검색
2. (설치) cmd에서 npm install cors
요약하면 fetch error
https://www.youtube.com/watch?v=Tt_tKhhhJqY
npm
1. install init
2. module 검색 및 사용할 module 선택
3. 설치 : npm install figlet (-g(global) => 컴퓨터 전체에 설치하여 어디서든 언제든 사용가능하게)
4. npm community에서 검색한 모듈을 값을 가져와 code붙여 넣기
번외. 삭제 : npm uninstall 사용한 module 명칭
Node.js 에 대한 이해
node 여러가지 기능중 하나를 사용하여 서버를 구축하는 것
node 자체가 서버가 아님(node에서 모듈 제공 해줌.)
모듈은 크게 2가지 있음
1) 내장 모듈[ 대표적으로 CommonJS, ECMA Script(ECMA는 6 버전 이후) etc]
2) 외부 패키지
모듈이란?
1. 특정한 기능을 하는 함수나 변수의 집합
2. 모듈 자체로 하나의 프로그램으로 사용 가능
3. 다른 프로그램에 활용 가능
**CommonJS, ECMA Script 비교
CommonJS : 보내기 module.exports // 가져오기 require()
ECMA Script : 보내기 export // 가져오기 import
Pro.
1. 파일별로 코드를 모듈화하여 재사용 가능
#모듈 생성
1. export 객체 사용
- module.exports. 모듈 외부에서 사용할 이름 = 모듈 내부에서의 이름;
2. require( ) 함수로 호출
- const 모듈을 불러와 사용할 이름 = require("./모듈파일이 존재하는 위치 주소");
TIP. 윈도우
cmd와 powershell 두개 존재
powershell은 보안이 향상된 버전
CommonJS 모듈
1. Node.JS에서 사용하는 보편적 모듈
2. 하나의 파일에서 기능을 실행하는 모듈을 보내고 다른 파일에서 해당 기능을 불러와 사용
3. 동기적으로 파일 로드(비동기 처리도 가능)
4. 내보내기(module.exports)는 최하단에 위치하지 않아도 무관
5. 하나의 객체만 내보낼 경우 'module.exports 변수에 할당'
예시)1
<보내기>
function add(a,b){
return a + b;
}
// 함수를 속성으로 담아 보내기
module.exports.add = add;
// 함수를 객체로 담아 보내기
module.exports = { add };
// exports에 직접 작성
module.exports ={
isOdd : function( value ){
return (value % 2) ? true : false
},
isSub : function( value ){
return ( value % 3) ? true : false
}
}
<가져오기>
//속성
let check = require("./주소 위치");
console.log(check.add(1, 3)); => 4
//객체
let { add } = require("./export01.js(보내는 파일 경로)")
console.log(add(1, 2)); => 4
//export에 직접
let calc = require("./export01.js(보내는 파일 경로)")
console.log( calc.isOdd(2) ) => false
6. 여러 개의 객체를 내보낼 경우 'exports 변수의 속성'으로 할당
object.property = value
object.method()
<보내기>
const a =1;
const b =2;
function ad( c , d ){
return c + d
}
export.a
export.b
export.add = add
<가져오기>
let return = require("./(파일명.확장자)")
console.log(return.a) => 1
console.log(return.add(return.a, return.b)); => 3
실행하는 방법 at cmd 'node improt.06(파일명).js'
*export '객체' 사용 시 유의사항
1. exports 객체는 module.exports를 참조하므로 참조관계 유지주의
2. exports 객체에는 객체 형식으로 데이터처럼 속성명(key)과 속성값(value) 입력 필요
3. exports와 module.exports 중 하나만 사용하는 것이 유리
require 함수 속성
1. require.cache
- 예전에 불러왔던 js 파일 정보 저장
- 한번 불러온 파일은 require.cache에 저장되므로 정보의 재사용 가능
2. require.main
- 노드 실행할 때 불러온 첫번째 모듈
- 첫번째 모듈인지 확인 =>(require.main === module)
3. require.main.filename : 첫 모듈의 이름
ES(ECMA Script) 모듈 => AMD
1. 자바스크립트의 공식 모듈 형식
2. 브라우저와 노드 모두에 같은 형식 사용
3. 비동기적으로 파일 로드
4. 파일 단위로 모듈 구성
European
Computer
Manufactorer
Association
Es 내보내기
1. ES 모듈 사용시 둘 중 하나를 반드시 사용
- pakage.json 파일 생성 후 속성과 값에 "type" : "module"을 추가
- 파일 확장자를 mjs로 변경
2. 변수 또는 함수명 앞에 export 키워드 추가
- commonJS > const a =1 ;
- ES > export const a =1 ;
Es 불러오기
1. import문 사용
2. 객체 저장 변수에 { } 사용
3. 파일명의 확장자 반드시 작성
- import {변수명, 변수명, ...} from("./(파일명. 확장자)")
- const {변수명, 변수명, ...} = await import("./(파일명. 확장자)") // Node v18 이상
<보내기 : 한개만>
export function isOdd( ){
return (val % 2) ? true : false
}
export default => 한개만 보낼 때
<가져오기 : 한개만>
예시1)
import { isOdd } from "./export05.mjs";
console.log(isOdd(10)); => false
예시2)
const { isOdd } = await import("./파일명. 확장자)")
console.log(isOdd(9)); => true
<보내기 : 여러개 >
const a =1;
const b =2;
function ad( c , d ){
return c + d
}
export { a, b, add }
<가져오기 : 여러개>
예시1)
import { a, b, add} from "./(파일명. 확장자)";
예시2)
const { a, b, add } = await import("./(파일명. 확장자)");
console.log(a) => 1
console.log(add(a,b)) => 3
실행하는 방법 at cmd 'node improt.06(파일명).mjs'
package.json
package.json을 넣는 이유는 ECMA Script 확장자가 .mjs니 .js로도 실행가능하기 위해서
같은 폴더 안에 존재
1. package.json 파일 만들기
{
"name" : "nodejsdev",
"vision" : "1.0.0",
"type": "module"
}
실행하는 방법 at cmd 'node import07.js'
(내장함수 이용해) 서버 세팅하기
1. server.js 파일 만들기
2. coding
const htttp = require("http"); //웹 서버 생성을 위한 내장 모듈 가져오기 (최근 https도 지원중 단 키값 등이 있어야 함)
fs를 이용하여 데이터
//웹 서버 생성
const server = http.createServer( function( require, response ){
response.writeHead(200, {" Content-Type" : "text/html"});
reponse.end("<h1>Hello, NodeJS Server</h1>");
} );
//웹 서버 실행
server.listen(port number, function() {
console.log("서버가 실행됐습니다.")
} )
3. 명령어 at cmd => 'node server.js'
tip. 자체 서버(localhost, roofback) : 127.0.0.1
tip. 서버 종료 ctrl+c
'나의 FE피봇이야기 > Javascript' 카테고리의 다른 글
[Javascript] scope 범위 (EnvironmentRecord / LexicalEnvironment) (0) | 2024.01.07 |
---|---|
[Javascript] 위아래 정보값 찾기 (0) | 2024.01.07 |
[CSS & Javascript]var 값 설정해서 JS에서 변경하기 (0) | 2024.01.03 |
[Javascript] 데이터의 저장 (0) | 2023.12.31 |
[Javascript] 배열 안에서 렌덤으로 뽑기 (0) | 2023.12.30 |