2016-10-06 27 views
6

Tôi mới sử dụng Angular2 và tôi quan tâm đến việc tìm hiểu xem có khả năng tái sử dụng toàn bộ các thành phần trình bày từ bên trong một ứng dụng trong ứng dụng khác không? Ví dụ tôi có một ứng dụng Angular 2 được gọi là MyApp và trong đó tôi có một số thành phần phổ biến mà tôi đã tạo, chúng nằm trong thư mục app/components/common và mỗi chứa một tệp TypeScript, Sass và HTML.Tôi có thể sử dụng lại các thành phần trên các ứng dụng không?

Tôi sử dụng Gulp để biên dịch TypeScript thành JS và Sass thành CSS.

Tôi bây giờ phát hành rằng các thành phần phổ biến này có thể phổ biến trên các ứng dụng Angular 2 khác của tôi và vì vậy tôi muốn sử dụng chúng trong ứng dụng Angular 2 riêng biệt có tên MyOtherApp.

Tôi muốn có thể kéo tất cả các thành phần phổ biến ra khỏi MyApp và có thể sử dụng chúng trong MyOtherApp.

Điều này có khả thi không? Nếu vậy cách tiếp cận tốt nhất cho loại chia sẻ chung của các thành phần là gì?

Như tôi đã nói tôi đang sử dụng Gulp để xây dựng/chạy và cũng là System.js để cấu hình thiết lập các ứng dụng Góc.

Tôi có thể chia sẻ một số mã tôi đã thử nếu được yêu cầu nhưng tôi không chắc chắn về những gì hữu ích để chia sẻ, vì vậy hãy yêu cầu những gì có thể hữu ích và tôi sẽ chia sẻ.

Trả lời

4

Tôi nghĩ cách tổng quát nhất là xây dựng một thư viện riêng để xuất bản NgModule - giống như Angular, thư viện Angular Material 2 và các thư viện khác. Tuy nhiên nó đòi hỏi nỗ lực nhiều hơn để thiết lập xây dựng kịch bản cho thư viện và làm cho nó khó khăn hơn để gỡ lỗi.

Một lựa chọn khác là để có một dự án đánh máy duy nhất cho tất cả các ứng dụng với các tập tin điểm vào khác nhau với chức năng bootstrap góc cho từng dự án

+0

cảm ơn, bạn có thể cung cấp liên kết hoặc thông tin bổ sung về việc tại sao thư viện có thể khó gỡ lỗi hơn? Nếu Library là dự án Angular của riêng nó thì nó có thể được debug như vậy không? Bạn có nghĩa là gỡ lỗi các thư viện trong ứng dụng nó được nhập vào trở nên khó khăn? –

+1

Vâng, bạn có thể có ứng dụng độc lập trong thư viện như ở đây https://github.com/angular/material2/tree/master/src/demo-app/ Tuy nhiên, sẽ khó khăn hơn để gỡ lỗi các vấn đề trong ứng dụng của bạn bằng thư viện - Tôi muốn mô phỏng các vấn đề trong ứng dụng bên trong thư viện và gỡ lỗi chúng ở đó – Rem

+0

Cảm ơn @Rem, nó sẽ dễ dàng hơn để phục vụ một ứng dụng Góc bên trong bên trong ứng dụng góc chính? Những gì tôi muốn làm là có một nơi nào đó mà tôi có thể chạy nói guld phục vụ các thành phần và điều này sẽ tải một ứng dụng mà giới thiệu những gì các thành phần phổ biến có sẵn. –

-1

tôi tổ chức các thành phần của tôi như thế này:

/routes 
    /route1/ 
    route1component.ts 
    /route1child1 
    /route1child2 
    /route2/ 
    route2component.ts 
    /route2child1 
    /route2child2 

/apponents (project-level-reuse, must be used in at least 2 places with the app to be promoted to an apponent) 
    /project-reusable-component 

/components (cross-project-level-reuse, used across multiple projects) 
    /cross-project-reusable-component 

Giả sử sử dụng Git. Bây giờ trong "các thành phần", tôi thường chia sẻ các dự án này bằng cách sử dụng các mô-đun con Git sao cho các "thành phần" có thể sử dụng lại sẽ sống trong repo của riêng chúng và có thể được kéo vào bất kỳ dự án nào dưới dạng mô-đun con.

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