CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. Công nghệ và công cụ quản lý website 1. Back-end – Laravel Framework Laravel được phát triển bởi Taylor Otwell với phiên bản cho ra mắt đầu tiên là vào tháng 6 năm 2011. Đây là một framework có mã nguồn mở miễn phí cùng với cú pháp mạch lạc, rõ ràng.
Laravel ra đời nhằm mục đích hỗ trợ cho các ứng dụng web, lấy cốt lõi dựa theo mô hình MVC (Model – View – Controller).1 Laravel framework Mặc dù xuất phát điểm ra đời khá muộn hơn so với nhiều đối thủ, nhưng Laravel đã chứng minh mình là một ứng viên “nặng ký” khi tạo nên “cơn sốt” lớn bởi được đánh giá cao trên mọi phương diện và được sử dụng rộng rãi nhất hiện nay. Laravel sở hữu rất nhiều mặt ưu điểm để thu hút các nhà lập trình chắc chắn không thể bỏ qua như: - Việc dùng Laravel sẽ hỗ trợ các lập trình viên có thể tiếp cận đến các tính năng mới nhất mà PHP cung cấp - Nguồn tài nguyên tài liệu sẵn có vô cùng đa dạng và phong phú, thân thiện với các lập trình viên - Nguồn tài nguyên tài liệu sẵn có vô cùng đa dạng và phong phú, thân thiện với các lập trình viên SVTH: Trần Văn Khánh - 1911505310229 GVHN: Th.S Phạm Thị Trà My 5 Xây dựng website cung cấp dịch vụ gia sư và khoá học - Dễ sử dụng: Cho dù kiến thức PHP của bạn có hạn hẹp đi chăng nữa thì bạn vẫn có thể phát triển website một cách nhanh chóng - Di chuyển Database dễ dàng: Laravel cho phép bạn duy trì cấu trúc cơ sở dữ liệu mà không cần phải tạo lại. Thay vì sử dụng SQL, bạn có thể dùng PHP để kiểm soát dữ liệu. Bên cạnh đó, bạ cũng có thể khôi phục được những thay đổi gần nhất của Database.
- Tính năng bảo mật cao: Laravel sử dụng PDO nhằm để chống lại sự tấn công SQL Injection, cộng với field token ẩn để chống lại tấn công kiểu CSRF. Điều này sẽ giúp cho người dùng có thể hoàn toàn tập trung vào việc phát triển sản phẩm. Mặc dù sở hữu nhiều ưu điểm vượt trội nhưng Laravel cũng khó tránh khỏi một số khuyết điểm như: - Thiếu sự liên kết giữa các phiên bản làm cho ứng dụng dễ bị phá vỡ hoặc gián đoạn khi cập nhật code. - Dung lượng nặng dẫn đến quá trình tải trang trở nên chậm chạp.
- Không sở hữu tính năng thanh toán. Front-end – Vue.js là một framework Javascript tiên tiến trong xây dựng giao diện người dùng, không giống như các framework khác, Vue được xây dựng từ những dòng code cơ bản nhất nhằm tối ưu tốc độ. Thư viện của Vue chỉ tập trung vào lớp hiển thị, rất đơn giản để tiếp cận và dễ dàng tích hợp vào các hệ thống khác. Vue cũng có khả năng cung cấp các ứng dụng web đơn trang Single Page Application (SPA) cho phép kết hợp với nhiều các công cụ hiện đại, như Laravel chẳng hạn.js có các đặc điểm chính sau: - Lightweight (Nhẹ): Vue.js có kích thước nhỏ và tập trung vào việc cung cấp các tính năng cơ bản để phát triển giao diện người dùng.
Điều này giúp giảm tải và tối ưu hóa hiệu suất ứng dụng. - Component-based (Dựa trên thành phần): Vue.js sử dụng kiến trúc dựa trên thành phần, cho phép tạo ra các thành phần độc lập và tái sử dụng. Các thành phần Vue.js có thể được kết hợp lại để tạo thành giao diện người dùng phức tạp và linh hoạt. SVTH: Trần Văn Khánh - 1911505310229 GVHN: Th.S Phạm Thị Trà My 6 Xây dựng website cung cấp dịch vụ gia sư và khoá học - Reactive (Phản ứng): Vue.js sử dụng một hệ thống phản ứng (reactivity system) để theo dõi và tự động cập nhật các thay đổi trong dữ liệu.
Khi dữ liệu thay đổi, giao diện người dùng sẽ được cập nhật tự động mà không cần phải tương tác trực tiếp với DOM. - Virtual DOM (DOM ảo): Vue.js sử dụng Virtual DOM để tối ưu hóa hiệu suất của ứng dụng. Thay vì làm việc trực tiếp với DOM thật, Vue.js tạo ra một bản sao của DOM gọi là Virtual DOM. Khi có thay đổi trong dữ liệu, Vue.js so sánh và cập nhật chỉ các phần tử DOM cần thiết, giúp tăng tốc quá trình render.
- Hỗ trợ mạnh mẽ: Vue.js cung cấp nhiều tính năng hữu ích như hệ thống routing (định tuyến), quản lý trạng thái ứng dụng, xử lý sự kiện, và tích hợp dễ dàng với các thư viện hoặc công cụ bên thứ ba. - Dễ học và sử dụng: Vue.js có cú pháp đơn giản và dễ hiểu, giúp người dùng dễ dàng học và sử dụng framework mà không cần có kiến thức sâu về JavaScript.js đã trở thành một trong những framework phát triển giao diện người dùng phổ biến nhất trong cộng đồng phát triển web. Sự kết hợp giữa tính nhẹ nhàng, hiệu suất cao và khả năng linh hoạt của Vue.js đã thu hút nhiều lập trình viên và công ty lựa chọn để xây dựng các ứng dụng web mạnh mẽ và tương tác. Cơ sở dữ liệu – MySQL MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở miễn phí nằm trong nhóm LAMP (Linux – Apache – MySQL – PHP) Microsoft (Windows, IIS, SQL Server, ASP/ASP.NET), vì MySQL được tích hợp sử dụng chung với apache, PHP nên nó phổ biến nhất thế giới.
Vì MySQL ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh (vì được nhiều người hỗ trợ mã nguồn mở mà) và MySQL cũng có cùng một cách truy xuất và mã lệnh tương tự với ngôn ngữ SQL chính vì thế nên MySQL được sử dụng và hỗ trợ của những lập trình viên yêu thích mã nguồn mở. Một số đặc điểm của MySQL: - MySQL là một phần mềm quản trị CSDL dạng server-based (gần tương đương với SQL Server của Microsoft). SVTH: Trần Văn Khánh - 1911505310229 GVHN: Th.S Phạm Thị Trà My 7 Xây dựng website cung cấp dịch vụ gia sư và khoá học - MySQL quản lý dữ liệu thông qua các CSDL, mỗi CSDL có thể có nhiều bảng quan hệ chứa dữ liệu. - MySQL có cơ chế phân quyền người sử dụng riêng, mỗi người dùng có thể được quản lý một hoặc nhiều CSDL khác nhau, mỗi người dùng có một tên truy cập (user name) và mật khẩu tương ứng để truy xuất đến CSDL.
- Khi ta truy vấn tới CSDL MySQL, ta phải cung cấp tên truy cập và mật khẩu của tài khỏan có quyền sử dụng CSDL đó. Nếu không, chúng ta sẽ không làm được gì cả giống như quyền chứng thực người dung trong SQL Server vậy. PostgreSQL là một lựa chọn phổ biến cho các dự án phát triển phần mềm và ứng dụng web do tính mở rộng, độ tin cậy và hiệu suất. Lưu trữ file – Cloudiary Cloudinary là một dịch vụ quản lý và tối ưu hóa hình ảnh, video và nội dung đa phương tiện khác trong ứng dụng web và di động.
Cloudinary cung cấp các công cụ và tính năng mạnh mẽ để xử lý, lưu trữ, quản lý và phân phối các tệp đa phương tiện trên đám mây. Dưới đây là một số điểm nổi bật về Cloudinary: - Quản lý hình ảnh và video: Cloudinary cho phép tải lên, lưu trữ và quản lý hàng triệu hình ảnh và video trong ứng dụng. Cung cấp các API và SDK dễ sử dụng để thao tác với các tệp đa phương tiện này, bao gồm cắt, chuyển đổi định dạng, điều chỉnh kích thước, tạo ảnh xem trước và xử lý nhanh chóng các yêu cầu tải lên và tải xuống; - Tối ưu hóa và giao hàng nhanh chóng: Cloudinary tự động tối ưu hóa các tệp đa phương tiện để đảm bảo hiệu suất tải trang nhanh nhất có thể. Sử dụng các thuật toán nén và tối ưu hóa hình ảnh để giảm kích thước tệp mà không làm mất chất lượng.
Ngoài ra, Cloudinary cung cấp CDN (Content Delivery Network) để phân phối tệp đa phương tiện trên toàn cầu và giảm thiểu thời gian tải trang; - Quản lý đám mây: Cloudinary lưu trữ tệp đa phương tiện trên đám mây, loại bỏ nhu cầu tự xây dựng và duy trì hệ thống lưu trữ riêng. Giúp giảm bớt công sức và chi phí cho việc quản lý cơ sở hạ tầng và mở rộng lưu trữ theo nhu cầu; SVTH: Trần Văn Khánh - 1911505310229 GVHN: Th.S Phạm Thị Trà My 8 Xây dựng website cung cấp dịch vụ gia sư và khoá học - Đa nền tảng: Cloudinary hỗ trợ đa nền tảng, cho phép tích hợp dễ dàng vào các ứng dụng web và di động. Cloudinary cung cấp các thư viện và SDK cho các ngôn ngữ lập trình phổ biến như JavaScript, Java, Python, Ruby, PHP và nhiều ngôn ngữ khác; - Bảo mật và quyền riêng tư: Cloudinary cung cấp các tính năng bảo mật mạnh mẽ để bảo vệ dữ liệu đa phương tiện. Kết nối real time – Firebase Firebase Realtime Database là một dịch vụ cơ sở dữ liệu thời gian thực của Firebase, một nền tảng phát triển ứng dụng di động và web do Google phát triển.
Firebase Realtime Database cung cấp một cơ sở dữ liệu NoSQL linh hoạt, mở rộng và đồng bộ thời gian thực cho ứng dụng. Dưới đây là một số điểm nổi bật về Firebase Realtime Database: - Thời gian thực: Firebase Realtime Database cho phép lưu trữ và đồng bộ dữ liệu trong thời gian thực. Bất kỳ thay đổi nào đối với dữ liệu sẽ được tức thì cập nhật và đồng bộ trên tất cả các thiết bị và người dùng đang sử dụng ứng dụng; - Cấu trúc dữ liệu linh hoạt: Firebase Realtime Database sử dụng mô hình dữ liệu JSON để lưu trữ và truy vấn dữ liệu. Cho phép tổ chức dữ liệu theo các nút và thuộc tính, tạo thành một cấu trúc phân cấp.
Giúp dễ dàng tổ chức và truy xuất dữ liệu theo nhu cầu của ứng dụng; - Đồng bộ hóa dữ liệu: Firebase Realtime Database tự động đồng bộ dữ liệu giữa các thiết bị và người dùng. Đảm bảo rằng mọi thay đổi dữ liệu đều được cập nhật ngay lập tức trên mọi thiết bị kết nối; - Truy vấn linh hoạt: Firebase Realtime Database cung cấp các phương thức truy vấn mạnh mẽ để truy xuất và lọc dữ liệu theo các tiêu chí nhất định. Cho phép truy vấn dữ liệu theo cấu trúc, giá trị hoặc kết hợp các tiêu chí để tìm kiếm thông tin cần thiết; - Đơn giản và dễ sử dụng: Firebase Realtime Database được thiết kế để đơn giản và dễ sử dụng cho các nhà phát triển. Cung cấp các API và SDK cho nhiều ngôn ngữ lập trình, bao gồm JavaScript, iOS, Android và nhiều ngôn ngữ khác.
Giúp nhanh chóng tích hợp và tương tác với cơ sở dữ liệu trong ứng dụng của mình; SVTH: Trần Văn Khánh - 1911505310229 GVHN: Th.