[NodeExpressTs] 2. 개쉬운 app.ts

 


노드 express는 app.ts 를 한번 실행하고,

매 요청마다 app.use() 에 등록할것을 실행하는것임

즉, app.ts가 노드 express의 전부임


시작하기전에 철학부분부터 알려드림

 


 1. 간단하게 만들어라

2. ㅈㄹ 쉽게 만들어라

3. 자유롭게 만들어라


우리는 이미 스켈레톤이 구현된 프레임워크를 받아서 코드가 빼곡하지만

원래 노드express 문서대로 프로젝트 만들면 소스코드가 하나없이 깨끗한 백지로 시작함




???????????????????????????????????????????????????????




걱정 ㄴㄴ


src/app.ts 에 가면 소스코드 200줄 짜리가 있는데

스프링으로 치면 crud,보안, 스프링으론 하기 개빡센 소켓통신까지 app.ts 안에있는 200줄로 다 구현이 된거임

(더자세히 말하자면jwt, json 암호복호화, rainbow 공격 패치, webrtc, azure 클라우드스토리지 연동까지 구현된 스켈레톤 코드임)

쉽게 말하면 레거시 스프링으로 몇천줄인 코드가 얽히고 얽혀서 구현할걸 1/10 수준으로 다 구현 했다는거임





그럼 이제 express의 기본 코드를 알려줌


// express 서버 만들기 위한 모듈
import * as express from 'express';
 
//모듈로 서버 만듬
const app: express.Express = express();
 
// 서버를 http2 통신도 할수있게 업글시켜줌
const http = require('http').createServer(app);


//서버 구동
http.listen(8080, function () {
    console.log('listening on 8080');
  });

...



이게 끝임.

그리고 ... 부분에 컨트롤러들 먹여주고 저쩌고 하면 기능구현도 샥샥 되는거임

express 는 서버 구동을 시키면 맨 처음엔

app.ts에 있는 코드를 한번씩 싹 실행함


그다음 매먼 요청이 오면 app.use(뭐뭐) 에 등록한 함수,모듈,미들웨어 들을 싹 실행함



app 이란놈에서 자주 사용되는 함수는 딱 2개임

app.use(뭐뭐) = 모듈이나 미들웨어를 사용하게 해주는놈

app.set(객체) = 객체를 어디서든 꺼내 쓸수 있도록 저장해주는놈

req.app.get(객체) app.set 에서 저장한놈을 꺼낼때 쓰이는놈


express 프레임워크에서 자주 쓰이는 기능은 이것들임

var sourceCodePackage=require('뭐뭐')

require 혹은 import는 다른 파일에 있는 소스코드를 복붙 해주는놈임

import는 타입스크립트로 작성된놈을 타입스크립트로 지원해주는 놈인데,

적용 되는놈도있고 안되는놈도 있음...

암튼 타입스크립트로 작성된 파일들은 import로 복붙하기하면

sourceCodePackage. 했을때 안에 포함된 변수들이나 함수들이 뜸


require는 그냥 쌩 자바스크립트 스타일로 불러오는데, import보다 강력한점은

객체를 넘겨줄수있음

// src/app.ts

app.use('/socket', socketRouter(passport));

// src/Router/socket/websocket.rout.ts

module.exports = function (globalVariable: any) {
  router.post('/testRoute', (req, res, next) => {
    console.log(globalVariable);

    res.json({
      message: 'Test Route Success',
    });
  });
return router;
};

이런식으로임.

어떤 모듈들은 app.set 기능으로 값을 다른 파일에 있는 소스코드로 넘겨즐때 재대로 안넘겨줄때가 있는데, 그땐 var a=require('x')(b) 이런식으로 넘겨주면 됨






 "센세 뭔소린지 모르겠습니다. 이거 너무 어렵습니다"




자바스크립트가 워낙 변태라서 그런거임

얘 원래 변태인데, 성능도 변태 팬티맨처럼 쌤



내가 강의 천천히 쓰는거처럼 천천히 알아가도 변태처럼 가지고 놀다보면 감 잡힘


개발은 머리로 하는게 아니라 마음으로 하는거임

댓글

이 블로그의 인기 게시물

[Blazor] eventcallback 주의사항

[토이강의] Blazor C# 으로 유튜브 동영상 나의 플레이리스트 만들기