Giới thiệu

Cấu trúc vi bộ đã phân hủy một ứng dụng giao diện điều khiển thành các mô- đun nhỏ hơn, độc lập được triển khai. Tính năng này đưa ra thách thức quản lý trạng thái, cấu hình và giao tiếp được chia sẻ. Mô hình đơn lẻ cung cấp một giải pháp có kiểm soát bằng cách đảm bảo rằng một lớp học hay mô- đun chỉ có một cách đơn giản, cung cấp một điểm cho phép truy cập. Tuy nhiên, áp dụng mô hình này trong một khung lề nhỏ đòi hỏi thiết kế cẩn thận để tránh các mối nối chặt chẽ, trạng thái không cân đối và các vấn đề vòng lặp. Bài này chứng minh cho các tính năng sử dụng Sington, cùng với cú trượt, để có lợi ích từ các nhóm được phân chia nhỏ của các dịch vụ riêng lẻ, mà không cần thiết lập thiết lập thiết lập thiết bị phụ thuộc vào trung tâm của chúng.

Điều gì khiến một người sống độc thân ở các vùng bị hạn chế?

Trong một ứng dụng trang đơn, một Singleton thường là toàn cầu và dễ thực hiện. Trong một thiết lập vi mô, mỗi mô- đun có thể được xây dựng, kiểm tra và triển khai độc lập. Ứng dụng này có thể nạp nhiều phần nhỏ từ các nguồn gốc khác nhau, mỗi phần mềm JavaScript riêng của nó. Môi trường này phức tạp mô- đun kiểu Singleton cổ điển vì các mô- đun không tự nhiên chia sẻ một không gian riêng lẻ trừ khi được cấu hình rõ ràng. Những thiết lập đơn phải được đặt trong một khung lề nhỏ, thường hoặc máy chủ, qua giao diện và truy cập qua một giao diện tốt, như một mô- đun chia sẻ thông tin, hoặc Web.

Trường hợp sử dụng chung cho các đơn vị chung bao gồm:

  • Tự động động động hóa và tính năng cờ – một đối tượng duy nhất có thể tham khảo ý kiến để xác định hành vi.
  • Ký hiệu xác thực ) – một nguồn lẽ thật duy nhất cho người dùng xác thực và giải thoát.
  • Xe buýt sự kiện ) – một cơ chế bán hàng để ngăn chặn sự kết nối trực tiếp.
  • Các cửa hàng quản lý kiểu hệ thống – một cửa hàng trung tâm (v. g., Redux hay Zu standing) mà modules chia sẻ.
  • Sự tăng cường và sự quốc tế ) – một đối tượng địa phương duy nhất và một từ điển dịch.

Khi thực hiện đúng cách, một đơn vị cung cấp sự nhất quán và giảm thiểu sự khởi đầu dư thừa. khi làm sai, nó trở thành một thế giới ẩn giấu mà phá vỡ sự tóm tắt và làm cho việc gỡ lỗi một cơn ác mộng.

Những thực hành tốt nhất để làm tan nát lòng người khác

1. Dùng cấu trúc Module và chia sẻ thời gian Xây dựng

Những công cụ xây dựng hiện đại như « Tổ Chức của Module 5 » cho phép các đội có quyền xác định quan hệ phụ thuộc chung. Bằng cách đánh dấu thư viện (như một dịch vụ một phần) là một mô- đun được chia sẻ, vỏ có thể nạp nó một lần và cung cấp cùng một thể thức cho mọi phần nhỏ. Cách này tránh làm ô nhiễm phạm vi toàn cầu trong khi đảm bảo chỉ có một thể hiện hữu vào lúc chạy.

Ví dụ, phơi bày một chức năng nhà máy từ một mô-đun chung:

Sau đó tuyên bố mô- đun này như được chia sẻ trong cấu hình liên kết. Tất cả các phần nhỏ có chữ nhập [FLT: 1] nhận cùng một thể hiện, được quản lý bởi thời gian chạy.

2. Khởi đầu chậm chạp

Tạo ra một ảnh riêng lẻ khi các vật dụng nạp có thể bỏ qua bộ nhớ nếu bộ nhớ nhỏ sử dụng nó không bao giờ gắn kết. Việc tạo ra bộ tạo khởi động lười biếng: tạo chỉ một bộ nhớ đơn giản khi yêu cầu lần đầu tiên. Cấu hình này cũng làm cho việc thử nghiệm đơn giản hơn vì chỉ một bộ nhớ có thể được đặt lại hoặc thay thế trong khi thiết lập thử nghiệm. Hãy dùng một cách tiếp cận kiểm tra và tạo ra với một biến số tùy chọn có sẵn, như được hiển thị ở trên, hoặc dùng một [FLT] cho khả năng khởi động hoá [FT] để tìm kiếm dấu phẩy (v. d. việc cấu hình cấu hình hệ thống cấu hình hệ thống « fI.)

3. Giới hạn truy cập toàn cục

Ngay cả khi đã đặt một miếng đơn vào để dễ truy cập. Hãy kháng cự ham muốn đó. Các biến số toàn cầu tạo sự va chạm tên, làm cho mật mã khó kiểm tra hơn, và vi phạm các nguyên tắc của sự cô lập vi đối diện. Thay vì thế, hãy sử dụng mô- đun nhập khẩu hoặc tiêm phụ thuộc của trình duyệt. Nếu bạn cần phải sử dụng phạm vi toàn cầu, tên của một công cụ (v. d. (v., ) và tài liệu rõ ràng.

4. Quản lý xe đạp suốt đời

Một bộ đệm mà bộ nhớ tạm có thể bị lỗi khi người dùng định vị và trở lại.

  • Sự khởi đầu ) – sự sáng tạo lười biếng khi cần thiết lần đầu.
  • Đặt – phương pháp để xoá trạng thái đã lưu tạm, kích hoạt trên microfrontend unmount hoặc người dùng bản đăng xuất.
  • Disposal ) – lau chùi những người nghe sự kiện hoặc người hẹn giờ do đơn đặt để tránh bị rò rỉ trí nhớ.

Thí dụ, một đơn xác thực nên vạch trần một phương pháp làm cho người dùng không còn chú ý đến biểu tượng và những người đăng ký nữa.

5 An toàn được an toàn khi chấp nhận

Những phần mềm phụ thuộc vào người công nhân Web hoặc Chia sẻ ArryBuffer cần phải đề phòng điều kiện đua. Mặc dù JavaScript trên chỉ một mạch được đọc riêng lẻ, các mã Aynronous có thể tạo ra mối nguy hiểm cho chủng tộc. Dùng lời hứa, oldxes (với thư viện như [FLT: 6), hoặc các hoạt động nguyên tử nếu đơn vị được truy cập cùng một lúc từ các mô- đun gọi là liên tiếp. Trong phần lớn các trình duyệt, điều này không có gì khác hơn trong tổ hợp phím Node.js hay môi trường công nhân, nhưng nó trả tiền để thiết kế an toàn.

6 Giới hạn các công việc đơn lẻ

Không phải mọi tài nguyên chung đều cần một bộ phim riêng lẻ. Trước khi tạo ra một tài nguyên, hãy hỏi: Phải chăng tài nguyên này phải là một thể hiện duy nhất? Có thể nhiều bản sao song song với nhau mà không bị hư hại? Các đơn lẻ hoạt động tốt nhất cho các mối quan tâm (lobin, cấu hình) thay vì cho trạng thái riêng của ứng dụng. Việc sử dụng các tác nhân đơn có thể dẫn đến một “vật thể bị vi mô phụ thuộc vào, phá hoại khả năng triển độc lập mà các vật nhỏ nhất có thể đạt được.

Những cạm bẫy thông thường và cách tránh chúng

Những phụ thuộc và thử thách khó khăn giấu kín

Một hình đơn truy cập qua nhập khẩu tạo một quan hệ phụ thuộc ngầm. Khi thử nghiệm một phần cực nhỏ trong sự cô lập, trạng thái của đơn có thể chảy giữa các thử nghiệm. Bắt đầu bằng cách cho phép ảnh đơn được thay thế bằng một lời chế nhạo. Đặt một hoặc phương pháp này chỉ được dùng trong phát triển/ thử nghiệm, và bảo vệ nó bằng cách kiểm tra môi trường. Thay vào đó, hãy dùng việc tiêm phụ thuộc để mỗi phần phụ thuộc có thể nhận được một tài liệu tham khảo riêng lẻ, làm cho việc kiểm soát hoàn toàn khả năng kiểm soát.

Ngắt Môđun Giải tán

Các phần nhỏ nên có khả năng thất bại độc lập. Nếu một phần tư bị sụp đổ hay giữ trạng thái không hợp lệ, nó có thể giảm tất cả các mô- đun phụ thuộc vào nó. Xây dựng tính kiên cường bằng cách bọc khả năng truy cập « thử-click », và cung cấp hành vi rơi ngược lại. Lấy thí dụ, nếu cấu hình « cấu hình đơn » không tải được, mỗi phần nhỏ có thể rơi vào trạng thái mặc định cứng.

Khả năng tính toán dưới tải

Khi một bộ phận đơn được truy cập thông qua một bộ phận trung tâm (v. d., một bộ phát ra sự kiện toàn cầu), các sự kiện có độ phóng đại cao có thể tạo một nút cổ chai. Dùng đường kính, cách cắt, hoặc chỉ công nhân để ngăn cản một bộ chỉ công cụ trở thành điểm nóng. Hãy xem xét việc sử dụng một kiểu mẫu như CQRS hay sự kiện cho giao tiếp qua đường kính phức tạp hơn là một bộ chỉ đơn giản.

Phiên bản 2 trùng nhau trong Phụ thuộc đã chia sẻ

Nếu hai phần trước cần thiết hai phần khác nhau của cùng một thư viện được dùng như một phần của một phần, Module Union có thể hạ cấp hoặc nâng cấp thành một phiên bản thông thường. Điều này thường an toàn, nhưng nó có thể phá vỡ nếu thư viện của chúng ta thay đổi. Pin chia sẻ các phụ thuộc đơn lẻ trong phạm vi phiên bản và kiểm tra kỹ lưỡng trong một môi trường sản xuất gương.

Những sự lựa chọn khác cho gương mẫu độc thân

Không phải mọi tài nguyên chung đều cần mẫu Singleton. Đánh giá các lựa chọn này khi Máy móc gốc cổ điển cảm thấy quá cứng:

  • Những nhà cung cấp văn bản – Trong phần đối diện phản ứng, bọc vỏ với một ngữ cảnh đi qua cấu hình hoặc trạng thái hạ vị bằng các đạo cụ. Mỗi phần nhỏ có thể tiêu thụ văn cảnh mà không phụ thuộc vào toàn cầu.
  • Dịch vụ và Thông điệp qua – Dùng hoặc xe buýt sự kiện nhỏ. Việc này giữ các mô- đun bị phân hủy và cho phép nhiều trường hợp tồn tại nếu cần thiết.
  • Các cửa hàng hoạt động với các tài liệu « Instance ) – tạo các cửa hàng riêng lẻ trong mỗi giao diện nhỏ, nhưng đồng bộ hoá trạng thái quan trọng qua một cầu nhẹ. Tính năng này tạo sự cô lập cho mỗi mô- đun trong khi vẫn còn hiệu lực dữ liệu chia sẻ.
  • Thay đổi xử lý ) – Khung khung như InversifyJS hoặc các hộp riêng cho bạn đăng ký một phạm vi mộtton ở mức container, mà có thể được đo vào vỏ hoặc tới phần phụ của microfrontend.

Kết luận

Mô hình Singleton vẫn còn giá trị trong cấu trúc vi trước khi được áp dụng. Nó vượt trội trong việc cung cấp một nguồn lẽ thật duy nhất cho các dịch vụ không liên quan đến tính chất, xác thực. Bằng cách sử dụng mô- đun dựa trên sự chia sẻ, sự khởi đầu lười biếng, quản lý cuộc sống một cách rõ ràng, và có thể kiểm soát được, các đội có thể thu thập lợi ích của đơnton mà không rơi vào bẫy của trạng thái toàn cầu và mối nối chặt chẽ. Luôn luôn cân nhắc một tấn chống lại nguyên tắc nhỏ của sự độc lập, và cân nhắc các mô hình thay thế khi sự cô lập là tối quan trọng. Với các thực hành vi này, bạn có thể xây dựng, có thể duy trì sự kết hợp với cả hai hệ thống tự trị và tự trị.