Hế lô tất cả mọi người, lại là mình đêy. Hôm nay mình sẽ mang đến cho mọi người một chủ đề có thể lói nà hơi cũ, nhưng không sao. đây sẽ là mở đầu cho series "Tìm hiểu về nodejs" để chia sẻ những gì mình tìm hiểu được.
NodeJS là gì?
NodeJS là một môi trường runtime chạy JavaScript đa nền tảng và có mã nguồn mở, được sử dụng để chạy các ứng dụng web bên ngoài trình duyệt của client. Nền tảng này được phát triển bởi Ryan Dahl vào năm 2009, được xem là một giải pháp hoàn hảo cho các ứng dụng sử dụng nhiều dữ liệu nhờ vào mô hình hướng sự kiện (event-driven) không đồng bộ.
Cụ thể hơn thì:
Phần Core bên dưới của Nodejs được viết hầu hết bằng C++ nên cho tốc độ xử lý và hiệu năng khá cao.
Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thời gian thực.
Nodejs áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần đổi mới công nghệ, hoặc tạo ra các dự án Startup nhanh nhất có thể.
Ưu và nhược điểm của NodeJS
Dưới đây là một số ưu và nhược điểm của NodeJS bạn cần biết:
Ưu điểm
IO hướng sự kiện không đồng bộ, cho phép xử lý nhiều yêu cầu đồng thời.
Sử dụng JavaScript – một ngôn ngữ lập trình dễ học.
Chia sẻ cùng code ở cả phía client và server.
NPM(Node Package Manager) và module Node đang ngày càng phát triển mạnh mẽ.
Cộng đồng hỗ trợ tích cực.
Cho phép stream các file có kích thước lớn.
Nhược điểm
Không có khả năng mở rộng, vì vậy không thể tận dụng lợi thế mô hình đa lõi trong các phần cứng cấp server hiện nay.
Khó thao tác với cơ sử dữ liệu quan hệ.
Mỗi callback sẽ đi kèm với rất nhiều callback lồng nhau khác.
Cần có kiến thức tốt về JavaScript.
Không phù hợp với các tác vụ đòi hỏi nhiều CPU.
Những ứng dụng nên viết bằng NodeJS
NodeJS được sử dụng để xây dựng rất nhiều loại ứng dụng khác nhau, trong đó phổ biến nhất gồm có:
Ứng dụng trò chuyện trong thời gian thực: Nhờ vào cấu trúc không đồng bộ đơn luồng, NodeJS rất thích hợp cho mục đích xử lý giao tiếp trong thời gian thực. Nền tảng này có thể dễ dàng mở rộng quy mô và thường dùng để tạo ra các chatbot. Bên cạnh đó, các tính năng liên quan đến ứng dụng trò chuyện như: chat nhiều người, thông báo đẩy,… cũng có thể dễ dàng được bổ sung nhờ NodeJS.
Internet of Things (IoT): Các ứng dụng IoT thường bao gồm nhiều bộ cảm biến phức tạp để gửi những phần dữ liệu nhỏ. NodeJS là một lựa chọn lý tưởng để xử lý các yêu cầu đồng thời này với tốc độ cực nhanh.
Truyền dữ liệu: Netflix là một trong số những công ty lớn trên thế giới chuyên sử dụng NodeJS cho mục đích truyền dữ liệu. Sở dĩ vì đây là một nền tảng nhẹ và cực nhanh, đồng thời còn cung cấp một API chuyên dùng để stream.
Các SPA (Single-page application) phức tạp: Trong SPA, toàn bộ ứng dụng được load vào trong một trang duy nhất, do đó sẽ có một số request được thực hiện trong nền. Vòng lặp sự kiện (event loop) của NodeJS cho phép xử lý các request theo hướng non-blocking.
Các ứng dụng REST dựa trên API: JavaScript được sử dụng trong cả frontend lẫn backend của trang. Do đó một server có thể dễ dàng giao tiếp với frontend qua REST API bằng NodeJS. Bên cạnh đó, NodeJS còn cung cấp nhiều package như Express.js hay Koa để việc xây dựng ứng dụng web trở nên dễ dàng hơn bao giờ hết.
Những kết luận sai lầm về NodeJS
Khi tìm hiểu NodeJS là gì, bạn đọc thường mắc phải một số suy nghĩ sai lầm tương đối phổ biến sau:
Đầu tiên, NodeJS là một nền tảng (platform) chứ không phải một web framework như một số người thường nhầm lẫn.
Thứ hai, NodeJS cũng không phải là một ngôn ngữ lập trình mà là một môi trường runtime dùng để chạy JavaScript bên ngoài trình duyệt. Vì vậy để học và sử dụng NodeJS thì người dùng cần có những kiến thức nhất định về một số giao thức, JavaScript hay kỹ thuật lập trình,…
Và cuối cùng, một câu hỏi phổ biến của người dùng là: NodeJS là backend hay frontend? Thật ra NodeJS có thể được sử dụng như một frontend lẫn backend nhờ vào các framework như Express.js hay Meteor.js( như bài trước mình đã giới thiệu về express + nodejs). Một số stack phổ biến như MERN sử dụng Express.js làm backend. Bên cạnh đó, nhiều thành phần cũng có thể được tái sử dụng giữa backend và frontend vô cùng tiện lợi.
Và cuối cùng là những lý do nên sử dụng NodeJS là gì?
NodeJS là một trong những nền tảng phổ biến nhất hiện nay cho mục đích phát triển ứng dụng mạng phía server. Vậy lý do nên sử dụng NodeJS là gì? Hãy cùng tìm hiểu những đặc điểm khiến NodeJS là lựa chọn hàng đầu cho các developer hiện nay:
Tốc độ cực nhanh: Được xây dựng dựa trên engine JavaScript V8 của Google Chrome, do đó các thư viện của nó có khả năng thực thi code chỉ rất nhanh.
NPM: Với hơn 50,000 package khác nhau, các developer có thể dễ dàng lựa chọn bất kỳ tính năng nào để xây dựng cho ứng dụng của mình.( Tất cả có ở đêy https://www.npmjs.com/)
Lập trình không đồng bộ: Mọi API của NodeJS đều có tính không đồng bộ (non-blocking), do đó một server dựa trên NodeJS không cần phải đợi API trả về dữ liệu.
Không có buffering: NodeJS giúp tiết kiệm thời gian xử lý file khi cần upload âm thanh hoặc video vì các ứng dụng này không bao giờ buffer dữ liệu mà chỉ xuất dữ liệu theo từng phần (chunk).
Đơn luồng: NodeJS sử dụng mô hình đơn luồng với vòng lặp sự kiện. Do đó các ứng dụng có thể xử lý số lượng request lớn hơn rất nhiều so với các server truyền thống như Apache HTTP Server.
Lời kết
Oàiii vậy là bài đầu tiên giới thiệu Nốt ji ét đã xong, bài trên mình có tham khảo và tìm hiểu ở https://vietnix.vn và https://trungquandev.com/ . =.= bài này chủ yếu là hàn lâm toàn lý thuyết thui nên mn đọc trước khi ngủ để dễ vào giấc nhé. Chúc mọi người 1 ngày zuize.