Đọc cái chủ đề này thì thấy ông chủ topic tick vào nút Solution câu trả lời không giải đáp trực tiếp vấn đề của anh ta. Như vậy, có thể hiểu rẳng có khả năng là những người tham gia vào thảo luận ở đây đang tham gia vào một cuộc… ông nói gà bà nói vịt do không chắc đang thảo luận là gì, mà cái này lỗi là cách đặt vấn đề của chủ đề mơ hồ, không phải lỗi người tham gia. Mình cũng góp phần vào blah blah gà vịt này cho vui vậy:
Hiện nay JavaScript và những người anh em/ họ hàng hệ phái của nó như TypeScript, CoffeeScript, Nodejs, các framework/ libarary như Emberjs chạy trên Dạy Nhau Học này, Reactjs, Angular, Vue, Jquery, Axios, Underscore, Express, Nuxt,… liệt kê không xuể luôn và bọn này có cái chạy ở client, có cái ở server, có cái dường như là có cả 2 bên. Và rồi vì đều cần dùng đến các thứ như NPM, Yarn, GULP,… liên quan mật thiết với Nodejs. Lại thêm nhiều “code sĩ” ngày nay vội vàng bắt tay vào học lập trình web nhưng chưa từng chịu “nằm xem hoạt hình” về mấy thứ dạng “How it works…” như một đứa trẻ để có cái nhìn tinh khôi, đẹp đẽ về thế giới này, sẽ làm cho vấn đề rắc rối thêm lên.
Rồi lại thêm sự “nấu lẩu” vô nữa giữa các ngôn ngữ lập trình, bộ công cụ phụ trợ nên có những cái mà “người cũ, già nghề” nếu ít cập nhật kiến thức thì khó có thể hiểu được thế quái nào giờ đây có những trang web dường như không có server-side script mà vẫn có thể tương tác nội dung động được, các chức năng đăng nhập, điền form đều ngọt ngào. Điều này trước kia những ai từng lập trình dính dáng đến Flash, Silverlight, ActiveX còn có thể hình dung, còn chưa đụng mấy thứ này là… ngáo Husky ngay và luôn.
Lại thêm có những quái kiệt chơi rất đau đầu nữa đó là cái JavaScript ở client còn có khả năng là trình biên dịch để tải code từ file text từ nguồn nào đó về và biên dịch nó chạy được trên trình duyệt cứ như trình duyệt là VMWare hay Hyper-V không bằng… khiến cho client, server rối beng tùng phèo cả lên, ranh giới mong manh, trộn lẫn vào nhau hoặc đôi lúc chỉ là đặt tên đọc lên nghe lẫn lộn, chứ thực sự nếu phải ôm full-stack và vẽ sơ đồ lên để soi thì thấy “à há, khỉ thật, chỉ là có quá nhiều… nhãn hiệu kêu loảng xoảng mà thôi”.
Cho nên, giờ thì xin đầu voi đuôi chuột một chút: chủ topic không cần đến Nextjs nếu back-end (nên dùng server-side scripting language cho đúng bản chất hơn, back-end là từ của marketing hơn là kỹ thuật) không viết bằng JS (hoặc TypeScript, CoffeeScript, Dart, ClojureScript…), không sử dụng Nodejs (hoặc 1 cái tương đương ).
Trong thực tế theo mình biết một cách hồ đồ là có những đơn vị mà sản phẩm website của họ được tạo nên bởi team lắp ghép lộn xộn, làm việc không ăn ý nhau. Bên phía lập trình front-end thì cũng chỉ biết là kết nối tới API để lấy/ cất các file JSON mà họ không có kiến thức về web thuở ban đầu. Còn bên back-end cũng thế, họ không tự tin rằng với ngôn ngữ mà họ đang viết code họ dễ dàng tạo ra Web API cho bên kia mà không cần dính dáng gì đến Nodejs và hoặc 1 framework hay thư viện JavaScript nào hết.
Đây chính là vấn đề mà chủ topic bị hai cái nhóm đó làm cho điên cuồng hoặc tự him đang phân mảnh vì mơ hồ không rõ, cứ băn khoăn suy nghĩ rằng phải có Nextjs thì mới thuận tiện cho bên Front-end mà không hiểu rằng cần quái gì cái này. Nếu là mình trong trường hợp này, mình mời 2 ông đứng đầu 2 team đó ra và yêu cầu đổi vai trò cho nhau vài ngày là ra vấn đề ngay (điều ông back-end nhảy qua cầm team front-end & ngược lại).
Anh em nào ở đây mà từng phải ôm full-stack sẽ dễ dàng nhìn thấy nếu dùng thêm Nextjs khi server-side không dùng JavaScript/ hoặc Nodejs. Lúc này đây, sẽ xuất hiện 2 server script interpreter/ complier trong 1 web server (chưa kể thêm đống database server, cache server) quả là rách việc. Cần quái gì ông nội JavaScript server-side ở đây chứ? Chỉ là trả về mấy cái file JSON thôi mà? Nếu bọn kia cứ thích là server-side rendering gì đó thì thay vì print ra JSON, ta print ra HTML, cũng bấy nhiêu chuyện. Có phải điên không nếu giờ đây lại phải bê thêm cái Node vào? Trong khi ta đang viết Perl, C#, PHP, Python, Java, Go, Ruby thì còn đèo bòng thằng Node lên nữa, điên quá điên, mất năng lượng vô ích. Ta có đủ tự tin để cấu hình nó không? Không là cái chắc! Dẹp nó đi là vừa, dành thời gian đi… đấm vào mặt mấy thằng Reactjs gì đó gà mờ phát cho sướng tay
(Xin lưu ý, ở đây chỉ giới hạn lập trình web thôi nhé, bởi JS hiện nay còn áp dụng vào thứ khác không phải lập trình web nữa, đi xa đến vậy thì nguy cơ là vỡ chủ đề).