【发布时间】:2018-09-07 09:09:31
【问题描述】:
我在 NodeJS 中用 Express 开发一个服务器,但是 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");
});
【问题讨论】:
标签: javascript node.js express url-routing