我写了以下代码:
var http = require('http');
var fs = require('fs');
var fileName = 'site/index.html';
var encoding = 'utf-8';
var dataContent = "";
fs.readFile(fileName, encoding, function(error, data) {
if(error) throw error;
dataContent = data;
});
var requestListener = function(request, response) {
response.writeHead(200, {
'Content-Length': dataContent.length,
'Content-Type': 'text/html',
'connection': 'keep-alive',
'accept': '*/*'
});
response.end(dataContent);
}
var server = http.createServer(requestListener, function(connect) {
connect.on('end', function() {
console.log('Server disconnected...');
});
});
server.listen(8000, function() {
console.log("Server is listening...");
});
我在站点目录中有 2 个文件:
1. index.html
2. aboutus.html
第 1 步:我使用 node 命令作为 node runServer.js 运行上述代码
第2步:现在我打开浏览器并输入以下网址
http://localhost:8000/
浏览器正确地向我显示了 index.html 的内容。index.html 文件包含一些原始文本并链接到另一个文件,即 aboutus.html
第三步:当我点击 aboutus.html 的链接时,浏览器将 url 更改为以下
http://localhost:8000/aboutus.html
但是 aboutus.html 的内容没有显示,而是显示了 index.html 的内容
我知道发生这种情况是因为 fileName 变量内容为“site/index.html”。所以浏览器正在渲染 index.html 内容
我怎样才能改变这种行为?如果我不使用 express.js
现在,我对以下代码进行了一些更改:
var http = require('http');
var fs = require('fs');
var path = require('path');
var fileName = "site/index.html";
var encoding = 'utf-8';
var dataContent = "";
function readContentFile(fileName) {
console.log(fileName);
fs.readFile(fileName, encoding, function(error, data) {
if(error) throw error;
dataContent = data;
});
}
readContentFile(fileName);
var requestListener = function(request, response) {
filePath = request.url;
if(filePath!='/') {
fileName = 'site' + filePath;
readContentFile(fileName);
}
response.writeHead(200, {
'Content-Length': dataContent.length,
'Content-Type': 'text/html',
'connection': 'keep-alive',
'accept': '*/*'
});
response.end(dataContent);
}
var server = http.createServer(requestListener, function(connect) {
connect.on('end', function() {
console.log('Server disconnected...');
});
});
server.listen(8000, function() {
console.log("Server is listening...");
});
仍然无法正常工作,我的代码有什么问题吗?或者我应该去 express.js