Node.js / Express: пропускать маршруты / разрешать обработку других маршрутов, кроме root, приложением на одну страницу - PullRequest
0 голосов
/ 31 января 2020

У меня установлен сервер node.js / Express, который обслуживает мое одностраничное приложение (в Vue. js) внутри папки publi c из пути URL root (localhost: 3333). ).

Теперь, внутри моего индекса. html из моего SPA, я могу легко перемещаться внутри своего приложения на другие страницы (все они обрабатываются vue. js History API, (не sh один)).

Однако, если я ввожу какой-либо маршрут непосредственно в моем браузере, который должен указывать на некоторую подстраницу в моем SPA (например, localhost: 3333 / about. html), этот маршрут будет пытаться обслужиться из моего * Программа 1024 *, которая, конечно, не распознает этот маршрут ...

Как я могу разрешить обработку этого маршрута непосредственно моим SPA, а не через мою программу node.js? Я нашел какое-то решение, перенаправив все, не root url, чтобы оно служило указателю. html страница в моей папке dist SPA:

app.all('/*', function(req, res) {
    res.sendfile('index.html', {root: publicDir});
});

Во-первых, я не очень понимаю, как это может обрабатываться моим SPA ... Я знаю, что обслуживаю свою страницу индекса. html, но она автоматически перенаправляет себя на подстраницу / about моего приложения Vue автоматически или как это работает?

И, во-вторых, это рекомендуемый / или даже стандартный способ передачи обработки этого маршрута в SPA, а не node.js? Или есть другой лучший способ?

1 Ответ

0 голосов
/ 31 января 2020

Как вы уже сказали в своем объяснении, у вас есть SPA, и маршрутизация обрабатывается Vue во внешнем интерфейсе. Повторная настройка вашего index.html для каждого маршрута и предоставление возможности Vue делать свое дело во внешнем интерфейсе - это путь к go.

И, во-вторых, это рекомендуемый / или даже стандартный способ как передать обработку этого маршрута в ваш SPA, а не node.js? Или есть другой лучший способ?

Другими вариантами может быть приложение на сайте сервера, что означает создание страницы по запросу. Что Next. js делает в React.

Или чтобы иметь c страниц, как то, что Gatsby делает в React.

...