기본 HTML 파일을로드하고 렌더링하는 방법을 찾으려고하므로 다음과 같은 코드를 작성할 필요가 없습니다.
response.write('...<p>blahblahblah</p>...');
답변
fs 라이브러리를 사용하여 한 가지 방법을 찾았습니다 . 그것이 가장 깨끗한 지 확실하지 않습니다.
var http = require('http'),
fs = require('fs');
fs.readFile('./index.html', function (err, html) {
if (err) {
throw err;
}
http.createServer(function(request, response) {
response.writeHeader(200, {"Content-Type": "text/html"});
response.write(html);
response.end();
}).listen(8000);
});
기본 개념은 단지 파일을 읽고 내용을 덤프하는 것입니다. 그래도 더 깨끗한 옵션을 열 수 있습니다!
답변
app.get을 사용하여 html 파일을 가져 오십시오. 간단 해!!
const express = require('express');
const app = new express();
app.get('/', function(request, response){
response.sendFile('absolutePathToYour/htmlPage.html');
});
그것만큼 간단합니다. 이를 위해 고속 모듈을 사용하십시오. 특급 설치 :npm install express -g
답변
fs 객체를 사용하여 파일을 수동으로 반향 할 수 있지만 ExpressJS 프레임 워크를 사용하여보다 쉽게 사용할 수 있습니다.
…하지만 어려운 방법으로 고집한다면 :
var http = require('http');
var fs = require('fs');
http.createServer(function(req, res){
fs.readFile('test.html',function (err, data){
res.writeHead(200, {'Content-Type': 'text/html','Content-Length':data.length});
res.write(data);
res.end();
});
}).listen(8000);
답변
나는 이것이 오래된 질문이라는 것을 알고 있지만 아무도 언급하지 않았으므로 추가 할 가치가 있다고 생각했습니다.
문자 그대로 정적 컨텐츠 (예 : ‘정보’페이지, 이미지, CSS 등)를 제공하려는 경우 정적 컨텐츠 제공 모듈 중 하나 (예 : node-static)를 사용할 수 있습니다. (나을 수도 있고 나쁠 수도 있습니다. search.npmjs.org를 시도해보십시오.) 약간의 사전 처리를 통해 정적 페이지에서 동적 페이지를 필터링하여 올바른 요청 처리기로 보낼 수 있습니다.
답변
fs.readFile과 같은 메모리에 파일을 모두로드하는 대신 파일을 스트리밍하므로 더 나은 결과 일 것입니다.
var http = require('http');
var fs = require('fs');
var path = require('path');
var ext = /[\w\d_-]+\.[\w\d]+$/;
http.createServer(function(req, res){
if (req.url === '/') {
res.writeHead(200, {'Content-Type': 'text/html'});
fs.createReadStream('index.html').pipe(res);
} else if (ext.test(req.url)) {
fs.exists(path.join(__dirname, req.url), function (exists) {
if (exists) {
res.writeHead(200, {'Content-Type': 'text/html'});
fs.createReadStream('index.html').pipe(res);
} else {
res.writeHead(404, {'Content-Type': 'text/html'});
fs.createReadStream('404.html').pipe(res);
});
} else {
// add a RESTful service
}
}).listen(8000);
답변
이것은 Muhammed Neswine의 답변에 대한 업데이트입니다.
Express 4.x에서는 sendfile이 더 이상 사용되지 않으며 sendFile 기능을 사용해야합니다. 차이점은 sendfile은 상대 경로를 사용하고 sendFile은 절대 경로를 사용한다는 것입니다. 따라서 __dirname은 경로 하드 코딩을 피하기 위해 사용됩니다.
var express = require('express');
var app = express();
var path = require("path");
app.get('/', function (req, res) {
res.sendFile(path.join(__dirname + '/folder_name/filename.html'));
});
답변
방법을 사용 pipe
하는 것이 더 유연하고 간단한 방법입니다.
var fs = require('fs');
var http = require('http');
http.createServer(function(request, response) {
response.writeHead(200, {'Content-Type': 'text/html'});
var file = fs.createReadStream('index.html');
file.pipe(response);
}).listen(8080);
console.log('listening on port 8080...');