티스토리 뷰
Node.js:
로컬에서 서버 띄우기,node.js와 package.json
| 시작하기에 앞서
- 노드는 엔진엑스 없이도 배포, 웹서버 역할을 함
- 다른건(php) 포팅해줄 다른것이 필요함.
| 로컬에서 서버를 돌리는 방법
https://developer.mozilla.org/en-US/docs/Learn/Common_questions/set_up_a_local_testing_server 참고
1. python 이용 (폴더 자체를 서버로 돌림)
- SPA가 등장하면서 folder를 serving 하는게 뜸
# If Python version returned above is 3.X
python -m http.server
# If Python version returned above is 2.X
python -m SimpleHTTPServer
2.node 이용
+ Tip
아래와 같이 hostname에 내부 ip를 넣어주면 같은 공유기환경이면 모바일에서나 다른 컴퓨터에서나 접속가능한 서버를 만들 수 있음.
const http = require("http");
const hostname = "192.168.0.2" ; // localhost, 127.0.0.1 ...
const port = 3001; //
const server = http.createServer((req, res) => {
// createServer 명령을 통해 서버 한대를 만든다.
res.statusCode = 200; // 통신 성공
res.setHeader("Content-Type", "text/html");
res.end("<button>click!</button>");
});
server.listen(port, hostname, () => {
// 만든 서버가 이 컴퓨터에 리스닝을 하도록 시킨다.
// 첫번째 인자 port는 3000번이고 hostname은 이 컴퓨터의 hostname 같은 것
console.log(`Server running at http://${hostname}:${port}/`);
});
> ip와 port의 차이
- ip라는건 내 컴퓨터로 도달하게 하는것
- port는 application 레이어
- 위에서 볼수있는 내부 ip는 공유기가 가상 ip 를 준것 ex) 192.168.0.2
| package.json
공식 docs: https://docs.npmjs.com/files/package.json
- Browserify와 더 최근에는 webpack이 CommonJS의 Node 버전을 브라우저로 가져옴으로써 모듈 문제를 잘 해결했다. 그 결과 Node/npm JavaScript 모듈 생태계는 서버와 클라이언트 모두에 적용되었고 빠르게 성장하고 있다.
- package.json 덕분에 프로젝트 자체를 모듈처럼 생각한다.
- 바벨이나 es-lint를 package.json에서 자기 스펙처럼 쓴다.
- 노드는 폴더자체를 모듈로 본다. ( 폴더를 require하면 기본으로 index.js 를 불러옴)
- 폴더안에 package.json을 넣어 main값에 특정 js파일을 넣어주면 그 폴더를 require 할때 그 js파일을 본다. (알맞게 커스터마이징)
- resolve (어떤 파일을 실행할거냐에 대한 판단) 에 대한 노드만의 기준 들어가 있다.
- rollup => 한 코드를 여러개로 분리, 폴더 default로 index.js를 읽는것을 지원 안함 (이건 노드만의 spec) => 라이브러리에많이쓰임
> files
- files라는것안에 써주면 npm에는 올라가지만, 깃에는 안올라감 (.gitignore의 반대개념)
> dependency
- 사용자들이 써야하는건 dependency
- 개발자들이 써야하는건 devDependency
'Back end > Node.js' 카테고리의 다른 글
Node.js - forEach with delay (0) | 2018.04.12 |
---|---|
Node.js -Promise (재고 부족 메시지 개선) (0) | 2018.02.13 |
댓글