15

Microsoft cung cấp một mẫu tuyệt vời để phát triển Angular (không AngularJS) trong ASP.NET Core như được nêu trong bài viết của họ "Building Single Page Applications on ASP.NET Core with JavaScriptServices".ASP.NET Core Angular Template: app.module.client so với app.module.server

Trong khi nó rất đơn giản, có một phần của mẫu khiến tôi mất cảnh giác: thay vì chỉ đơn giản là tệp app.module.ts, cả hai có một số app.module.client.tsapp.module.server.ts.

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

Tôi không tìm thấy bất kỳ điều gì giải thích điều này trên web. Có ai có bất kỳ ý tưởng tại sao có hai tập tin riêng biệt cho các module ứng dụng, những gì sử dụng cụ thể của họ là, làm thế nào để sử dụng chúng, vv?

Nếu nó giúp ở tất cả, đây là những gì toàn bộ template trông giống như:

full ASP.NET Core Angular template

Tôi nên lưu ý rằng ClientApp/app/modelsClientApp/app/services là hai thư mục tôi đã thêm cho mục đích riêng của tôi; chúng không phải là một phần của mẫu. Ngoài ra, app.module.shared.ts thực sự rất thẳng về phía trước và chỉ ngăn việc phải viết một số mã hai lần, vì vậy đừng lo lắng về điều đó.

Đây là những gì hai tập tin như sau:

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

Trả lời

4

Hãy để tôi bắt đầu bằng cách prefacing mà tôi không chắc chắn 100% về tính chính xác của tuyên bố này, nhưng vì không ai khác dường như đã trả lời, Tôi sẽ cho nó một viên đạn.

Microsoft SPA với Angular 2 sử dụng Góc phổ dụng để thực hiện hiển thị AOT. Nó đã được nâng cấp để sử dụng Angular 4, không sử dụng Angular Universal. Suy nghĩ của tôi là nó thay vì chia nhỏ app.module.ts thành một tập tin máy khách và máy chủ để hỗ trợ việc dựng hình AOT.

Tệp app.module.shared.ts thực ra chỉ là một hằng số chung được sử dụng bởi app.module.client.ts và app.module.server.ts. Bởi vì tất cả được đưa vào một vài tệp js trong khi xuất bản, nó không thực sự quan trọng khi họ chia nhỏ tệp app.module.

+2

Ah, được rồi. Điều gì về cách sử dụng? Ví dụ: khi bạn khai báo một thành phần, nó có nên đi trong máy khách, máy chủ hoặc được chia sẻ không? Điều gì về các nhà cung cấp? Nhập khẩu? Một nguyên tắc hay là chỉ cần đặt mọi thứ vào chia sẻ? Có trường hợp nào trong đó cụ thể nên đặt một cái gì đó trong một tập tin và không phải trong một tập tin khác? – NetherGranite

+1

Tôi đã tìm thấy rằng nếu tôi cố gắng thêm tham chiếu đến một dịch vụ được sử dụng bởi các thành phần phải thêm các tham chiếu đó vào các nhà cung cấp ở cả app.module.server và app.module.client. Tôi đã cố gắng theo dõi https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/WEB-103 (xem nhận xét của tôi ở dưới cùng) và phải thêm tài liệu tham khảo vào các dịch vụ mẫu trong các tập tin nói trên. – danfer

+1

Điều tôi đã kết thúc là đặt app.module.shared.ts nhập dịch vụ và thêm chúng vào nhà cung cấp được chia sẻ, hơn, tại app.module.server và app.module.client chỉ cần thêm tham chiếu đến sharedConfig.providers tại phần nhà cung cấp của @NgModule của từng tệp máy chủ và máy khách. Bằng cách này, nếu cần thêm dịch vụ mới thì không cần phải làm gì ở từng tệp, chỉ cần chia sẻ. Thử nghiệm với 2 dịch vụ khác nhau và hoạt động tốt – danfer

Các vấn đề liên quan