Sau khi đọc thảo luận này, mình nhận thấy có vẻ không riêng gì chủ topic mà có cả một số lượng N người có nick ở Dạy Nhậu Học vẫn chưa nắm (hoặc nắm nhưng không chú tâm => lơ mơ, mơ màng) căn bản về thế giới web, tức WWW và HTML. Xin vắn tắt lại như sau:
- WWW được thiết kế theo mô hình client - server
- Giao thức HTTP/ HTTPS đều là stateless protocol
- Trang web khi được người dùng xem, bản chất nó được trình duyệt web nạp về, hoạt động phía client. Vì là stateless nên khi trang web nạp về, giữa trình duyệt và server dứt điểm một phiên.
Như vậy, kết nối frontend với database là muốn nói ý gì, diễn giải làm sao nghe thử xem? Có biết thuở ban đầu HTML hoàn toàn là tĩnh, và chỉ có một chiều từ trên server chảy về client mà người dùng không gửi thông tin lên đó? Hay là do thiếu kiến thức về WWW?
Ở đây ta phải hiểu đúng nghĩa của frontend tức là phía client (client-side). Mô hình client - server thì client phải gửi yêu cầu phía server cung cấp thêm những thứ mà nó cần. Hoặc lập trình web nói chung (không phân biệt frontend, backend) người lập trình tuỳ chọn để cho backend (tức server-side) xử lý, hoặc bắt buộc phải dùng server-side xử lý do không thể làm cách nào khác ở client-side. Chỉ làm được ở client những cái vốn thuộc về client. Không có chuyện phích cắm điện ở nhà mà đòi cắm trực tiếp vào… turbin của trạm thuỷ điện
Tất nhiên là nếu bạn không dùng trình duyệt web, không dùng giao thức HTTP/HTTPS thì bạn vẫn có thể viết một phần mềm client để kết nối tới một server. Cách đó giờ vẫn tồn tại, vẫn có nhiều phần mềm hoạt động theo cách đó. Nhưng nó lại không phải là đề tài front-end, back-end mà chủ topic đang muốn thảo luận ở đây. Trong thực tế ta thấy phần mềm gửi email như Outlook, FTP như Cyberduck, SSH client, MySQL Workbench, các phần mềm cài ở máy tính người chơi để tính tiền ở tiệm NET, Games … là những phần mềm mà client kết nối trực tiếp đến server (nhưng không ai gọi back-end, front-end gì cả đâu nhé)
Những trình duyệt hiện đại đã không còn là trình duyệt như ngày xưa nữa, giờ nó đã đóng vai trò gần như một hệ điều hành (nhất là trên máy ChromeBook), kèm với HTML5 thì giờ nó có cái gần như database nằm ở phía client (thực ra đã có từ thời có cookie, nhưng vì cookie bé quá nên dùng nó làm database thì… điên đến nơi) như HTML Web Storage (kèm hệ phái của nó localStorage and sessionStorage), IndexedDB.
Nhưng kích thước của cái database ở phía client này cũng nhỏ (IndexedDB lớn nhưng khá rắc rối và cũng chưa phổ biến lắm), chưa thể/ không thể thay thế vai trò database ở server-side (tức backend) được, hoặc có những cái vốn cần nằm ở server, để ở client sẽ không đúng bản chất mạng máy tính nữa.
Thực tế có nhiều ứng dụng web, về bản chất nó cần phải cất giữ/ lưu lại dữ liệu ở phía người sở hữu trang web. Vì thế nên, cho dù có thể sử dụng được database nằm ở client nhưng chỉ tạm thời, không phải là cái mục đích để dùng “database” Web Storage với giới hạn chỉ đâu đó chục MB hoặc có nhồi nhét vào IndexDB vì nó đủ lớn.
Chủ topic nếu lại cứ khăng khăng database là ở frontend thì xin mời gia nhập thế giới của Service Workers, PWA - là những thử nghiệm vẫn còn khá mới mẻ trong làng web.
Nếu bạn định làm trang web tự nó chạy được mà không cần trình duyệt mà bạn đóng gói trang web như một phần mềm hoặc app, có thể chạy trên máy mà không viện đến trình duyệt web, cứ vô tư kết nối front-end với back-end, điều đó là trong tầm tay. Còn nếu làm web mà người dùng cần đến trình duyệt web, ở thời điểm này là chưa thể từ trang web kết nối thẳng đến database của bạn, trừ khi bạn cho rằng các Web API cũng là database.
Do đó, người ta trả lời như kia là đúng, vì họ hiểu bản chất vấn đề. Còn cái ông hỏi thì chả biết mình hỏi gì, bị cười nhạo là không oan tí nào.