Nodejs 五子棋项目怎么访问html页面?
Nodejs 五子棋项目怎么访问html页面?
我本地也只是在浏览器里这样的地址才能访问页面: file:///D:/node/five/client/ws.html
http://localhost:8080/也只是出来一句话: Welcome to socket.io.
但是怎么访问页面呢?下面的访问方式都不能访问: http://localhost:8080/five/client/ws.html 或者http://localhost:8080/node/five/client/ws.html也不行
请问各位 怎么访问?
要在Node.js项目中正确地访问HTML页面,你需要设置一个简单的HTTP服务器来处理静态文件。以下是一个简单的例子,展示如何使用Express框架来设置一个服务器,以便能够通过浏览器访问到你的HTML页面。
首先,确保你已经安装了Node.js和npm。然后,在你的项目目录中初始化一个新的Node.js项目,并安装必要的依赖:
npm init -y
npm install express
接下来,创建一个名为server.js
的文件,用于设置HTTP服务器。在这个文件中,我们将使用Express框架来提供静态文件服务。
const express = require('express');
const path = require('path');
const app = express();
const port = 8080;
// 设置静态文件目录
app.use(express.static(path.join(__dirname, 'five/client')));
// 启动服务器
app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});
在这个配置中,我们告诉Express将five/client
目录下的所有静态文件(包括HTML、CSS、JavaScript等)作为Web资源提供。这意味着如果你的HTML文件位于D:/node/five/client/ws.html
,现在你可以通过http://localhost:8080/ws.html
直接访问它。
解释
express.static()
:这是一个中间件函数,用于提供静态文件服务。它会自动查找指定目录下的文件并发送给客户端。path.join(__dirname, 'five/client')
:这行代码将当前目录与相对路径合并,生成绝对路径,以方便Express找到你的静态文件。app.listen()
:启动服务器并监听指定端口上的请求。
通过这种方式,你可以轻松地从浏览器访问你的五子棋游戏的HTML页面,而无需手动输入文件路径。
localhost:8080上跑的是服务器端 这个客户端需要自己再开一个web服务器来运行的 那个包里面没看到服务器端程序 需要自己写一个的
var http = require(‘http’); var fs = require(‘fs’); var path = require(‘path’); var util = require(‘util’);
http.createServer(function (request, response) {
console.log('request starting...');
var filePath = ‘.’ + request.url;
if (filePath == ‘./’)
filePath = ‘./ws.html’;
var extname = path.extname(filePath);
var contentType = ‘text/html’;
var ifbinary = false;
switch (extname) {
case ‘.js’:
contentType = ‘text/javascript’;
break;
case ‘.css’:
contentType = ‘text/css’;
break;
case ‘.gif’:
contentType = ‘image/gif’;
ifbinary = true;
break;
case ‘.png’:
contentType = ‘image/png’;
ifbinary = true;
break;
case ‘.jpg’:
contentType = ‘image/jpeg’;
ifbinary = true;
break;
}
path.exists(filePath, function(exists) {
if (exists) {
if (ifbinary) {
fs.stat(filePath, function(error, stat) {
var rs;
response.writeHead(200,{ 'Content-Type': contentType, 'Content-Length' : stat.size });
rs = fs.createReadStream(filePath);
util.pump(rs, response, function(err) {
if(err) {
throw err;
}
});
});
}
else {
fs.readFile(filePath, function(error, content) {
if (error) {
response.writeHead(500);
response.end();
}
else {
response.writeHead(200, { 'Content-Type': contentType });
response.end(content, 'utf-8');
}
});
}
}
else {
response.writeHead(404);
response.end();
}
});
}).listen(8125);
console.log(‘Server running at http://127.0.0.1:8125/’);
我那现成的东西改了一下 用这个来运行客户端 然后就可以用localhost:8125来访问ws.html了
在本地随便架设一个就可以了吧~
楼主能分享下五子棋的源码么?原作者提供的地址连接坏了。我的邮箱是hohai_wow@hotmail.com,不胜感激!!!
您好!按照您的解决方案大部分网页都可以访问了。 但是有参数的网页访问不了,报404错误。 例如:http://127.0.0.1:8125/abc.html?var=3 自我感觉这跟filePath变量的相关处理有关,但涉及多出不知道具体应该怎么修改。 新人,请指教!
关于参数的问题,木有人回答,只好自己解决了。 解决方案就是加一个fileName变量,判断字串里是否有’?’。如果有的话就去掉参数。代码如下:
if (filePath.indexOf(’?’)>0) var fileName = filePath.substr(0,filePath.indexOf(’?’)); else var fileName = filePath;
然后以下所有的filePath都替换成fileName。
要在Node.js中通过HTTP服务器访问HTML页面,你需要设置一个HTTP服务器来提供静态文件。这里以Express框架为例,它可以简化这一过程。首先,确保你安装了Express:
npm install express
然后,你可以创建一个简单的服务器文件(如server.js
),并配置它来提供你的HTML文件:
const express = require('express');
const path = require('path');
const app = express();
const port = 8080;
// 设置静态文件目录
app.use(express.static(path.join(__dirname, 'five/client')));
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'five/client', 'ws.html'));
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
这段代码做了以下几件事:
- 使用Express设置了一个静态文件服务,可以自动提供
five/client
目录下的所有文件。 - 设置了根路径
/
指向ws.html
文件,这样当你访问http://localhost:8080/
时会加载该HTML文件。
接下来,启动你的服务器:
node server.js
现在,当你访问http://localhost:8080/
时,你应该能够看到ws.html
的内容。如果你希望直接通过http://localhost:8080/five/client/ws.html
访问,只需移除或调整上述app.use(express.static(...))
部分即可。