javascript - NodeJS Express 上的路由
问题描述
我正在使用 Express 在 NodeJS 中开发服务器,但是 Web 结构有点复杂(我没有这样做,我也无法更改它)。
流程是这样的:
- 节点服务器接收到类似的调用
https://localhost/**{id}**
。 - 收到的 ID 是存储所有文件(html、js、css 等)的文件夹的名称。默认情况下,它返回
index.html
. - 任何网络的文件结构都没有严格的逻辑,这意味着可以在同一级别
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");
});
解决方案
我也处于学习阶段。希望这会有所帮助。
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);
});
推荐阅读
- c# - .Net MVC:如何纠正
- android - 重启或充电后如何打开应用 api 27+
- javascript - 带有钩子的 React SFC 中的回调接收旧值
- python - statsmodels 中缺少模块(python、OaxacaBlinder)
- python - 有没有办法将字符串转换为 discord.py 中的 discord.Member 类型?
- sql - 带有数组列的雪花镶木地板导出
- node.js - 如何在 Jest 中找到正在运行的测试的文件名和路径
- python - 从数据框中选择特定行并为新列执行计算
- python - 如何让这段代码在 python-mysql 界面中只要求插入一次记录
- javascript - 试图让我的 Discord Bot 重复生成答案而不循环消息,chooseanswer 未定义