2017년 소수전공 웹프로그래밍 심화 첫번째 날
1 | let a = 0; |
let과 var의 차이는 간단히 말해서 let이 기존 var의 무분별한 변수 접근을 방지한다는 점이다. 이로써 좀 더 안전한 프로그램을 짤 수 있다.
위 코드에서 c는 접근할 수 없다. c를 let으로 선언했기 때문에 for문 안에서만 접근할 수 있다.1
2for (let i in o) console.log(o[i]);
for (let i in arr) console.log(arr[i]);
배열이나 객체에서 위와 같이 for in문을 사용할 수 있는데, 여기서 i는 Key값이라는것을 중요하게 알아둬야한다.1
2
3
4
5
6
7
8
9
10function A() {
console.log("A");
}
A();
let B = () => {
console.log("B");
}
B();
let C = () => "C";
console.log(C())
다양하게 함수를 선언할 수 있다.1
2
3
4const fs = require("fs");
const http = require("http");
const os = require("os");
const url = require("url");
기본적인 require 선언문이다.1
2
3console.log(os.type())
console.log(os.uptime())
console.log(os.cpus())
os.type은 OS의 타입
os.uptime은 현재 컴퓨터의 업타임
os.cpus는 현재 컴퓨터의 CPU 정보를 나타낸다. 이 때, 각 cpu의 정보는 논리프로세서 기준이다.1
2let sync = fs.readFileSync("index.html");
console.log(sync);
동기식 파일 읽기1
2
3fs.readFile("index.html", (err, data) => {
console.log(err, data);
});
비동기는 그 특성상 변수에 대입하여 사용할 수 없다.1
console.log(url.parse("http://naver.com"))
URL을 파싱해볼 수 있다.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19http.createServer((req, res) => {
let pathname = url.parse(req.url).pathname
console.log("Request for " + pathname + " received.")
if(pathname == "/") pathname = "/index.html";
fs.readFile(pathname.substr(1),(err, data) => {
if(err) {
console.log(err);
res.writeHead(404, {'Content-Type' : 'text/html'});
}else {
res.writeHead(200, {'Content-Type' : 'text/html'});
res.write(data.toString());
}
res.end();
})
}).listen({
host : "127.0.0.1",
port : 8081,
});
console.log("Server is running in 'localhost:8081' !");
HTTP 서버를 열 수 있으며, pathname을 통해 ‘/‘으로 접속시 /index.html를 보여주는데, 지금보니 뭔가 소스가 이상하다. 굳이 저런 방식으로 안해도 된다.1
if(pathname == '/') pathname = 'index.html';