NodeJS là một mã nguồn được xây dựng dựa trên nền tảng Javascript V8 Engine, nó được sử dụng để xây dựng các ứng dụng web như các trang video clip, các forum và đặc biệt là trang mạng xã hội phạm vi hẹp. NodeJS là một mã nguồn mở được sử dụng rộng bởi hàng ngàn lập trình viên trên toàn thế giới. NodeJS có thể chạy trên nhiều nền tảng hệ điều hành khác nhau từ WIndow cho tới Linux, OS X nên đó cũng là một lợi thế. NodeJS cung cấp các thư viện phong phú ở dạng Javascript Module khác nhau giúp đơn giản hóa việc lập trình và giảm thời gian ở mức thấp nhất.
Ý tưởng chính của Node js là sử dụng non-blocking, hướng sự vào ra dữ liệu thông qua các tác vụ thời gian thực một cách nhanh chóng. Bởi vì, Node js có khả năng mở rộng nhanh chóng, khả năng xử lý một số lượng lớn các kết nối đồng thời bằng thông lượng cao. Nếu như các ứng dụng web truyền thống, các request tạo ra một luồng xử lý yêu cầu mới và chiếm RAM của hệ thống thì việc tài nguyên của hệ thống sẽ được sử dụng không hiệu quả. Chính vì lẽ đó giải pháp mà Node js đưa ra là sử dụng luồng đơn (Single-Threaded), kết hợp với non-blocking I/O để thực thi các request, cho phép hỗ trợ hàng chục ngàn kết nối đồng thời. 
Khi thảo luận về Node js thì một điều chắc chắn không nên bỏ qua là xây dựng package quản lý sử dụng các cộng cụ NPM mà mặc định với mọi cài đặt Node js. Ý tưởng của mô-đun NPM là khá tương tự như Ruby-Gems: một tập hợp các hàm có sẵn có thể sử dụng được, thành phần tái sử dụng, tập hợp các cài đặt dễ dàng thông qua kho lưu trữ trực tuyến với các phiên bản quản lý khác nhau.
Danh sách các mô-đun có thể tìm trên web NPM package hoặc có thể truy cập bằng cách sử dụng công cụ NPM CLI sẽ tự động cài đặt với Node js.
Một số các module NPM phổ biến nhất hiện nay là:
Chat là thời gian thực, ứng dụng đa người dùng điển hình nhất, thông qua nhiều giao thức độc quyền và mở chạy trên các cổng không chuẩn, với khả năng thực hiện tất cả mọi thứ ngày hôm nay trong Node.js với WebSockets chạy qua cổng chuẩn 80.
Các ứng dụng chat thực sự là ví dụ điển hình nhất của Node.js: đó là một ứng dụng trao đổi thông tin nhanh chóng, lưu lượng truy cập cao, dữ liệu chuyên sâu (nhưng / xử lý tính toán thấp) ứng dụng chạy trên các thiết bị phân phối. Nó cũng là một trường hợp tuyệt vời cho học tập, vì nó đơn giản, nhưng nó bao gồm hầu hết các mô hình mà bạn từng được sử dụng trong một ứng dụng Node.js điển hình.
Trong ví dụ đơn giản nhất, chúng tôi có một phòng chat đơn trên trang web của chúng tôi, nơi mọi người đến và có thể trao đổi một hoặc nhiều tin nhắn (trên thực tế tất cả). Ví dụ, có ba người trên tất cả các trang web kết nối với bảng tin của chúng tôi.
Trên phía máy chủ, chúng ta có một ứng dụng đơn giản Express.js mà thực hiện hai điều:
Cùng phân tích quá trình khi một client gửi một message thì diễn ra các xử lý:
Đây là ví dụ đơn giản nhất. Đối với một giải pháp mạnh mẽ hơn, bạn có thể sử dụng một bộ nhớ cache đơn giản dựa trên các lưu trữ Redis. Hoặc trong một giải pháp tiên tiến hơn, một hàng đợi các message để xử lý việc định tuyến các message đến các client và một cơ chế phân phối mạnh mẽ hơn nên có thể trang trải cho các khoản lỗ kết nối tạm thời hoặc tin nhắn lưu trữ cho khách hàng đã đăng ký khi họ offline. Nhưng bất kể những cải tiến mà bạn thực hiện, Node.js sẽ vẫn được hoạt động theo các nguyên tắc cơ bản: phản ứng với các sự kiện, xử lý nhiều kết nối đồng thời, và duy trì tính lưu động trong trải nghiệm người dùng.Tổng hợp từ nhiều nguồn
Link nội dung: https://www.sachhayonline.com/node-js-la-gi-a56986.html