Идеальный способ вызова нескольких маршрутов одновременно с использованием Node js и express - PullRequest
0 голосов
/ 10 июля 2019

Каков идеальный способ вызова нескольких маршрутов или рендеринга нескольких маршрутов одновременно в узле и экспрессе?Например, если у меня есть 2 маршрута, это app.get ('/', rout.views.index);и app.all ('/ header', rout.views.header);Когда app.get ('/', rout.views.index);рендеринг, то он также должен отрендерить app.all ('/ header', rout.views.header) ;.Является ли обещание хорошим решением для этого? Или массив обратных вызовов?любая идея?,Или Async?,Хотел отрендерить маршрут маршрута и заголовок сразу.Когда вызывается индексный маршрут, я также хочу включить заголовок, поскольку заголовочные маршруты содержат данные для заголовка, а заголовок расширяется / включается в индекс, поэтому оба должны отображать

Привязки маршрутов

exports = module.exports = function (app) {

    app.get('/', routes.views.index);
    app.get('/blog/:category?', routes.views.blog);
    app.get('/blog/post/:post', routes.views.post);
    app.get('/gallery', routes.views.gallery);
    app.all('/contact', routes.views.contact);


    app.all('/header', routes.views.header);



    //Views for vehicle
    app.get('/searchnew/:category?', routes.views.vehicle)

    app.get('/:parent/:slug?', routes.views.pages);

    // NOTE: To protect a route so that only admins can see it, use the requireUser middleware:
    // app.get('/protected', middleware.requireUser, routes.views.protected);

    // User
    app.get('/api/user', [keystone.middleware.api, keystone.middleware.cors], routes.api.user.list);
    app.get('/api/user/:id', [keystone.middleware.api, keystone.middleware.cors], routes.api.user.get);
    app.post('/api/user', [keystone.middleware.api, keystone.middleware.cors], routes.api.user.create);
    app.put('/api/user/:id', [keystone.middleware.api, keystone.middleware.cors], routes.api.user.update);
    app.delete('/api/user/:id', [keystone.middleware.api, keystone.middleware.cors], routes.api.user.remove);

    //Vehicle API





};

1 Ответ

1 голос
/ 10 июля 2019

Обновление: OP хочет отправить 2 HTTP-запроса, один для получения страницы (вызов / router), а другой для вызова /header router для рендеринга динамического содержимого.

В этом случае выМожно:

Шаг 1. Открыть домашнюю страницу (отправить GET / HTTP-запрос).На этом этапе вызывается маршрутизатор /.

Шаг 2. После полной загрузки домашней страницы (например, прослушивания window.onload событие) отправьте запрос Ajax для получения содержимого динамического заголовка (GET /header),На этом шаге вызывается маршрутизатор /header.

Шаг 3. После возврата содержимого динамического заголовка отобразите его на текущей странице, используя JavaScript.


Старый ответ:

Вам не нужно «вызывать несколько маршрутов».Вам нужно «вызвать один маршрут» (отправить один HTTP-запрос GET) и создать несколько компонентов представления в механизме рендеринга (например, nunjucks).

Например, когда HTTP-запрос равен GET /, сервер будетполучить этот запрос, пытаясь отобразить соответствующий шаблон (например, index.html).Если требуется встроить компонент заголовка, он может быть скомпонован с использованием технологии движка рендеринга:

// In router file, render template for "/"
router.get('/', function (req, res) {
  res.render('index');
});

// In "index" template file, embed "header" component
<!doctype html>
<html lang="zh-CN">
...
{% include "header.html" %}
...
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...