0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Hành trình từ thất vọng đến nguồn mở với SnapDOM

Đăng vào 4 tháng trước

• 5 phút đọc

Hành trình từ thất vọng đến nguồn mở với SnapDOM

Tôi bắt đầu phát triển SnapDOM vào tháng 4 năm nay. Ban đầu, nó không phải là một thư viện độc lập mà chỉ là một công cụ nội bộ cho dự án giao diện người dùng có thể phóng to (Zumly) mà tôi đang xây dựng. Để làm cho dự án đó hoạt động, tôi cần một cách để chụp các phần tử DOM với tốc độ và độ chính xác cao. Những thư viện chuyển đổi DOM thành hình ảnh hiện có như html2canvas thường gặp phải những vấn đề nhỏ nhưng quan trọng: thiếu các pseudo-element, sai sót trong việc hiển thị phông chữ, bỏ qua Shadow DOM, hoặc không hoạt động trên Safari. Điều bắt đầu như một bản hack nội bộ nhanh chóng đã dần phát triển thành một dự án độc lập.

Mở mã nguồn cho SnapDOM đã thay đổi mọi thứ. Bỗng nhiên, khán giả không chỉ là tôi mà là bất kỳ ai với những quirk riêng của trình duyệt, CSS và HTML. Đó là khi tôi nhận ra bề mặt tấn công thực sự rộng lớn. Mọi sự kết hợp của các engine, cấu trúc DOM, kiểu dáng và tài nguyên bên ngoài có thể gãy theo những cách không ngờ tới. Đôi khi, điều đó cảm thấy quá sức, nhưng tôi đã học cách xem mỗi lỗi là một mẫu có thể tái tạo: cô lập, sửa chữa và rút ra bài học.

Nguyên tắc hướng dẫn

Từ đầu, hai nguyên tắc hướng dẫn công việc của tôi là độ chính xác và tốc độ. Việc chụp “mọi chi tiết” sẽ không còn ý nghĩa nếu quá trình đó quá chậm, vì vậy tôi đã dành nhiều thời gian cho các chiến lược lưu trữ, cập nhật gia tăng và sao chép DOM hiệu quả. Việc benchmark so với các thư viện hiện có đã trở thành một phần của thói quen. Hiệu suất chưa bao giờ là một điều suy nghĩ sau — nó luôn quan trọng như độ chính xác.

Bên cạnh kỹ thuật

Về mặt kỹ thuật, SnapDOM đã đẩy tôi vào các chiến lược sao chép DOM, lưu trữ, các phương pháp nhúng phông chữ, các thủ thuật đặc thù cho trình duyệt và những sự đánh đổi liên tục giữa độ chính xác và hiệu suất. Về mặt cá nhân, nó cũng đã rất giáo dục: kiên nhẫn, khiêm tốn và học cách lắng nghe người dùng. Một trong những khoảnh khắc tốt nhất là nhận được các PR chu đáo và các trường hợp tái tạo rõ ràng — sự hợp tác thực sự đã làm cho dự án trở nên tốt hơn. Sự tôn trọng thể hiện trong những đóng góp này đã trở thành một trong những phần động lực nhất của hành trình.

Cột mốc quan trọng

Một cột mốc khác: chỉ sau vài tháng, SnapDOM đã có hai nhà tài trợ đầu tiên trên GitHub và đã đạt hơn 6k sao trên GitHub. Nhận biết rằng mọi người tìm thấy giá trị đủ để tài trợ cho dự án, và hàng ngàn người khác quan tâm đủ để đánh dấu nó, thật sự rất đáng giá.

Tôi cũng đang thiết kế một hệ thống plugin, để lõi của nó vẫn nhẹ trong khi các tính năng như cắt, bộ lọc, hoặc các nhà xuất khẩu thay thế có thể sống như các phần mở rộng. Nó chưa được hợp nhất vào dòng chính, nhưng đó là một hướng đi mà tôi rất hào hứng — và một lớp phức tạp khác để quản lý khi dự án phát triển.

Tương lai của SnapDOM

Vẫn còn sớm, nhưng việc nhìn lại hành trình từ tháng 4 đến nay thật có ý nghĩa. Điều bắt đầu như một công cụ hỗ trợ nhỏ cho một giao diện người dùng có thể phóng to đã trở thành một dự án mã nguồn mở với những người dùng thực tế, các đóng góp, nhà tài trợ và sự tôn trọng từ cộng đồng. Việc cân bằng giữa các khó khăn kỹ thuật và khía cạnh con người của mã nguồn mở đã biến điều này thành một trong những trải nghiệm đáng giá nhất mà tôi đã có cho đến nay.

Cảm ơn bạn, Martin

Tài nguyên tham khảo

Các thực tiễn tốt nhất

  • Tối ưu hóa hiệu suất: Luôn thực hiện benchmark và so sánh với các thư viện khác để cải thiện hiệu suất của SnapDOM.
  • Ghi chép rõ ràng: Đảm bảo mọi thay đổi đều được ghi chép đầy đủ để dễ dàng theo dõi và sửa lỗi sau này.

Những cạm bẫy phổ biến

  • Không kiểm tra trên nhiều trình duyệt: Việc thiếu thử nghiệm trên nhiều trình duyệt có thể dẫn đến những lỗi không mong muốn.
  • Quá chú trọng vào tính năng: Đôi khi, việc phát triển quá nhiều tính năng có thể làm giảm hiệu suất tổng thể của thư viện.

Mẹo về hiệu suất

  • Sử dụng các kỹ thuật lưu trữ thông minh để giảm thiểu thời gian xử lý.
  • Tinh chỉnh các hàm sao chép DOM để tối ưu hóa tốc độ.

Giải quyết sự cố

  • Lỗi hiển thị: Kiểm tra các pseudo-elements và các thành phần khác không được hiển thị đúng cách và tìm cách khắc phục.
  • Khả năng tương thích trình duyệt: Đảm bảo rằng mọi tính năng hoạt động trên tất cả các trình duyệt phổ biến.

Câu hỏi thường gặp

SnapDOM là gì?

SnapDOM là một thư viện mã nguồn mở giúp chụp và chuyển đổi các phần tử DOM thành hình ảnh với độ chính xác và tốc độ cao.

Ai có thể sử dụng SnapDOM?

Bất kỳ ai làm việc với HTML, CSS và JavaScript đều có thể sử dụng SnapDOM để cải thiện quy trình làm việc của họ.

Làm thế nào để bắt đầu với SnapDOM?

Bạn có thể bắt đầu bằng cách truy cập tài liệu trên GitHub và làm theo hướng dẫn cài đặt và sử dụng.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào