簡體   English   中英

Angular 5 Universal 排除在服務器上渲染的路徑

[英]Angular 5 Universal exclude path from rendering on server

有什么方法可以強制瀏覽器僅渲染 Angular 5 通用應用程序的特定路徑? 我在 app.module.shared.ts 中有以下路線

@NgModule({
    declarations: [...],
    imports: [
        ......
        RouterModule.forRoot([
            { path: '', redirectTo: 'home', pathMatch: 'full' },
            { path: 'home', component: HomeComponent },
            { path: 'auth-callback', component: AuthCallbackComponent},
            { path: '**', redirectTo: 'home' }        
        ]
        )
    ],
    providers: []
})

而且我希望mysite.com/auth-callback僅在瀏覽器中呈現,而不是在服務器端。 感謝您的幫助,未能找到任何幫助信息。

還沒有這樣的,你將 api 文件夾放在 angular 2 根目錄中。如果你這樣做,Angular2/4/5 路由與 api 路由之間會發生沖突......

因此,無論是使用子域還是將 angular 和 api 代碼放在不同的目錄中..

是的,它可以加載具有特定路由的瀏覽器和服務器。

在您的server.ts中,您需要指定如下路線。

  let routesPath = ['/invite', '/invite/**','/lm', '/dashboard', '/dashboard/**', '/public/**', '/public', '/pre'];
  server.get(routesPath, (req, res) => {
    // console.log(req);
    res.sendFile(distFolder + '/index.html');
  });

然后更新你的 server.ts

  let routesPath = ['/invite', '/invite/**','/lm', '/dashboard', '/dashboard/**', '/public/**', '/public', '/pre'];
  server.get(routesPath, (req, res) => {
    // console.log(req);
    res.sendFile(distFolder + '/index.html');
  });

  // All regular routes use the Universal engine
  server.get('*', (req, res) => {
    res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] });
  });

  return server;

您在上面的代碼中看到有兩個不同server.get() 第一個將加載瀏覽器。 routesPath中提到的所有路由都將顯示普通瀏覽器模式。

第二個是將呈現為 SSR 的所有常規路線。


我知道現在回答為時已晚,但我希望它可以幫助有人解決這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM