Как передать управление маршрутизацией от сервера Node клиенту? - PullRequest
0 голосов
/ 12 сентября 2018

Допустим, это та часть, где все маршруты обрабатываются на сервере Node с угловым интерфейсом. Когда пользователь вводит URL-адрес сайта, сервер отправляет все статические файлы для отображения браузером. Тем не менее, я бы хотел, чтобы клиент обрабатывал определенные маршруты, а не направлялся прямо на сервер.

Например, если я введу www.exemple.com / page2 , на сервер отправляется запрос Get, но маршрут не существует, поэтому запрос просто висит там и в конечном итоге приводит к ошибке.

Я хочу, чтобы Angular обрабатывал маршрутизацию вместо автоматической отправки на сервер. Я только успешно получил это для работы на локальном хосте, где приложение Angular обслуживается с другого порта, чем тот, который слушает сервер. Может кто-нибудь сказать мне, как этого добиться? Большое спасибо.

module.exports=function(app,dir){
    app.use(express.json());
    app.use(express.static(dir+'/dist/probeeshq'));
    app.get('/',(req,res)=>{res.sendFile(path.join(dir));});
    app.use('/auth', userAuth);
    app.use('/api/me',userData);
    app.use('/api/org',organization);
    app.use('/api/messaging',messaging);
    app.use('/api/search',search);
    app.use(error);
}

Это то, что у меня есть в Angular

const routes: Routes = [
  { path:'', component: HomeComponent },
  { path:'project_gaea', component:ProjectGaeaComponent},
  { path:'dashboard', component: DashboardComponent ,canActivate:[AuthGuardService]},
  { path:'explore', component:ExploreComponent, canActivate:[AuthGuardService]},
  { path:'create', component: CreateComponent },
  { path:'user/:id', component:UserProfileComponent},
  { path:'**', component: PageNotFoundComponent}
];

Ответы [ 3 ]

0 голосов
/ 15 сентября 2018

Получается, что я должен был подать заявку вот так:

app.use('/', express.static(dir));

И Express позволит Angular обрабатывать всю маршрутизацию после неудачного совпадения со всеми маршрутами на стороне сервера. dir - это просто путь, в котором находится приложение Angular.

0 голосов
/ 06 июня 2019

У меня та же проблема, с помощью подстановочных маршрутов мы можем это исправить.И клиентские маршруты, обрабатывающие любые нераспознанные URL.Хорошо с точки зрения пользовательского опыта, никаких проблем по этому поводу нет, поэтому

app.get("*", (req, res) => {
  // send HTML files
});

Но как насчет аудита, как простой вопрос типа «если я отправляю нераспознанный URL на сервер, он должен дать код состояния 404,вместо того, чтобы перенаправить меня к клиенту и показать страницу 404 или что-то в этом роде "

Сделал правильное замечание, которое ставило под сомнение мои знания в Интернете.Но чтобы решить эту проблему, нам нужно вручную внести белый список URL-адресов клиента на сервере, все еще выясняя сам, если какое-либо лучшее решение, пожалуйста, дайте мне знать.

0 голосов
/ 12 сентября 2018

Вы можете достичь этого, внедрив функцию Route, которая есть в Angular.После этого вы можете просто использовать свой бэкэнд в качестве API.

...