我试图跟踪我网站中的访问者和页面浏览量,这只是在我的网页中显示的一个简单功能,但在启动我的后端服务器后页面会不断刷新,从而增加了我的页面浏览量。
HTML代码:
<h2>Page Views: <span id="pageviews-count"></span></h2>
<h2>Visits: <span id="visits-count"></span></h2>
HTML 脚本:
const pageviewsCount = document.getElementById('pageviews-count');
const visitsCounts = document.getElementById('visits-count');
if (sessionStorage.getItem('visit') === null) {
updateCounter('type=visit-pageview');
}
else {
updateCounter('type=pageview');
}
function updateCounter(type) {
fetch('http://localhost:5000/counter?' + type)
.then(res => res.json())
.then(data => {
pageviewsCount.textContent = data.pageviews;
visitsCounts.textContent = data.visits;
})
}
counter.controller.js:
const fs = require('fs');
async function visitCounter(req, res, next) {
if (req.url === '/favicon.ico') {
res.end();
}
const json = fs.readFileSync('./logs/count.json', 'utf-8');
const obj = JSON.parse(json);
obj.pageviews = obj.pageviews + 1;
if (req.query.type === 'visit-pageview') {
obj.visits = obj.visits + 1;
}
const newJson = JSON.stringify(obj);
fs.writeFileSync('./logs/count.json', newJson);
res.send(newJson);
}
module.exports = visitCounter
counter.routes.js:
const express = require('express');
const counter = require('../controllers/counter.controller');
const router = express.Router();
router.route('/')
.get(counter);
module.exports = router;
count.json:
{"pageviews":369,"visits":8}
最后,app.js:
const express = require("express");
const cors = require("cors");
const app = express();
const port = 5000;
app.use(express.json());
app.use(cors());
app.use('/counter', require('./routes/counter.routes'));
app.listen(port, () => {
console.log(`http://localhost:${port}`);
});
这看起来很晦涩,但我只是在 HTML JavaScript 中将 URL 从 http://localhost:5000 更改为 http://127.0.0.1:5000,现在我的页面可以正常工作了。
我不知道原因,但我之前也遇到过这个问题,在 localhost 和 127.0.0.1 之间进行更改似乎解决了根本问题。如果有人可以解释这个方法,请这样做,因为它可能会帮助很多人理解何时使用 localhost 和 127.0.0.1。