Defective Code Logo

Total Downloads Latest Stable Version Latest Stable Version

English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文

# Cảnh Báo Dịch Thuật

Tài liệu này đã được dịch tự động. Nếu có lỗi dịch thuật, vui lòng mở một pull request trên dự án và thêm tệp đã dịch vào docs/{ISO 639-1 Code}.md.

Giới thiệu

MJML là một ngôn ngữ đánh dấu được thiết kế đặc biệt để đơn giản hóa quá trình mã hóa email đáp ứng. Cú pháp ngữ nghĩa của nó đảm bảo sự dễ dàng và đơn giản, trong khi thư viện thành phần tiêu chuẩn phong phú của nó tăng tốc phát triển và giảm độ phức tạp của mã email của bạn. Công cụ mã nguồn mở của MJML tạo ra HTML chất lượng cao, đáp ứng và tuân thủ các thực hành tốt nhất. Nếu bạn đã từng trải qua những khó khăn khi làm việc với Outlook, gói này được thiết kế dành cho bạn.

Triển khai MJML của chúng tôi hoạt động như một lớp bao bọc cho API chính thức của MJML. Nó cho phép biên dịch MJML thành HTML trực tiếp trong PHP, mà không cần NodeJS. Gói này lý tưởng cho các ứng dụng PHP muốn tích hợp MJML mà không cần cài đặt NodeJS và MJML CLI.

Ví dụ

// Không sử dụng Laravel
(new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// HTML đã được nén
(new MJML)->minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Sử dụng Laravel
MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Sử dụng Laravel và HTML đã được nén
MJML::minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
# Cài đặt
 
1. Đầu tiên, thêm đoạn sau vào tệp `composer.json` của bạn để hướng dẫn gói của chúng tôi tải các tệp nhị phân đúng cho hệ điều hành của bạn khi gói của chúng tôi được cài đặt. Các tệp nhị phân sẽ được tải xuống sau khi bạn chạy `install`, `update`, hoặc `dump-autoload`.
 
```json
{
"post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]
}
```
 
> Tệp nhị phân MJML sẽ được lấy từ CDN của chúng tôi và lưu trong thư mục "bin" của gói này trong quá trình cài đặt hoặc cập nhật của composer. Đảm bảo rằng bạn đã tải các tệp nhị phân cần thiết cho cả môi trường cục bộ và sản xuất của bạn.
 
Mặc định, `all` sẽ tải tất cả các tệp nhị phân mà chúng tôi hỗ trợ. Chúng tôi khuyến nghị giới hạn điều này xuống các hệ điều hành và kiến trúc hệ thống bạn cần để tiết kiệm băng thông và thời gian cài đặt. Sau đây là các tệp nhị phân có sẵn.
 
| Hệ điều hành | Kiến trúc | Lệnh Composer Post Update |
| ---------------- | ------------ | --------------------------------------------- |
| Tất cả | Tất cả | `DefectiveCode\MJML\PullBinary::all` |
| Darwin (MacOS) | arm64 | `DefectiveCode\MJML\PullBinary::darwin-arm64` |
| Darwin (MacOS) | x64 | `DefectiveCode\MJML\PullBinary::darwin-x64` |
| Linux | arm64 | `DefectiveCode\MJML\PullBinary::linux-arm64` |
| Linux | x64 | `DefectiveCode\MJML\PullBinary::linux-x64` |
 
2. Tiếp theo, cài đặt gói PHP bằng cách chạy lệnh composer sau:
```bash
composer require defectivecode/mjml
```
3. Xong rồi! Nếu sử dụng Laravel, gói của chúng tôi sẽ tự động cài đặt bằng cách sử dụng tính năng phát hiện gói của Laravel.

Sử dụng (Không có Laravel)

Xem cách sử dụng với Laravel bên dưới nếu bạn đang sử dụng Laravel.

Kết xuất MJML

Để kết xuất MJML, chỉ cần truyền chuỗi MJML của bạn vào phương thức render:

use DefectiveCode\MJML;
 
$html = (new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Xác thực MJML

Để xác thực MJML, chỉ cần truyền chuỗi MJML của bạn vào phương thức isValid:

use DefectiveCode\MJML;
 
$isValid = (new MJML)->isValid(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
# Sử dụng (Với Laravel)
 
## Kết xuất MJML
 
Để kết xuất MJML, chỉ cần truyền chuỗi MJML của bạn vào phương thức `render` trên facade MJML:
 
```php
use DefectiveCode\MJML\Facades\MJML;
 
$html = MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Xác thực MJML

Để xác thực MJML, chỉ cần truyền chuỗi MJML của bạn vào phương thức isValid trên facade MJML:

use DefectiveCode\MJML\Facades\MJML;
 
$isValid = MJML::isValid(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Cấu hình

Bạn có thể xuất bản tệp cấu hình bằng cách sử dụng lệnh sau:

php artisan vendor:publish --provider="DefectiveCode\MJML\MJMLServiceProvider"

Điều này sẽ tạo một tệp cấu hình mjml.php trong thư mục config của bạn. Tất cả các tùy chọn được liệt kê trong tệp cấu hình sẽ được truyền vào đối tượng config khi bạn sử dụng facade MJML.

# Cấu hình
 
Tất cả các tùy chọn cấu hình có thể được thiết lập bằng cách gọi trực tiếp các phương thức sau trên đối tượng MJML.
 
```php
use DefectiveCode\MJML;
 
$html = (new MJML)
->setMinify(true)
->setBeautify(false)
->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Gói của chúng tôi tuân theo cấu hình tương tự như gói MJML chính thức ngoại trừ các điểm sau:

Phông chữ

Gói của chúng tôi sử dụng các phông chữ sau theo mặc định:

Bạn có thể thay đổi phông chữ bằng cách sử dụng các phương thức sau:

Bình luận

Bình luận được giữ lại theo mặc định. Nếu bạn muốn xóa bình luận, bạn có thể sử dụng phương thức removeComments().

Bạn cũng có thể hoàn tác removeComments() bằng cách gọi phương thức keepComments().

Bỏ qua Bao gồm

Theo mặc định, gói của chúng tôi sẽ bao gồm bất kỳ thẻ mj-include. Bạn có thể điều chỉnh hành vi này bằng cách gọi phương thức ignoreIncludes(bool $ignore).

Làm đẹp

Gói của chúng tôi sẽ làm đẹp HTML bằng js-beautify với các tùy chọn mặc định sau:

Trong khi js-beautify sử dụng snake_case để cung cấp các tùy chọn, bạn nên sử dụng camelCase khi sử dụng gói của chúng tôi. Chúng tôi đã chọn điều này để giữ cho gói của chúng tôi nhất quán với các tùy chọn cấu hình khác. Gói của chúng tôi sẽ tự động chuyển đổi các tùy chọn camelCase thành snake_case.

Bạn có thể ghi đè bất kỳ tùy chọn nào trong số này bằng cách cung cấp một cấu hình js-beautify hợp lệ bằng cách sử dụng các phương thức sau:

Nén

Gói của chúng tôi sẽ nén HTML bằng html-minifier-terser với các tùy chọn mặc định sau:

Bạn có thể ghi đè bất kỳ tùy chọn nào trong số này bằng cách cung cấp một cấu hình hợp lệ html-minifier-terser bằng cách sử dụng các phương thức sau:

Mức độ xác thực

Gói của chúng tôi sẽ xác thực MJML bằng mức độ xác thực soft theo mặc định. Bạn có thể thay đổi điều này bằng cách sử dụng phương thức validationLevel(ValidationLevel $validationLevel). Các mức độ xác thực sau có sẵn:

Đường dẫn tệp

Gói của chúng tôi sẽ sử dụng thư mục . theo mặc định. Bạn có thể thay đổi điều này bằng cách gọi phương thức filePath(string $path).

Juice

Chúng tôi không cung cấp bất kỳ tùy chọn juice nào theo mặc định. Bạn có thể thêm các tùy chọn juice bằng cách sử dụng các phương thức sau:

Cảm ơn bạn đã chọn gói mã nguồn mở của chúng tôi! Vui lòng dành chút thời gian để xem qua các hướng dẫn hỗ trợ này. Chúng sẽ giúp bạn tận dụng tối đa dự án của chúng tôi.

Hỗ Trợ Dựa Trên Cộng Đồng

Dự án mã nguồn mở của chúng tôi được thúc đẩy bởi cộng đồng tuyệt vời của chúng tôi. Nếu bạn có câu hỏi hoặc cần trợ giúp, StackOverflow và các tài nguyên trực tuyến khác là lựa chọn tốt nhất của bạn.

Lỗi và Ưu Tiên Tính Năng

Thực tế của việc quản lý một dự án mã nguồn mở có nghĩa là chúng tôi không thể giải quyết ngay lập tức mọi lỗi hoặc yêu cầu tính năng được báo cáo. Chúng tôi ưu tiên các vấn đề theo thứ tự sau:

1. Lỗi Ảnh Hưởng Đến Sản Phẩm Trả Phí Của Chúng Tôi

Các lỗi ảnh hưởng đến sản phẩm trả phí của chúng tôi sẽ luôn là ưu tiên hàng đầu của chúng tôi. Trong một số trường hợp, chúng tôi chỉ giải quyết các lỗi ảnh hưởng trực tiếp đến chúng tôi.

2. Yêu Cầu Kéo Từ Cộng Đồng

Nếu bạn đã xác định được một lỗi và có giải pháp, vui lòng gửi yêu cầu kéo. Sau các vấn đề ảnh hưởng đến sản phẩm của chúng tôi, chúng tôi ưu tiên cao nhất cho các bản sửa lỗi do cộng đồng đóng góp. Sau khi được xem xét và phê duyệt, chúng tôi sẽ hợp nhất giải pháp của bạn và ghi nhận sự đóng góp của bạn.

3. Hỗ Trợ Tài Chính

Đối với các vấn đề ngoài các danh mục đã đề cập, bạn có thể chọn tài trợ cho việc giải quyết chúng. Mỗi vấn đề mở đều được liên kết với một biểu mẫu đặt hàng nơi bạn có thể đóng góp tài chính. Chúng tôi ưu tiên các vấn đề này dựa trên số tiền tài trợ được cung cấp.

Đóng Góp Cộng Đồng

Mã nguồn mở phát triển mạnh khi cộng đồng của nó hoạt động. Ngay cả khi bạn không sửa lỗi, hãy xem xét đóng góp thông qua cải tiến mã, cập nhật tài liệu, hướng dẫn, hoặc hỗ trợ người khác trong các kênh cộng đồng. Chúng tôi khuyến khích mạnh mẽ mọi người, như một cộng đồng, hỗ trợ công việc mã nguồn mở.

Để nhắc lại, DefectiveCode sẽ ưu tiên các lỗi dựa trên cách chúng ảnh hưởng đến sản phẩm trả phí của chúng tôi, các yêu cầu kéo từ cộng đồng, và sự hỗ trợ tài chính nhận được cho các vấn đề.

# Giấy phép - Giấy phép MIT
 
Bản quyền © Defective Code, LLC. Bảo lưu mọi quyền
 
Quyền được cấp miễn phí cho bất kỳ cá nhân nào có được bản sao của phần mềm này và các tệp tài liệu liên quan (gọi là "Phần mềm"), để sử dụng Phần mềm mà không bị hạn chế, bao gồm nhưng không giới hạn quyền sử dụng, sao chép, sửa đổi, hợp nhất, xuất bản, phân phối, cấp phép lại và/hoặc bán các bản sao của Phần mềm, và cho phép các cá nhân mà Phần mềm được cung cấp để làm như vậy, tuân theo các điều kiện sau:
 
**Thông báo bản quyền trên và thông báo cấp phép này phải được bao gồm trong tất cả các bản sao hoặc phần lớn của Phần mềm.**
 
PHẦN MỀM ĐƯỢC CUNG CẤP "NGUYÊN TRẠNG", KHÔNG CÓ BẢO HÀNH DƯỚI BẤT KỲ HÌNH THỨC NÀO, DÙ LÀ RÕ RÀNG HAY NGỤ Ý, BAO GỒM NHƯNG KHÔNG GIỚI HẠN CÁC BẢO HÀNH VỀ KHẢ NĂNG MUA BÁN, PHÙ HỢP VỚI MỤC ĐÍCH CỤ THỂ VÀ KHÔNG VI PHẠM. TRONG MỌI TRƯỜNG HỢP, CÁC TÁC GIẢ HOẶC CHỦ SỞ HỮU BẢN QUYỀN KHÔNG CHỊU TRÁCH NHIỆM VỀ BẤT KỲ YÊU CẦU, THIỆT HẠI HOẶC TRÁCH NHIỆM NÀO KHÁC, DÙ LÀ TRONG HỢP ĐỒNG, SAI LẦM CÁ NHÂN HAY CÁCH KHÁC, PHÁT SINH TỪ, NGOÀI HOẶC LIÊN QUAN ĐẾN PHẦN MỀM HOẶC VIỆC SỬ DỤNG HOẶC CÁC GIAO DỊCH KHÁC TRONG PHẦN MỀM.
MJML - Defective Code