Một số công nghệ tổng quan đã tham gia cấu thành trang Viblo

Đã bao giờ bạn thử nghĩ xem trang viblo được sử dụng những công nghệ gì, liệu mình có thể tạo trang giống viblo hay không?

các bạn vào trang https://www.wappalyzer.com/ rồi kiểm tra URL để xem công nghệ cấu thành trang web.

Quan điểm cá nhân về các công nghệ mà mình biết

Mình sẽ nêu quan điểm cá nhân về một số hiệu năng, lợi ích gì khi viblo sử dụng chúng. Trong khuôn khổ bài viết này mình chỉ nói đến Nuxt.Js, Laravel, Ruby and rails

Nuxt.JS vs Vuejs được hỗ trợ sẵn ở trong Laravel ?

Tương tự như Next.js cho React thì Nuxt sinh ra dành cho Vuejs, các bạn có thắc mắc tại sao có Laravel hỗ trợ Vuejs rồi sao không dùng luôn mà phải dùng framework Nuxt làm chi cho mệt:

  • Đơn giản mà nói, thì để phân chia công việc và hạn chế chung đụng nhau tốt hơn, team sẽ chia các nhóm là FrontendBackend. Các API được tạo ra từ Laravel hay bên Ruby and rails sẽ được tách biệt độc lập. Bạn nào dùng mô hình MVC rồi như bên Laravel sẽ biết nhiều đoạn mã php nhúng bên trong resource/views/....blade.php liên kết chặt chẽ. Điều này gây ảnh hưởng không nhỏ cho việc teamwork nhiều người và hơi khó chia việc.

  • Đặc điểm nữa khi chúng ta dùng Vuejs hỗ trợ sẵn trong Laravel là dạng trang Single Page Application (SPA), nhược điểm lớn nhất của dạng trang như thế này là khi có rất nhiều bài viết trên Viblo, đòi hỏi máy trình duyệt chúng ta load toàn bộ nội dung như vậy dẫn đến hiệu quả SEO hay trải nghiệm người dùng không được tốt.

  • Như chúng ta nhìn sơ qua cũng biết có 3 máy chủ server cung cấp API là Laravel, Ruby and railsExpress của NodeJS, đối với ví dụ Laravel việc xác thực người dùng thì là Session (phiên làm việc) phụ thuộc chặt chẽ giống như chủ tịch mà nhân viên cần phải biết mặt mũi ra sao ấy thì mới biết đó là chủ tịch. Việc nhiều máy chủ như thế này cũng như nhiều nhân viên thuộc công ty con khác nhau xác nhận chủ tịch mà các nhân viên cần phải biết thì điều đó cũng khó khăn, các cơ chế bảo mật không được đảm bảo. Nâng cấp hệ thống cực kì khó.

  • Còn đối với những hệ thống của Viblo mình đoán có cách xác thực người dùng khác là sử dụng JSON Web Token (jwt) tương ứng với trường hợp chủ tịch cần có thẻ hay chứng mình thư gì đó đưa cho nhân viên kiểm tra mới gọi là chủ tịch được chứ bình thường không có gì đó xác nhận thì tự do vào công ty kiểu: giả vờ làm chủ tịch và cái kết. Các bạn có thể tham khảo bài viết dưới đây khá đầy đủ về JWT và Sessions.

  • Tại sao thì là Nuxt thì đơn giản nó hỗ trợ Server Side Rendering (SSR), mỗi lần chúng ta vào trang gì đó thì chúng ta cần 1 khoảng thời gian load nội dung trang đó mà vẫn đảm bảo hiệu suất.

  • Còn tại sao là Vuejs mà không dùng nguyên Jquery cho lành thì việc quản lý component nhiều thành phần trên cùng một trang web là điều khó khăn khi tăng mở rộng nâng cấp sản phẩm.

Kết luận

Dự án của trang viblo là private, mình mò mẫm học hỏi công nghệ cũng chỉ là mò thôi, công sức của họ làm ra cũng có gì đó đáng tự hào. Việc rút ra được kinh nghiệm xây dựng hệ thống làm sao cho hợp lý mới là quan trọng. Giả sử chúng ta xây trang Viblo này bằng SPA Vuejs thì đến nước đập đi xây lại không biết chừng ✌️