Câu chuyện phía sau trình soạn thảo Markdown
Markdown là cách viết văn bản có định dạng mà vẫn đọc tự nhiên dưới dạng văn bản thuần. Dấu sao để nhấn mạnh, dấu thăng cho tiêu đề và gạch nối cho danh sách được lấy từ cách mọi người vẫn viết email. Trang này kể lại ý tưởng đơn giản ấy đã trở thành ngôn ngữ của tệp README, ghi chú và tài liệu như thế nào.
Sinh ra từ email
Năm 2004 John Gruber công bố Markdown trên trang Daring Fireball của mình với sự giúp đỡ của Aaron Swartz. Mục tiêu là văn bản dễ đọc và dễ viết ngay ở dạng gốc nhưng vẫn chuyển sang HTML gọn gàng. Nhiều quy ước đến từ email và các định dạng văn bản cũ hơn như Setext: gạch dưới một dòng bằng dấu bằng để làm tiêu đề, bao một từ bằng dấu sao để nhấn mạnh và bắt đầu dòng bằng gạch nối để tạo danh sách. Bộ chuyển đổi đầu tiên chỉ là một tập lệnh Perl.
Quá nhiều phương ngữ
Bản mô tả ban đầu để ngỏ nhiều trường hợp biên, chẳng hạn danh sách lồng nhau phải thụt vào bao nhiêu hoặc khi nào một dòng trống kết thúc một khối. Mỗi cách triển khai mới quyết định khác nhau, nên cùng một văn bản có thể hiển thị khác nhau trên các trang khác nhau. Năm 2014 John MacFarlane, Jeff Atwood và những người khác công bố một đặc tả chính xác với hàng trăm ví dụ. Ban đầu nó tên là Standard Markdown, rồi được đổi thành CommonMark sau khi Gruber phản đối.
GitHub Flavored Markdown
GitHub đưa Markdown vào công việc hằng ngày của lập trình viên qua tệp README, issue và bình luận. Năm 2017 GitHub công bố đặc tả chính thức cho GitHub Flavored Markdown như một tập mở rộng chặt chẽ của CommonMark. Nó bổ sung bảng có căn cột, danh sách việc cần làm có ô đánh dấu, gạch ngang bằng hai dấu ngã và liên kết được nhận diện tự động. Các khối mã có rào kèm tên ngôn ngữ, vốn đã phổ biến, giúp tô sáng cú pháp trở nên khả thi.
Vì sao bản xem trước được làm sạch
Markdown cho phép HTML thô, tiện lợi nhưng rủi ro. Nếu một trang hiển thị Markdown của người khác, một thẻ script ẩn, thuộc tính onerror trên hình ảnh hoặc liên kết javascript có thể chạy mã trong trình duyệt của người đọc, một kiểu tấn công gọi là cross site scripting. Vì vậy trình soạn thảo này hiển thị HTML thô như văn bản, loại bỏ các lược đồ liên kết không an toàn và lọc kết quả qua danh sách phần tử và thuộc tính được phép trước khi hiển thị.
Hỏi thường xuyên
Ai đã phát minh ra Markdown?
John Gruber tạo ra Markdown năm 2004, với Aaron Swartz là cộng sự và người thử nghiệm quan trọng ngay từ đầu.
CommonMark và GFM khác nhau thế nào?
CommonMark là đặc tả chính xác cho phần lõi của Markdown. GitHub Flavored Markdown xây dựng trên nó và bổ sung bảng, danh sách việc cần làm, gạch ngang và liên kết tự động.
Vì sao HTML của tôi hiển thị như văn bản?
Vì an toàn. HTML thô có thể mang theo tập lệnh, nên trình soạn thảo thoát nó thành văn bản và chỉ tạo các phần tử được biết là vô hại.
Sẵn sàng thử chưa?
Mở PictorX trong trình duyệt của bạn — không cài đặt, không cần thiết thẻ tín dụng để khởi động.
Mở trình soạn thảo Markdown