14 điểm bởi GN⁺ 2025-03-30 | 1 bình luận | Chia sẻ qua WhatsApp
  • Framework web được thiết kế để xây dựng sản phẩm nhanh chóng bằng Python (fork từ Django)
  • Có thể bắt đầu phát triển cục bộ chỉ với một lệnh duy nhất, và chuyển sang production thông qua dashboard cùng feature flag
    • Clone starter kit để bắt đầu nhanh
  • Bao gồm gói plain cốt lõi và các gói mở rộng chính thức có thể cài đặt tùy chọn

Các tính năng của gói plain

  • Kết nối URL pattern với các hàm view Python
  • Xử lý HTTP request và response
  • Render HTML bằng template Jinja
  • Form để xử lý dữ liệu nhập từ người dùng
  • Cung cấp giao diện dòng lệnh (CLI)
  • Có thể phục vụ static assets như CSS, JS, hình ảnh
  • Mở rộng tính năng ứng dụng thông qua middleware
  • Dễ dàng tích hợp các gói chính thức và bên thứ ba
  • Cung cấp chức năng kiểm tra trước khi chạy ứng dụng (preflight check system)

Các tính năng mở rộng thông qua các gói first-party

  • plain.models: Cung cấp ORM để lưu trữ dữ liệu trên Postgres, MySQL, SQLite
  • plain.cache: Giải pháp cache hoạt động cùng cơ sở dữ liệu hiện có
  • plain.email: Cung cấp cấu hình và chức năng gửi email cho toàn bộ ứng dụng
  • plain.sessions: Có thể đọc và ghi session dựa trên cơ sở dữ liệu
  • plain.worker: Giải pháp tác vụ nền hỗ trợ cơ sở dữ liệu hiện có
  • plain.api: Có thể xây dựng JSON API bằng kiến trúc view dựa trên class

Liên quan đến xác thực

  • plain.auth: Cung cấp nền tảng để thêm người dùng, xác thực request và giới hạn quyền truy cập vào view
  • plain.oauth: Giải pháp OAuth linh hoạt hỗ trợ social login hiện đại và truy cập API
  • plain.passwords: Hỗ trợ đăng nhập dựa trên mật khẩu theo cách truyền thống
  • plain.loginlink: Cung cấp liên kết đăng nhập một lần không cần mật khẩu
  • plain.passkeys: Dự kiến cung cấp tính năng đăng nhập không mật khẩu

Quản trị

  • plain.admin: Cung cấp dashboard quản trị có thể tùy biến hoàn toàn
  • plain.flags: Cho phép kiểm soát nội dung theo từng người dùng bằng feature flag dựa trên cơ sở dữ liệu
  • plain.support: Cung cấp hỗ trợ khách hàng mà không cần dịch vụ bên thứ ba
  • plain.redirection: Giám sát 404 và quản lý chuyển hướng trong cơ sở dữ liệu
  • plain.pageviews: Xem được nội dung người dùng đang xem để hỗ trợ tốt hơn

Phát triển

  • plain.dev: Có thể khởi động môi trường phát triển cục bộ chỉ với một lệnh
  • plain.pytest: Có thể viết và chạy test bằng thư viện test Python phổ biến
  • plain.code: Có thể format và lint mã Python với thiết lập mặc định
  • plain.tunnel: Có thể đưa ứng dụng cục bộ ra Internet để tích hợp webhook

Frontend

  • plain.tailwind: Cung cấp tích hợp hạng nhất với framework CSS phổ biến
  • plain.htmx: Có thể xây dựng trải nghiệm người dùng hiện đại bằng các công cụ hiện có
  • plain.elements: Cung cấp một mô hình mới cho các component có thể tái sử dụng trong template của ứng dụng
  • plain.pages: Cung cấp file-based routing bằng HTML và Markdown
  • plain.esbuild: Cung cấp quy trình build tinh gọn cho việc biên dịch JavaScript
  • plain.vendor: Có thể tải xuống và tự host tài nguyên JavaScript và CSS mà không phụ thuộc vào CDN

1 bình luận

 
GN⁺ 2025-03-30
Ý kiến trên Hacker News
  • Có thể nhiều người không biết rằng trình theo dõi lỗi của Django Rest Framework đã chuyển sang chế độ riêng tư và đang tìm người bảo trì mới

    • Django rất tuyệt, nhưng cần một sự thay đổi kiểu như thời kỳ phục hưng của Angular
    • Muốn đóng góp nhưng phần lớn nỗ lực đều bị đình trệ ở cấp ủy ban
    • Fork có thể không phải là giải pháp, nhưng cần có hành động nào đó
    • Nếu cần tài trợ thì nhận quyên góp cũng là một cách
    • Cộng đồng nhà phát triển Django nhỏ và gắn kết chặt chẽ
    • Cần một cộng đồng coi trọng sự cởi mở với đóng góp và các mối quan hệ lâu dài
  • Có cảm xúc lẫn lộn về việc fork Django

    • Thử nghiệm bên ngoài dự án di sản là điều đáng giá, nhưng fork là một tuyên bố lớn
    • Có cảm giác như nỗ lực tập thể của Django đang bị phớt lờ
    • Lo ngại nó có thể đi theo hướng thương mại hoặc quá hẹp
    • Tình cảm dành cho Django ngày càng lớn hơn
  • Điểm mạnh của Django là ORM và hệ sinh thái/thành ngữ của nó

    • Khó hiểu tại sao lại phải phá vỡ tính tương thích bằng một bản fork
    • Muốn thấy tính năng quản trị tốt hơn, nhưng điều đó có thể giải quyết bằng template dự án Django
  • Django có một số nhược điểm

    • Worker và REST API không phải công dân hạng nhất
    • Hệ thống xác thực của Django cơ bản nhưng hữu ích
    • Những khó khăn trong Django có thể làm tăng độ phức tạp
  • Ngạc nhiên trước cảm xúc tiêu cực về Django

    • Django đang tụt lại phía sau so với Laravel và Rails
    • Hệ sinh thái bị phân mảnh và nhiều package đã cũ
    • Pipeline cho static file của Django không được tích hợp mặc định
    • Có vấn đề với mô hình người dùng và những hạn chế của template
    • Đã chuyển sang Rails và bắt đầu xây dựng ứng dụng web
  • Đã chuyển từ Django sang Supabase/Firebase

    • Có nhiều plugin và dễ tự host
    • Có cảm giác plugin của Django nên tốt hơn
  • Không thích việc cấu hình là các chuỗi tham chiếu đến class

    • Muốn có thể dễ dàng điều hướng khi tham chiếu đến class hoặc object
    • Về sau có thể giải quyết bằng plugin, nhưng LSP hỗ trợ miễn phí điều đó
  • Đã xem qua tài liệu của Plain

    • Mọi tính năng đều đã có trong Django hoặc trong các package được hỗ trợ tốt
    • Chính sách loại bỏ của Django giúp có thể duy trì dự án lâu dài
    • Ủy ban ngăn việc thương mại hóa dự án và đưa ra quyết định tốt nhất cho đa số người dùng
    • Django được tạo ra cho báo chí nhưng là một framework đa dụng
  • Không biết Plain có thành công hay không, nhưng hiểu lý do của bản fork

    • Ban lãnh đạo Django đã không thể đưa Django tiến lên