Sơ đồ khối là một bộ động lực bố cục có cấu trúc được sử dụng để biểu diễn các kiến trúc phần mềm phức tạp, các nền tảng phần cứng hoặc các mô hình tổ chức. Được giới thiệu sẵn trong Mermaid.js, bộ phậnblockđộng cơ xử lý bề mặt bố cục như một ma trận lưới toán học tuyệt đối. Điều này cung cấp kiểm soát chính xác về căn chỉnh cột, các ranh giới lồng ghép bố cục riêng biệt, các khối khoảng cách cấu trúc và các cấu hình kết nối cổng cạnh rõ ràng.
Hiểu về chiến lược ma trận lưới
Khác với các sơ đồ luồng dạng tự do tiêu chuẩn, nơi mà bố cục được suy đoán động, sơ đồ khối được xây dựng trên một hệ thống lưới tọa độ tuyến tính cứng nhắc:
- Ngưỡng cột:Bạn thiết lập một trần ngang nghiêm ngặt bằng cách sử dụng
columnstham số điều chỉnh. Khi lưới đầy các khối, các phần tử bổ sung sẽ tự động cuộn sang hàng tiếp theo một cách gọn gàng. - Định cỡ theo các trường lưới:Mặc định, mỗi khối chiếm một ô tọa độ duy nhất ($1 times 1$). Bạn có thể thay đổi hành vi này bằng cách gán chiều rộng cột rõ ràng để các phần tử bao phủ chính xác qua nhiều đường dẫn.
Cấu trúc cú pháp cơ bản
Mọi bố cục đều bắt đầu bằngblocktiêu đề khai báo. Tiếp theo là việc thiết lập dung lượng chiều rộng hàng bằng từ khóacolumnsvà khai báo các khối trên các dòng liên tiếp.
block
columns 3
componentA["Khối đầu tiên"]
componentB["Khối giữa"]
componentC["Khối bên phải"] ![]()
Tham chiếu cú pháp
Bảng dưới đây phân tích các tham số dữ liệu nền tảng, các từ khóa định dạng tùy chỉnh và các container cấu trúc được bộ thông dịch khối nhận diện một cách tự nhiên.
| Thành phần cú pháp | Yêu cầu kiểu | Mô tả và quy tắc bố cục hình ảnh |
|---|---|---|
| Khai báo | Định danh từ khóa | Khởi tạo bề mặt canvas khối ma trận lưới. Phải sử dụng chính xáckhối chuỗi tiêu đề. |
| Bộ cột | Từ khóa + Số nguyên | Xác định tổng số khe ngang trước khi chuyển dòng (ví dụ: cột 4). |
| Khối chuẩn | ID + Nhãn tùy chọn | Tạo một hộp dữ liệu chuẩn: id["Văn bản nhãn"]. Các bộ trang trí hình dạng tuân theo cú pháp sơ đồ luồng (ví dụ: (()) cho hình tròn, [()] cho cơ sở dữ liệu). |
| Ghi đè kích thước khối | Khối tham số dấu hai chấm | Ghi đè kích thước lưới bố cục mặc định $1 times 1$ bằng cách gán rõ ràng các khối chiều rộng cột tùy chỉnh: id:chiều rộng. |
| Yếu tố khoảng cách | Từ khóa được bảo lưu | Chèn một ô khoảng cách trống vô hình, cấu trúc $1 times 1$ vào hàng đang hoạt động bằng cách sử dụng chính xác từ khóa space keyword. Bạn có thể nhân độ rộng các khoảng cách ngay trên dòng như space:2. |
| Mũi tên khối | ID thực thể chuyên biệt | Hiển thị một hộp mũi tên chuyển tiếp dày, có cấu trúc bên trong một ô lưới: arrowId<["Nhãn"]>(hướng). Các hướng bao gồm lên, xuống, trái, phải. |
| Bao bọc tổng hợp | Khối / Khối kết thúc | Chèn một ma trận lưới con độc lập, tách biệt trực tiếp bên trong một ô khối cha: block:SubID ... end. Các khối con có thể khai báo giới hạn cột độc lập của riêng chúng. |
Tính năng nâng cao: Kích thước khối rõ ràng & Bộ điều chỉnh khoảng cách
Đối với bố cục bất đối xứng, bạn có thể truyền các thông số kích thước ngang rõ ràng trực tiếp lên các khối chuẩn hoặc bộ chia khoảng cách bằng cách sử dụng ký hiệu dấu hai chấm làm dấu phân cách (:chiều rộng). Điều này buộc các phần tử phải kéo dài qua nhiều vị trí lưới một cách rõ ràng.
block
cột 4
wideComponent["Tiêu đề Bảng điều khiển rộng"]:4
leftBar["Thanh bên"] space:2 rightBar["Bảng chính"] 
Tính năng nâng cao: Loại cạnh, Hướng và Tùy chọn kết nối
Các kết nối bên trong blockđộng cơ được chia thành các đường ngữ nghĩa chuẩn và các mũi tên khối bố cục cấu trúc. Các đường kết nối chuẩn hỗ trợ xác định ràng buộc hướng rõ ràng để chỉ định cách các đường bao quanh các phần tử.
1. Bộ nối đường chuẩn
Các kết nối khối sử dụng các toán tử liên kết chuẩn (-->, --, <-->). Tuy nhiên, bạn có thể điều khiển luồng bằng cách thêm hướng đi hoặc tham số điều chỉnh bên trong dấu ngoặc đơn:
A --> B: Vẽ một đường hướng đi tiêu chuẩn từ phần tử A đến phần tử B.A -- x B: Vẽ một đường kết nối kết thúc bằng dấu “X” cho thấy đường đi bị chặn.A -- o B: Vẽ một đường kết nối kết thúc bằng điểm nối hình tròn mở.
2. Mũi tên khối bố cục động
Mũi tên khối được xử lý như các thành phần bố cục thực tế, chiếm một khối chỉ số tọa độ thực tế trong ma trận ngân sách hàng của bạn. Chúng sử dụng các thuộc tính cú pháp lớn hơn và nhỏ hơn để ánh xạ các đường đi vật lý:
block
columns 3
producer["Người sản xuất Dữ liệu"]
midArrow<["Chuyển đổi Lưu lượng"]>(right)
consumer["Người tiêu thụ Dữ liệu"] 
Tính năng nâng cao: Đóng gói ma trận khối con (Nhóm hợp thành)
Phần block:idbọc chức năng như một môi trường ngữ cảnh hộp bố cục tách biệt. Một container nhóm ứng dụng có thể thiết lập số cột ngang riêng biệt bên trong một khối con, cho phép các thành phần phức tạp được nhóm chặt chẽ mà không ảnh hưởng đến khoảng cách của lưới bố cục mẫu canvas cha toàn cục.
block
columns 2
rootGateway["Cổng toàn cầu"]
block:microserviceCluster
columns 3
auth["Nút Xác thực"]
api["API Lõi"]
worker["Động cơ Người làm việc"]
end 
Bản thiết kế thực tế: Cơ sở hạ tầng đa tầng với bộ nhớ đệm
Bản thiết kế toàn diện, đa hàng này minh họa một cấu hình cơ sở hạ tầng sản xuất sạch sẽ. Nó thiết lập bố cục lưới xử lý 3 cột, sử dụng các thành phần cấu trúcspace các phần tử để tách biệt tầng cơ sở dữ liệu, ánh xạ một đường đi dày xuống phía dướiblockArrow, và tách biệt một bộ chứa hệ thống con nội bộ riêng biệt bằng cách nhúng block:id ... end bao bọc tổng hợp.
block
columns 3
%% Row 1: Dịch vụ đầu vào
dnsClient(("Khách hàng Web"))
loadBalancer["Cân bằng tải biên"]
space
%% Row 2: Luồng kết nối đi xuống các Microservices
space
downRoute<["Chuyển tiếp lưu lượng"]>(down)
space
%% Row 3: Khối môi trường ứng dụng tổng hợp
block:appCluster
columns 2
authService["Xác thực"]
apiEngine["Thợ làm việc API cốt lõi"]
end
space
database[("Cơ sở dữ liệu PostgreSQL")]
%% Thiết lập các đường căn chỉnh cấu trúc rõ ràng giữa các ma trận
loadBalancer --> appCluster
appCluster --> database 
Những lỗi cú pháp phổ biến & Giới hạn hệ thống
Khi biên dịch các bản đồ ma trận lưới chính xác, hãy lưu ý các kiểm tra xác thực sau để tránh lỗi phân tích cú pháp:
- Thực thi ngân sách cột:Hãy theo dõi cẩn thận số lượng cột của bạn. Nếu bạn chỉ định
columns 3và viết 4 khối tuần tự trên một hàng, khối thứ tư sẽ tự động chuyển xuống hàng thứ 2, điều này có thể làm hỏng các đường kết nối theo chiều trái sang phải mong muốn. - Thứ tự lồng ghép tổng hợp: Khi xây dựng các bộ chứa bên trong bằng cách sử dụng
block:id, bạn luôn phải đóng kín không gian làm việc lưới con bằng cách sử dụng từ khóaendtrên một dòng riêng biệt trước khi khai báo các phần tử tiếp theo. Không đóng khối sẽ làm dừng việc xây dựng sơ đồ. - Hạn chế mục tiêu mũi tên khối: Thuộc tính hướng được đóng trong dấu ngoặc đơn sau mũi tên khối (ví dụ như
(up),(down)) phải là một từ khóa viết thường khớp chính xác với từ khóa hệ thống. Viết hoa từ hướng sẽ dẫn đến lỗi xử lý. - Xung đột biên nhãn: Các bộ trang trí hình dạng sơ đồ luồng chuẩn (như dấu ngoặc đơn
()cho các hộp tròn hoặc dấu ngoặc nhọn{}đối với kim cương) được hỗ trợ hoàn toàn. Đảm bảo tất cả nhãn văn bản hiển thị bên trong các hình dạng sử dụng dấu ngoặc kép sạch để tránh loại bỏ ký tự.