首页 > 解决方案 > 加载随机 html 页面 Express.js

问题描述

Nimit 这边,我的代码需要一些帮助。那么我可以在同一个 url 上加载不同的 html 页面吗例如: www.xyz.com/home/random 可以随机超过 1 个 html 页面

task1.js 模拟。我有 task2.js,task3.js,task4.js 只是更改了 html 文件名。

//This is the root path!
const path = require("path");
const rootDir = require("../utils/path");

//express routing
const express = require("express");
const router = express.Router();

router.use("/random", (req, res, next) => {
  res.sendFile(path.join(rootDir, "views", "task_1.html"));
});

module.exports = router;

应用程序.js

const express = require("express");
const bodyParser = require("body-parser");
const path = require("path");

const app = express();

const homeRouter = require("./routes/homeRouter");
const taskRouter1 = require("./routes/task1");
const taskRouter2 = require("./routes/task2");
const taskRouter3 = require("./routes/task3");
const taskRouter4 = require("./routes/task4");
const errorRouter = require("./routes/error");

app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, "public")));

app.use(homeRouter);

// var ch = 1;
// switch (ch) {
//   case 1:
//     app.use(taskRouter.router1);
//     break;
//   case 2:
//     app.use(taskRouter);
//     break;
//   case 3:
//     app.use(taskRouter);
//     break;
//   case 4:
//     app.use(taskRouter);
//     break;
// }
task = Math.floor(Math.random() * 4);
console.log(task);
switch (task) {
  case 0:
    app.use(taskRouter1);
    break;
  case 1:
    app.use(taskRouter3);
    break;
  case 2:
    app.use(taskRouter3);
    break;
  case 3:
    app.use(taskRouter4);
    break;
}
app.use(errorRouter);
console.log("it has started!");

app.listen(1000);

所以事情是它只随机加载一个页面,刷新后它也会加载相同的页面。

标签: javascripthtmlexpress

解决方案


你也许可以使用这样的东西:

router.use("/random", (req, res, next) => {
  const task = Math.floor(Math.random() * 4);
  res.sendFile(path.join(rootDir, "views", `task_${task}.html`));
});

推荐阅读