JS/boostCamp
24. 10. 4. 개발일지 // 정적서빙버그 fix
* 정적서빙버그 fix문제 :css, js 파일을 못찾아와서 text만 있는 html이 출력되는 버그write after end 버그일단 어떻게 작동하는지 살펴보자해결일단 설계도에 따라 정적파일이 제공된경우 바로 return 되도록했다. (이를위해 미들웨어 밖으로 빼내야했다..)결론부터 말하자면 fs의 동기/비동기 문제때문이었다.추정 원인들mineType 미설정문제브라우저에 렌더링되지않고 다운로드되는문제도 ContentType 설정문제였다.fs의 비동기 문제원래 await가 없어서 파일을 읽기전에 그냥 무조건 return false가 되는게 원인이었다. 문제는 앞으로 미들웨어를 추가할때마다 (ex : 세션검사, 권한검사 등) handleRequest 코드에 if ( session ) return 등을 ..
24.10.3. 개발일지 // MemberSaveController 구현, 프론트컨트롤러 v4구현, 유연한 컨트롤러 구현, 어댑터패턴, instanceof interface
* MemberSaveController 구현먼저 domain > member 구현이 필요.export class Member { private id: number; // DB의 AutoIncrement Id private userId: string; private name: string; private password: string; private email: string; constructor(id: number, userId : string ,name : string , password: string, email: string) { this.id = id; this.userId = userId; this.name = name; ..
24. 10. 2. 개발일지 // 프론트컨트롤러 v3, 동적렌더링, mapToObj
* 프론트컨트롤러 v3 구현기존의 단점 : 컨트롤러에 req, res등 서블릿 기술에 의존적임.단점2 : 아래와같이 viewPath부분의 중복이 많음.public process(req : Request , res : Response) : MyView { const viewPath : string = path.join(process.cwd(), 'dist','views','members.html'); return new MyView(viewPath);}ModelView여기의 map으로 new-form 등을 매칭해줄거임.model에 를 넣어준다!!export class ModelView { private viewName : string; private model : Map= new Ma..
24. 10. 1. 개발일지 // 미들웨어, 프론트 컨트롤러, static serving, 동적렌더링
* 미들웨어 구현미들웨어 타입은 reqHandler 또는 ErrorHandler가 가능.## type, inteface 차이점 쉬운맛 1) 원시성 데이터 사용 type: 가능, interface: 불가능 2) 튜플 사용 type: 가능, interface: 불가능 3) interface 취약점 중복 선언하면 동일 실행 환경에서는 모두 합쳐지는 특징이 있어서 의도하지 않고 다른개발자가 같은 이름이 있는 인퍼페이스를 선언하면 에러 메세지가 뜨지 않는다 결론 가능하면 type을 더 많이 쓰는것이 좋다. 버전이 올라가면서 interface가 성능이 조금더 좋다는 이슈가 사라졌다. 고로 type을 조금더 선호하자/** * Represents an HTTP request handler function. */typ..
24.9.30. 개발일지 // ts설정, favicon, view to dist, 조건부 요청
* ts설정tsconfig.json{ "compilerOptions": { "module": "commonjs", "outDir": "dist", "sourceMap": true, "target": "ES6", "lib": ["es6"], },}package.json-watch => ts파일을 저장할때 자동으로 js로 컴파일--onSuccess => 제대로 컴파일 됐을때만 뒤의 명령 실행{ "scripts": { "start": "tsc-watch --onSuccess \"node dist/main.js\"" }, "devDependencies": { "@types/node": "^22.7.4", "tsc-watch": "^6.2.0", "type..