首页 > 解决方案 > NodeJS Express 上的路由

问题描述

我正在使用 Express 在 NodeJS 中开发服务器,但是 Web 结构有点复杂(我没有这样做,我也无法更改它)。

流程是这样的:

  1. 节点服务器接收到类似的调用https://localhost/**{id}**
  2. 收到的 ID 是存储所有文件(html、js、css 等)的文件夹的名称。默认情况下,它返回index.html.
  3. 任何网络的文件结构都没有严格的逻辑,这意味着可以在同一级别index.html或文件夹中的更多视图,无论客户想要开发它们的位置。

我遇到的问题是如何正确路由文件。由于我仅在调用它的索引时才收到 ID,所以我无法弄清楚如何路由链接<a href="view1.html">View 1</a>,甚至是 javascript 文件调用<script src='scripts/someGreatFunctions.js'></script>,因为它们也可能位于根目录或文件夹中(即使是在同时)。

我的server.js文件:

const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();

const config = require('./config');

var webId;

var options = {
  key: fs.readFileSync(config.paths.certificate.key),
  cert: fs.readFileSync(config.paths.certificate.crt),
  requestCert: false,
  rejectUnauthorized: false
};

app.use(function (req, res, next) {
  res.setHeader("Access-Control-Allow-Origin", "*");
  res.setHeader("Access-Control-Allow-Credentials", "true");
  res.setHeader("Access-Control-Allow-Methods", "GET, HEAD, OPTIONS, POST, PUT");
  res.setHeader("Access-Control-Allow-Headers", "Accept, Access-Control-Allow-Headers, Access-Control-Request-Headers, Access-Control-Request-Method, Authorization, Content-Type, Origin, X-Requested-With");
  next();
});

app.get('/scripts/:script', function(req, res) {
  res.sendFile(req.params.script, {root: config.paths.webs + webId + '/scripts'});
});

app.get('/:script.js', function(req, res) {
  res.sendFile(req.params.script + '.js', {root: config.paths.webs});
});

// This routes correctly the index
app.get('/:id', function(req, res) {
  webId = req.params.id;
  res.sendFile('index.html', {root: config.paths.webs + webId});
});

// This DID NOT work
app.get('/:id/:page', function(req, res) {
  //Some code here...
});

https.createServer(options, app).listen(443, function() {
  console.log("NodeJS secure server started at port 443");
});

标签: javascriptnode.jsexpressurl-routing

解决方案


我也处于学习阶段。希望这会有所帮助。

app.get('/test/:id/:page', function(req, res, next) {
    let id = req.params.id;
    let page = req.params.page;
    console.log('The id: ' + id);
    console.log('The page: ' + page);
});

推荐阅读