15

Firma Microsoft zapewnia fantastyczny szablon do opracowania Angular (nie AngularJS) w środowisku ASP.NET Core, jak opisano w ich artykule "Building Single Page Applications on ASP.NET Core with JavaScriptServices".Szablon kątowy ASP.NET Core: app.module.client vs. app.module.server

Podczas gdy jest to bardzo proste, istnieje jedna część szablonu, która zaskoczyła mnie: zamiast tego, po prostu jako plik app.module.ts, istnieją zarówno app.module.client.ts, jak i app.module.server.ts.

screenshot of <code>app.module.client.ts</code> and <code>app.module.server.ts</code>

nie udało mi się znaleźć niczego, co wyjaśnia to w internecie. Czy ktoś ma pojęcie, dlaczego istnieją dwa oddzielne pliki dla modułu aplikacji, jakie są ich konkretne zastosowania, jak z nich korzystać, itp.?

Jeśli to pomaga w ogóle, co tu jest pełny szablon wygląda tak:

full ASP.NET Core Angular template

Należy zauważyć, że ClientApp/app/models i ClientApp/app/services są dwa foldery mam dodane do własnych celów; nie są częścią szablonu. Ponadto, app.module.shared.ts jest bardzo prosty i po prostu uniemożliwia napisanie kodu dwa razy, więc nie martw się o to.

Oto co dwa pliki wyglądać następująco:

<code>app.module.client.ts</code> and <code>app.module.server.ts</code> code side-by-side

Odpowiedz

4

Zacznę od poprzedzając że nie jestem 100% dokładności niniejszego sprawozdania, ale ponieważ nikt inny nie wydaje się, że odpowiedział: Dam ci szansę.

Microsoft SPA z Angular 2 wykorzystywał Angular Universal do wykonywania renderowania AOT. Został zaktualizowany do wersji Angular 4, która nie używa Angular Universal. Myślałem, że zamiast tego zepsuł app.module.ts do pliku klienta i serwera, aby pomóc w renderowaniu AOT.

Plik app.module.shared.ts to tak naprawdę stała globalna używana przez app.module.client.ts i app.module.server.ts. Ponieważ wszystko jest renderowane do postaci kilku plików js podczas publikacji, nie ma znaczenia, że ​​rozdzielą plik app.module.

+2

Ah, okay. A co z użytkowaniem? Kiedy deklarujesz komponent na przykład, czy powinien on zostać umieszczony w kliencie, serwerze czy udostępniony? A co z dostawcami? Import? Czy dobrą zasadą byłoby po prostu wszystko udostępnić? Czy istnieje przypadek, w którym należy konkretnie umieścić coś w jednym pliku, a nie w drugim? – NetherGranite

+1

Odkryłem, że jeśli próbuję dodać odniesienie do usługi, która ma być używana przez składniki, należy dodać takie odwołania do dostawców zarówno app.module.server i app.module.client. Próbowałem podążać za https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/WEB-103 (patrz mój komentarz na dole) i musiałem dodać odniesienia do przykładowych usług w wyżej wymienione pliki. – danfer

+1

W końcu udało mi się ustawić na app.module.shared.ts import usług i dodać je do dostawcy udostępnionego, niż na app.module.server i app.module.client po prostu dodawać odwołania do sharedConfig.providers na w sekcji @NgModule każdego z plików serwera i klienta. W ten sposób, jeśli chcesz dodać nową usługę, nie musisz nic robić w każdym z plików, tylko w udostępnionym. Testowane z 2 różnymi usługami i działało dobrze – danfer