fix: 异步请求热榜

This commit is contained in:
lyz05
2025-11-19 09:20:41 +08:00
parent 1776c9c497
commit 91668bcd6a
3 changed files with 45 additions and 16 deletions

View File

@@ -3,7 +3,7 @@
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"scripts": { "scripts": {
"start": "node --expose-gc --max-old-space-size=200 ./bin/www", "start": "node ./bin/www",
"dev": "nodemon --expose-gc --max-old-space-size=200 ./bin/www", "dev": "nodemon --expose-gc --max-old-space-size=200 ./bin/www",
"test": "nyc -a mocha --recursive", "test": "nyc -a mocha --recursive",
"deploy": "flyctl deploy", "deploy": "flyctl deploy",

View File

@@ -94,18 +94,27 @@ async function index(req, res) {
const names = list.map(item => item.name); const names = list.map(item => item.name);
const domains = list.map(item => item.domain); const domains = list.map(item => item.domain);
const path = req.protocol + "://" + req.headers.host + req.originalUrl; const path = req.protocol + "://" + req.headers.host + req.originalUrl;
const resolve_info = await db.accessCountQuery()
const hotlist = await db.hotlistQuery()
res.render("danmaku", { res.render("danmaku", {
path, path,
urls, urls,
names, names,
domains, domains,
resolve_info,
hotlist
}); });
} }
router.get("/api/home-data", async (req, res) => {
try {
const [resolve_info, hotlist] = await Promise.all([
db.accessCountQuery(),
db.hotlistQuery()
]);
res.json({ resolve_info, hotlist });
} catch (err) {
console.error(err);
res.status(500).json({ error: "查询失败" });
}
});
/* GET home page. */ /* GET home page. */
router.get("/", async function (req, res) { router.get("/", async function (req, res) {
db.accessInsert({ db.accessInsert({

View File

@@ -41,14 +41,7 @@
<div class="col-sm-4"> <div class="col-sm-4">
<h4>最近一天下载热榜</h4> <h4>最近一天下载热榜</h4>
<ul id="hotlist"> <ul id="hotlist">
<% hotlist.forEach(function(item) { %> <!-- 异步加载 hotlist -->
<li>
<a href="<%= item.url %>">
<%= item.title %>
</a> - <%= item.count %> 次访问
</li>
<% }); %>
<!-- 更多列表项 -->
</ul> </ul>
</div> </div>
</div> </div>
@@ -97,14 +90,41 @@
</div> </div>
<div class="row"> <div class="row">
今日解析量:<span id="today_visited"><%= resolve_info.today_visited %></span><span class="post-meta-divider"> | </span> 今日解析量:<span id="today_visited">加载中...</span><span class="post-meta-divider"> | </span>
昨日解析量:<span id="lastday_visited"><%= resolve_info.lastday_visited %></span><span class="post-meta-divider"> | </span> 昨日解析量:<span id="lastday_visited">加载中...</span><span class="post-meta-divider"> | </span>
近一个月解析量:<span id="month_visited"><%= resolve_info.month_visited %></span> 近一个月解析量:<span id="month_visited">加载中...</span>
</div> </div>
</footer> </footer>
</div> </div>
</body> </body>
<script>
$(document).ready(function() {
$.ajax({
url: "/api/home-data",
method: "GET",
dataType: "json",
success: function(data) {
// 更新热榜
var hotlistEl = $("#hotlist");
hotlistEl.empty();
data.hotlist.forEach(function(item) {
hotlistEl.append(
`<li><a href="${item.url}">${item.title}</a> - ${item.count} 次访问</li>`
);
});
// 更新访问统计
$("#today_visited").text(data.resolve_info.today_visited);
$("#lastday_visited").text(data.resolve_info.lastday_visited);
$("#month_visited").text(data.resolve_info.month_visited);
},
error: function(xhr, status, err) {
console.error("加载首页数据失败", err);
$("#hotlist").html("<li>加载失败</li>");
}
});
});
</script>
</html> </html>