- vừa được xem lúc

Laravel 12: Đi Sai Hướng Hay Đơn Giản Là Tiến Hóa?

0 0 2

Người đăng: Nam Phạm

Theo Viblo Asia

1. Giới thiệu

Laravel từng được coi là một trong những framework PHP tốt nhất nhờ tính đơn giản, thanh lịch và dễ sử dụng. Tuy nhiên, với phiên bản Laravel 12, một số người trong cộng đồng lập trình viên đã bày tỏ sự thất vọng và lo ngại rằng framework này đang dần đi xa khỏi nguyên tắc ban đầu của nó. Một bài viết trên Reddit đã liệt kê hàng loạt vấn đề mà họ cảm thấy không hài lòng, từ việc khai tử Jetstream, sự phức tạp của Livewire Starter Kit, cho đến việc thúc đẩy các công nghệ mới như Volt, Flux.

Trong bài viết này, chúng ta sẽ cùng phân tích chi tiết các điểm đáng chú ý, lý do khiến cộng đồng lo ngại, cũng như đánh giá liệu Laravel 12 có thực sự đi sai hướng hay chỉ đơn giản là đang tiến hóa để đáp ứng nhu cầu mới.


2. Laravel 12 và sự thay đổi trong Starter Kit

2.1. Jetstream bị khai tử và sự thay thế chưa hoàn thiện

Jetstream, một starter kit phổ biến của Laravel, từng được nhiều người đánh giá cao vì sự tiện lợi và tích hợp sẵn các tính năng cơ bản như xác thực người dùng, quản lý tài khoản và 2FA (xác thực hai yếu tố). Tuy nhiên, trong phiên bản Laravel 12, Jetstream đã bị khai tử mà không có bất kỳ lý do rõ ràng nào. Thay vào đó, Laravel giới thiệu các starter kit mới, nhưng chúng bị chỉ trích vì thiếu các tính năng cơ bản.

Vấn đề:

  • Thiếu 2FA: Starter kit mới không hỗ trợ xác thực hai yếu tố, buộc người dùng phải tích hợp thủ công.
  • Phụ thuộc vào WorkOS: Laravel đang khuyến khích sử dụng WorkOS – một dịch vụ bên thứ ba – để thay thế xác thực nội bộ, khiến người dùng lo ngại về vấn đề “lock-in” (phụ thuộc vào dịch vụ này).

Nhận định:

Việc chuyển từ giải pháp nội bộ sang phụ thuộc vào dịch vụ bên thứ ba như WorkOS khiến người dùng cảm thấy bị ràng buộc. Điều này đi ngược lại triết lý của Laravel là cung cấp công cụ mạnh mẽ nhưng linh hoạt để lập trình viên tùy chỉnh theo nhu cầu riêng.


2.2. Livewire Starter Kit và sự lộn xộn trong mã nguồn

Livewire Starter Kit trong Laravel 12 là một bước đột phá với sự tích hợp chặt chẽ giữa giao diện và logic. Tuy nhiên, điều này lại khiến nhiều lập trình viên cảm thấy khó chịu vì sự phức tạp và hỗn loạn trong mã nguồn.

Điểm nổi bật của Livewire Starter Kit:

  • Volt: Một công nghệ mới cho phép viết PHP, HTML, và JavaScript trong cùng một file.
  • Sử dụng Blade template: Kết hợp nhiều cú pháp như @include, x-component, wire:submit, <flux>, và <livewire:...>.

Vấn đề:

  1. Mã nguồn trở nên quá phức tạp:
    • Giao diện và logic xử lý (controller, database, session) bị trộn lẫn trong cùng một file.
    • Ví dụ: File profile.blade.php chứa cả class PHP, logic xử lý database, và giao diện HTML.
  2. Sự pha trộn nhiều công nghệ:
    • Blade, Livewire, Volt, Flux đều được sử dụng trong cùng một file, gây khó khăn cho việc đọc hiểu và bảo trì.
  3. Đi ngược lại nguyên tắc phân tách trách nhiệm (Separation of Concerns):
    • Trước đây, Laravel nổi tiếng với việc giữ giao diện và logic tách biệt rõ ràng. Nhưng giờ đây, việc đẩy logic vào file view làm mất đi sự thanh lịch vốn có.

Nhận định:

Sự pha trộn này không chỉ gây khó khăn cho người mới học Laravel mà còn khiến việc bảo trì codebase trở thành cơn ác mộng với các đội ngũ phát triển lớn.


3. Quá nhiều "magic" trong Laravel 12

Laravel luôn được biết đến với việc sử dụng các khái niệm “magic” – tức là tự động hóa một số tác vụ để giảm bớt sự phức tạp cho lập trình viên. Tuy nhiên, trong phiên bản Laravel 12, có ý kiến cho rằng framework này đã lạm dụng “magic” khiến mã nguồn trở nên khó đoán.

Ví dụ:

  • Blade Template: Sử dụng cú pháp như #[Layout('components.layouts.auth')] làm nhiều lập trình viên cảm thấy lạ lẫm và khó hiểu.
  • Livewire: Tự động đồng bộ hóa giữa client và server, nhưng lại gây khó khăn khi debug.

Vấn đề:

  • Code khó đoán: Những cú pháp “magic” này khiến việc debug và hiểu code cơ bản trở nên phức tạp hơn.
  • Không thân thiện với người mới: Lập trình viên mới dễ bị lạc lối khi không hiểu rõ cách các tính năng hoạt động.

Nhận định:

Dù các tính năng “magic” giúp giảm thời gian phát triển ban đầu, nhưng về lâu dài, chúng có thể gây ra những rào cản lớn trong việc bảo trì và mở rộng ứng dụng.


4. Flux và sự chuyển đổi từ Tailwind CSS

Laravel 12 đã giới thiệu Flux – một công nghệ UI mới thay thế cho Tailwind CSS thuần túy trong Starter Kit. Dù Flux có những ưu điểm riêng, nhưng việc chuyển đổi này đã gây tranh cãi.

Vấn đề:

  • Phụ thuộc vào Flux Pro: Nhiều người cho rằng đây là cách để đẩy người dùng đến với phiên bản trả phí của Caleb (người tạo Flux).
  • Người dùng quen thuộc với Tailwind CSS cảm thấy không thoải mái: Tailwind là một công cụ phổ biến và mạnh mẽ, việc thay thế nó bằng Flux có thể làm mất đi sự linh hoạt.

Nhận định:

Flux có thể mang lại những tính năng mới, nhưng việc ép buộc người dùng chuyển đổi từ Tailwind CSS có thể gây ra sự phản đối từ cộng đồng.


5. Laravel 12 có đang đi sai hướng?

Những thay đổi lớn trong Laravel 12:

  1. Starter Kit mới (Volt, Livewire) phức tạp hơn, khó tiếp cận.
  2. Phụ thuộc vào các dịch vụ bên thứ ba như WorkOS, Flux Pro.
  3. Quá nhiều “magic” khiến codebase khó hiểu và khó bảo trì.
  4. Sự pha trộn giữa PHP, HTML, JS trong cùng một file gây mất tổ chức.

Vấn đề cốt lõi:

  • Laravel đang dần mất đi sự thanh lịch và đơn giản mà cộng đồng yêu thích.
  • Framework này đang chuyển từ một công cụ dễ tiếp cận sang một hệ sinh thái khép kín, buộc người dùng phải thích nghi với các công nghệ mới.

6. Laravel 12: Tiến hóa hay bước lùi?

Laravel 12 không hẳn là một bước lùi, mà có thể được coi là một sự tiến hóa để đáp ứng nhu cầu của các dự án phức tạp hơn. Tuy nhiên, sự tiến hóa này có thể khiến framework mất đi tính thân thiện với người mới và những dự án nhỏ.

Những gì Laravel cần cải thiện:

  1. Đơn giản hóa Starter Kit: Giữ lại sự dễ tiếp cận cho người dùng mới.
  2. Giảm phụ thuộc vào dịch vụ bên thứ ba: Đảm bảo tính linh hoạt và tự do cho lập trình viên.
  3. Đảm bảo nguyên tắc phân tách trách nhiệm: Tách biệt rõ ràng giữa giao diện, logic, và dữ liệu.
  4. Hạn chế sự pha trộn công nghệ: Tránh việc sử dụng quá nhiều công cụ và cú pháp trong một file.

7. Kết luận

Laravel 12 mang đến nhiều tính năng mới, nhưng cũng đi kèm với những thay đổi gây tranh cãi. Dù framework này đang cố gắng tiến hóa để đáp ứng nhu cầu hiện đại, nhưng việc mất đi sự đơn giản và thanh lịch có thể khiến nó trở nên khó tiếp cận hơn với một bộ phận lớn lập trình viên.

Laravel có thể cần tìm cách cân bằng giữa việc đổi mới và giữ lại những giá trị cốt lõi đã làm nên thành công của nó. Điều quan trọng nhất là lắng nghe ý kiến từ cộng đồng để duy trì sự tin tưởng và yêu thích của người dùng.


Tài liệu tham khảo

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

1 1 557

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 542

- vừa được xem lúc

Sử dụng Swagger để xây dựng API documentation

Giới thiệu về Swagger. RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế Web services) để tiện cho việc quản lý các resource.

0 0 1.1k

- vừa được xem lúc

So sánh Interface và Abstract trong lập trình hướng đối tượng.

Tổng quan. Interface và Abstract class là 2 khái niệm cơ bản trong lập trình OOP.

0 0 71

- vừa được xem lúc

CURL và cách sử dụng trong PHP

Giới Thiệu. CURL là bộ thư viện được sử dụng để giúp thực hiện việc chuyển dữ liệu thông qua nhiều giao thức khác nhau (như HTTP, FPT...). Với giao thức HTTP, cURL hỗ trợ việc gửi dữ liệu sử dụng tất cả các phương thức hiện có như GET, POST, PUT, DELETE... cURL cũng hỗ trợ việc chuyền dữ liệu sử dụn

0 0 109

- vừa được xem lúc

Thêm dòng dữ liệu mới (MySQL) trong Laravel

Chào các bạn, Laravel hiện đang là hot trend trong "thế giới PHP". 1. Cấu hình cơ bản ban đầu. .

0 0 58