Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Laravel
Code

Giới thiệu về Lumen

by
Length:ShortLanguages:

Vietnamese (Tiếng Việt) translation by Giang Nam (you can also view the original English article)

Lumen là một framework PHP mới ra đời được phát triển bởi tác giả của framework Laravel, Taylor Otwell. Mặc dù vậy đừng quá lo lắng nhé -Lumen không có ý định thay thế Laravel. Trên thực tế, ý tưởng khi phát triển Lumen là dùng nó để hỗ trợ thêm cho các ứng dụng Laravel hiện tại hoặc sau này của bạn.

Taylor Otwell đã phát triển Lumen với những mục đích rất rõ ràng từ trước, cụ thể là microservices và các API. Một cách ngắn gọn, microservice là một dịch vụ nhỏ hơn, được tách ra dùng để giao tiếp, kết nối với các ứng dụng lớn, ví dụ như ứng dụng Laravel của chúng ta.

Trong bài viết này tôi muốn đi qua những điều khác biệt trong Lumen, khi nào chúng ta nên sử dụng Lumen, và cách sử dụng framework. Tôi cũng sẽ giải thích cách chúng ta có thể áp dụng framework vào ứng dụng và cách chuyển đổi sang ứng dụng Laravel. Sẽ không tốn quá nhiều dòng lệnh chỉnh sửa vì Lumen có khá nhiều điểm tương đồng như Laravel. Chúng ta hãy bắt đầu tìm hiểu nào.

Những điểm gì mới ở Lumen?

Đây là câu hỏi mà nhiều bạn sẽ thắc mắc. Trong thực tế, không phải là một toàn bộ đặc tính trong Lumen là được xây dựng mới. Lumen vẫn sử dụng hầu hết các thành phần của thư viện Illuminate tạo nên Laravel (chỉ một vài thành tố không dùng tới). Hãy nghĩ về nó như là phiên bản nhỏ của Laravel.

Mục tiêu là để tối đa hóa hiệu suất, và để làm được điều đó, một số điểm đã được thay đổi và cải thiện. Một số điểm thay đổi quan trọng như sau:

  1. Ít cấu hình hơn. Đa số Lumen đều đã được cấu hinh sẵn rồi. Mà thật ra bạn sẽ thấy không có đường dẫn thiết lập (config) nào khi cài đặt Lumen. Thay vào đó bạn sẽ sử dụng file có đuôi .env để cấu hình hầu hết các ứng dụng của bạn.
  2. Router khác nhau. Đây có lẽ là khác biệt lớn nhất và cũng là lý do tại sao nó có thể nhanh đến vậy. Lumen không sử dụng Symfony router như đàn anh Laravel của nó. Thay vào đó Lumen lại sử dụng FastRoute, một thư viện thực hiện route nhanh gọn hơn được phát triển bởi Nikita Popov.

Ở đây có một vài thứ mà bạn phải đánh đổi. FastRoute là một thực thi rất là nhanh, nhưng nó lại không đóng gói tính năng đầy đủ như Symfony. Nếu bạn muốn dùng sub-domain để cho routing thì bạn phải bám lấy cài đặt Laravel vì nó dùng Symfony router.

Một thứ khác đáng để đánh đổi đang đề cập ở đây là để điểu khiển trên các thiết lập của một vài thành phần thì bạn sẽ cần chỉnh lại file trong đường dẫn vendor/laravel/lumen-framework. Đa số các thiết lập đều có thể hoàn tất qua file .env, nhưng trong với một số ít thiết lập thì vẫn chưa được tùy chỉnh lại một cách trực tiếp.

Vậy tôi có nên chuyển sang Lumen ngay bây giờ không?

Câu trả lời sẽ là tùy, nhưng chắc là không đâu. Nếu bạn đang phát triển hay đã phát triển một ứng dụng trên Laravel (4 hoặc 5), thì bạn có lẽ sẽ không cần chuyển sang Lumen liền. Trong khi Lumen có đủ khả năng phát triển một ứng dụng web mạnh, nhưng nó lại phù hợp hơn với các API và những service nhỏ hơn.

Vậy khi nào tôi có thể dùng nó?

Tôi cũng không chắc là có thể nói rõ khi nào bạn có thể hay không thể dùng một framework nào đó. Nhưng tôi sẽ đưa ra một vài lời khuyên khi nào bạn cân nên nhắc việc sử dụng Lumen cho các dự án sắp tới của mình.

Ví dụ như bạn đang xây dựng một ứng dụng cửa hàng online lớn. Vậy bạn cứ thoải mái mà cài Laravel rồi bắt đầu công việc với một ứng dụng nguyên khối. Bây giờ thì không có vấn đề gì với việc tiếp cận này cả, bạn sẽ thấy là nó hoạt động rất trơn tru. Mà nếu vậy thì bạn cứ tiếp tục thôi. Nếu bạn cảm thấy choáng ngợp bởi sự phức tạp, hay cảm thấy có một chút gọi là vượt quá khả năng, thì bạn tốt nhất nên chia nhỏ nó thành những phần nhỏ hơn, dễ quản lý hơn.

Bạn sẽ dùng Lumen để tạo những ứng dụng riêng lẻ cho từng service  riêng biệt. Với cửa hàng của chúng ta thì ta có thể chia nhỏ thành hoá đơn, thông báo email, giao hàng và theo dõi thành những ứng dụng riêng biệt. Từng mỗi ứng dụng đó sẽ tự chứa cài đặt Lumen và mỗi ứng dụng sẽ chỉ cần làm những công việc đặc thù riêng.

Để ứng dụng chính của chúng ta giao tiếp được với những ứng dụng riêng lẻ đó thì chúng ta có thể dùng queue (hàng đợi) và những service giống như Amazon SQS. Chúng ta có thể dùng queue để dễ dàng sắp xếp công việc theo hàng chờ, và với mỗi service đó sẽ nghe theo những công việc cụ thể và xử lý chúng khi chúng được xếp vào hàng chờ. Lợi ích của việc tiếp cận này là mỗi service có thể được gia tăng và triển khai một cách độc lập với những service khác.

Bạn cũng có thể dùng Lumen để xây dựng một API, API này cũng có thể dùng để giao tiếp với ứng dụng chính bằng sự giúp đỡ của HTTP client như Guzzle. Việc tách biệt này cho phép bạn có thể gia tăng và tối ưu công việc mà không làm cản trở những API còn lại.

Được Rồi, Vậy Tôi Dùng Nó Như Thế Nào?

Đến đây thì bạn đã có chút khái niệm về việc dùng Lumen thế nào là đúng bước rồi.  Việc cài đặt Lumen cũng dễ như cài đặt Laravel vậy, bằng một câu lệnh đơn giản như composer create-project, hoặc là bạn có thể cài đặt lệnh lumen để tạo dự án mới. Ở đây chúng ta sẽ chỉ dùng Composer để tiến hành một cài đặt mới.

Trình soạn thảo sẽ tự động cài tất cả các phần có liên quan. Bạn có thể dùng Artisan để nhanh chóng đáp ứng cho ứng dụng để bạn có thể nhìn sơ qua một chút, không thì bạn có thể cài đặt Vitrual Host hay là Homestead cũng được. Dù bạn theo cách nào thì khi bạn nhập vào đường dẫn đến trình cài đặt Lumen, bạn sẽ thấy một trang chào thông báo là Lumen đã chuẩn bị xong.

Các cấu hình sẽ được chỉnh trong file .env, bạn có thể sửa tên file .env.example hay sao chép nội dung bên trong file này ra file mới tùy ý.

Những bootstrapping còn lại mà bạn nên để ý đều nằm trong file boostrap/app.php. Nếu bạn đang sử dụng cách thiết lập .env mà được đề cập ở trên thì tốt nhất là bạn nên uncomment đoạn Dotenv::load(__DIR__.’/../’);. Kéo xuống trong file có thể bạn sẽ thấy một vài dòng được comment mà bạn muốn uncomment. Như việc tải facades, Eloquent, một vài middlewares và, việc đăng kí những provider service khác.

Giờ thì bạn đã có một bản cài cho Lumen để sẵn sàng tạo nên những thứ tuyệt vời rồi đó.

Khoan! Giờ Tôi Cần Laravel Nữa!

Bạn có thể xây dựng một ứng dụng Lumen và mọi thứ sẽ ổn thôi, cho đến một ngày đẹp trời nào đó bạn nhận ra bạn cần một vài thứ mà chỉ có framework Laravel mới đáp ứng được. Đừng lo, việc nâng cấp cũng không khó khăn gì đâu. Bạn chỉ cần làm theo từng bước sau đây:

  1. Cài một bản Laravel 5 đầy đủ.
  2. Sao chép những thư mục trong ứng dụng (app)của bạn. Nhớ là bạn sẽ cần một vài thứ trong thư mục ứng dụng (app) L5, ví dụ như các provider.
  3. Sao chép qua những thiết lập của bạn theo từng file thích hợp trong thư mục config.
  4. Sao chép qua các bootstrapping đã được tùy chỉnh.
  5. Sửa lại một vài route. Vì Lumen dùng FastRoute nên bạn sẽ cần phải chỉnh lại một số route của bạn để nó có thể tương thích với Symfony.

Vậy là xong toàn bộ những thứ bạn cần copy để chuyển ứng dụng Lumen của bạn sang Laravel rồi đấy. Tất nhiên là nếu bạn làm ngược lại cũng được, vậy nên bạn có thể di chuyển từ Laravel về lại Lumen một cách dễ dàng nếu bạn cảm thấy bạn không cần mọi thứ trong framework full-stack này nữa.

Kết luận

Tóm lại là tôi chỉ muốn nhấn mạnh là tôi ủng hộ việc sử dụng Lumen chủ yếu cho các service nhỏ và các API, thứ mà nó vốn sinh ra để dùng. Không thể nói rằng bạn không thể xây dựng hoàn toàn một ứng dụng trên Lumen được vì bạn thật sự có thể. Nếu bạn muốn làm thì cứ tự nhiên. Không có luật lệ nào ghi là bạn không thể sử dụng nó cả. Cuối cùng thì người quyết định sẽ là bạn. Cân nhắc các lựa chọn, lên kế hoạch cho dự án, quyết định xem bạn cần gì, tham khảo ý kiến của nhóm, và rồi đưa ra quyết định cuối cùng.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.