2016-10-25 7 views
2

Я знаю, что Angular Universal все еще находится в разработке. Поэтому я подумал об использовании Angular Universal для веб-приложения, которое регулярно извлекает данные с внешнего сервера API (примерно каждые 10 секунд через службу Http). Эти данные затем отображаются в веб-приложении.Угловой универсальный + внешний API

Я встречал несколько проблем, которые я не нашел простое решение для еще:

  1. Угловая Универсальный очевидно нуждается в данных с сервера API для пререндер страницу. Я не хочу запрашивать сервер API от nodeJS каждый раз, когда запрашивается HTML-код веб-приложения. Было бы достаточно, если бы сервер nodeJS «вел себя» точно так же, как один экземпляр веб-приложения клиента, и каждые 10 секунд запрашивает сервер API, «кэширует» эти данные с интервалом в 10 секунд и использует его для визуализации HTML.
  2. Клиентское веб-приложение хранит данные с сервера API в некоторой частной переменной-члене. Эта переменная-член затем используется для создания HTML-кода из него с помощью ngFor, привязок и т. Д. Но эта переменная-член пуста/не определена в начале курса. Я не хочу, чтобы клиентское веб-приложение вытирало предварительно загруженный HTML-код при запуске, потому что это как бы отменило некоторые идеи Angular Universal (а не SEO, но сократило время загрузки).

Надеюсь, вы понимаете, чего я пытаюсь достичь здесь. У вас есть идея, как подойти к этому, или существует даже «официальный» способ сделать это? Я уверен, что я не единственный, кто пытается что-то сделать.

+0

У вас нашел способ решить это? –

+0

@RaymondtheDeveloper К сожалению, не – Julian

+0

@Julian какое-либо обновление? – Rakeschand

ответ

0

Угловой универсал не знает, является ли ваш код кодом сервера или кодом клиента, он просто берет ваше приложение и пытается отобразить его на сервере. но, как вы упомянули, есть время, когда вы хотите, чтобы сервер действовал иначе, чем клиент. Например, если у вас есть функция, которую вы хотите, чтобы Angular Universal пропустил эту строку кода в верхней части тела функции.

if (typeof window === "undefined") return; 

Или, если у вас есть сценарий, что вам нужно на сервер, чтобы сделать что-то по-другому от клиента сделать это

if (typeof window === "undefined") { 
    // server code 
} else { 
    // client code 
}; 
+0

Но это только ответы на половину его вопроса. Я думаю, он хочет, чтобы передать данные, которые были отображены на сервере, в браузер. Потому что он извлекает данные на сервере и снова в браузере. Это означает более длительное время загрузки. Вы знаете способ решить это? –

0

Угловое Универсальные имеют две константы isNode & IsBrowser

if(isNode){ 

    // it's Node Server 

} else { 
    //it's Browser 
} 
Смежные вопросы